Текущий архив: 2005.01.02;
Скачать: CL | DM;
Вниз
Прорисовка ListBox Найти похожие ветки
← →
Igor_thief (2004-12-19 16:58) [0]Как сделать такое? Есть ListBox. В нем выделен один элемент. При движении мишки над Listbox"om надо чтобы элементы находящийся под курсором мишки подсвечивался (только подсвечивался, а не ставал активным).
← →
begin...end © (2004-12-19 17:03) [1]> Igor_thief (19.12.04 16:58)
Думаю, что копать нужно в сторону TListBox.OnMouseMove и TListBox.ItemAtPos.
← →
begin...end © (2004-12-19 17:05) [2]> Igor_thief
Кстати, а TListView не подойдёт? Там уже есть свойство HotTrack.
← →
antonn © (2004-12-19 17:39) [3]
> Igor_thief (19.12.04 16:58)
Так, что ли?
var track:integer;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
With ( Control As tListBox ).Canvas Do Begin
if Index=track then begin
Font.Color := 204;
Brush.Color := 14737663;
end else begin
Font.Color := clWindowText;
Brush.Color := clWindow;
end;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, ( Control As tListBox ).Items.Strings[index]);// +" "+ pWWW_Conn(List_Conn.Items.Objects[ index ])^.sss);
end;
end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
track:= y div ( Sender As tListBox ).ItemHeight;
( Sender As tListBox ).Invalidate;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.DoubleBuffered:=true;
end;
← →
Igor_thief (2004-12-20 11:44) [4]begin...end © (19.12.04 17:05) [2]
Не подойдет.
begin...end © (19.12.04 17:03) [1]
Это понятно. Но как в OnMouseMove перепрорисовывать конкретный элемент под мышкой?
← →
Igor_thief (2004-12-20 11:45) [5]antonn © (19.12.04 17:39) [3]
ЧТо-то похожее, но чтобы не терялся выделенный элемент!
← →
Igor_thief (2004-12-20 11:56) [6]antonn © (19.12.04 17:39) [3]
Спасибо за идею. Я этот код немного приукрашу и все будет работать как надо.
Страницы: 1 вся ветка
Текущий архив: 2005.01.02;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.027 c