Программирование
Главная » 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; |
// Добавьте в описание формы: 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; |
// Поверх всех окон |
// Способ первый 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