Суббота, 23.06.2018, 06:55
Приветствую Вас Гость
Меню сайта


Копилка для дальнейшего развития ресурса.
 
Форма входа
Интересное
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Программирование на Delphi.

Программирование

Главная » FAQ » Интерфейс

 
Свойство Style у TListBox установите на lbOwnerDrawFixed. Если не изменить свойство Style, то событие OnDrawItem никогда не вызовется. Теперь поместите следующий код в обработчик события OnDrawItem Вашего TListBox:
 
procedure TForm1.ListBox1DrawItem
  (Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
    myColor: TColor;
    myBrush: TBrush;     
begin
    myBrush := TBrush.Create; 
    with (Control as TListBox).Canvas do
     begin
      if not Odd(Index) then
      myColor := clSilver
    else
      myColor := clYellow;
      myBrush.Style := bsSolid;
      myBrush.Color := myColor;
      Windows.FillRect(handle, Rect, myBrush.Handle); 
      Brush.Style := bsClear; 
      TextOut(Rect.Left, Rect.Top, 
      (Control as TListBox).Items[Index]); 
    MyBrush.Free;
  end;
end;


 
Это может быть ни только панель, но и любой другой компонен. В обработчике событий OnMouseDown пишем:
 
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y:Integer);
begin
ReleaseCapture
Sendmessage(Form1.Handle,wm_syscommand,$F012,0);
end;


// Добавьте в описание формы:

type
  TMain = class(TForm)
....
protected
  procedure WMGetSysCommand( var Message: TMessage ); 
  message WM_SYSCOMMAND;
end;
.....

// Обработка сообщения WM_SYSCOMMAND
// перехват минимизации окна
procedure TForm1.WMGetSysCommand( var Message: TMessage );
begin
  if ( Message.wParam = SC_MINIMIZE ) then
  form1.Visible := False
  else
  inherited;
end;



// Поверх всех окон
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetWindowPos( Handle, HWND_TOPMOST, Left, Top, Width, Height,
  SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );
end;

// Отменить
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetWindowPos( Handle, HWND_NOTOPMOST, Left, Top, Width, Height,
  SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE );
end;



// Способ первый

var
  Form1: TForm1;
  Flash: bool = false;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // Чтобы мигал заголовок формы
  FlashWindow( Form1.Handle, Flash );
  // Чтобы мигала пиктограмма в TaskBar
  FlashWindow( Application.Handle, Flash );
  Flash := not Flash;
end;

// Способ второй
procedure FlashWnd( h: HWND; active: boolean );
var
  fl: TFlashWInfo;
begin
  fl.cbSize := sizeof( TFlashWInfo );
  fl.uCount := INFINITE; // Или необходимое количество повторений
  fl.dwTimeout := 500; // Интервал
  fl.hwnd := h;
  if active then
  fl.dwFlags := FLASHW_ALL
  else
  fl.dwFlags := FLASHW_STOP;
  FlashWindowEx( fl );
end;



1-5 6-7