![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
мерцание в ListBox [D6, WinXP]
Gear © (2004-08-17 19:16:00)Добрый день, Господа! Помогите пожалуйста разобраться. Каждые 500 мс делаю ListBox1.Repaint; чтобы обновлять статус в ListBox (пытаюсь примерно реализовать такой же эффект как в ICQ online/offline)
Внизу часть недописанного кода который просто выводит иконку, логин и надпись online в каждой строчке.
Всё вроде нормально, но вижу мерцание на ListBox. Что я делаю не так и как от него избавиться?
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
S:string;
N:Word;
begin
with (Control as TListBox), Canvas do
begin
Canvas.FillRect(Rect);
MoveTo(Rect.Left+15 + form1.ImageList2.Height, Rect.Top+3);
SetTextAlign(Canvas.Handle, TA_LEFT OR TA_UPDATECP);
S:=Items[Index];
for N:=1 to Length(S) do begin
Windows.TextOut(Canvas.Handle,0, 0, @S[N],1);
end;
Font.Color:= clGreen;
Font.Size:=8;
Windows.TextOut(Canvas.Handle,0, 0, ' online',9);
Font.Color:=clBlue;
Rect.Bottom:=Rect.Top + form1.ImageList2.Height;
Rect.Right :=Rect.Left + form1.ImageList2.Width;
Rect.Top:=Rect.Top+2;
form1.ImageList2.Draw(Canvas,Rect.Left+8,Rect.Top,39);
end;
end;
Mihey_temporary (2004-08-17 21:46:00) [1]Ты только это спрашивал:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092756204&n=0
VMcL (2004-08-17 19:42:00) [2]>> Gear (17.08.04 19:16)
DoubleBuffered := True;
?