![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Группировка в ListBox1
Supreme © (2002-12-12 17:09:00)Нужно написать отдельную процедуру, чтобы сгруппировать строки в
ListBox1. Т.е. имееются строки, например:
111111
222222
333333
444444
Нужно перед каждой добавить "1. ", "2. ", "3. "...."25. " и т.д. до конца.
Но чтобы не это делалось не просто "допечатыванием", а с заменой старых значений.
т.е., чтобы не получилось такого:
1. 1. 111111
2. 2. 222222
3. 3. 333333
и т.д.
помогите написать процедуру.
Бурундук (2002-12-12 21:17:00) [1]Есть ещё вариант:
можно не добавлять номер к строке, а просто
рисовать его. Тогда не надо будет отслеживать изменения -
номер будет соответсвтовать позиции автоматически.
ListBox1.Style := lbOwnerDrawFixed;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var s: string;
begin
with (Control as TListBox) do
begin
if odSelected in State then
begin
Canvas.Brush.Color := clHighlight;
Canvas.Font.Color := clHighlightText;
end else
if odDisabled in State then
Canvas.Font.Color := clInactiveCaption;
//...
s := Format("%d. %s", [Index, Items[Index]]);
Canvas.TextRect(Rect, Rect.Left+2, Rect.Top, s);
end;
end;
Supreme (2002-12-12 20:38:00) [2]Можно пример?
Calm (2002-12-12 17:26:00) [3]Перед тем как добавить номер, проверяй первое слово (символы до пробела) обрабатываемой строки. Если перовое слово состоит из цифр и точки, тогда его нужно удалить и только после этого добавить номер.
Использовать фукнцию Copy, проверку на вхождение символа в множество и все...