![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
строка в ListBox как в плей-листе WinAmp [D5, Win95/98, Win2k]
petyun © (2002-01-17 10:04:00)Уважаемые мастера! Подскажите, пожалуйста, как сделать такую штуку: в строках ListBox хочется слева поместить один текст, а справа - другой (как в WinAmp слева-название, справа-время).
Причем это должно быть в одной строке.
Т.е. как узнать ширину текста, сколько необходимо пробелов, чтобы
все правильно разместить?
TonnyS (2002-01-17 12:54:00) [1]http://delphi.vitpc.com/treasury/listbox.htm
Gennady (2002-01-17 11:51:00) [2]procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var s, s1, s2: string;
i: integer;
H: HDC;
begin
s:=TListBox(Control).Items[Index];
i:=Pos("*", s);
s1:=Copy(s, 1, i-1);
s2:=Copy(s, i+1, Length(s)-i);
h:=TListBox(Control).Canvas.Handle;
TListBox(Control).Canvas.FillRect(Rect);
DrawText(H, PChar(s1), Length(s1), Rect, DT_LEFT or DT_VCENTER);
DrawText(H, PChar(s2), Length(s2), Rect, DT_RIGHT or DT_VCENTER);
end;
как-нибудь так. здесь * - это разделитель между левой и правой частью строки.
только, как сказал valery_f "Если ListBox в стиле OwnerDraw".
valery_f (2002-01-17 11:35:00) [3]Если ListBox в стиле OwnerDraw, то можно рисовать че угодно :), в т.ч. время справа. По-моему не так уж сложно...
olban (2002-01-17 11:24:00) [4]Используй TStringGrid, можно сколько угодно столбцов сделать, а в ListBox не получится выровнять текст, так как, в основном, шрифты имеют разную ширину символов.