Страница 1 из 1

ListBox

Добавлено: 15 май 2007, 23:55
Yura_ua
как можно сделать, чтобы при нажатии клавиши на некотором элементе менялся его цвет?

Re: ListBox

Добавлено: 16 май 2007, 10:30
Duncon
Необходимо изменить свойство Style в TListBox на lbOwnerDrawFixed. Если не изменить свойство Style, то событие OnDrawItem никогда не вызовется.

Код: Выделить всё

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;

Re: ListBox

Добавлено: 16 май 2007, 23:03
Yura_ua
А что мне тогда писать в OnKeyDown?

Re: ListBox

Добавлено: 17 май 2007, 03:10
Игорь Акопян
флажок выставить... а при отрисовке проверять