![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Формирование строки [D6]
Ольга © (2005-11-07 14:02:00)Мне нужно сформировать строку, состоящую из 2 строк произвольной длины - код (<=10 символов) и наименование, чтобы это в ListBox-е выглядело как 2 ровненьких столбца.
Делаю так, добавляю к первой строке пробелы, чтобы получилось 12 символов, потом добавляю вторую строку:
While not Query1.Eof do
begin
ListBox.Items.AddObject(Query1.FieldByName('Code').AsString+
StringOfChar(' ',12-length(Query1.FieldByName('Code').AsString))+
Query1.FieldByName('Name').AsString,
pointer(Query1.FieldByName('id_graf').AsInteger));
Query1.Next;
end;
Получаются 2 кривокосеньких столбца, т.к. ширина символов разная.
Можно, наверное, определить ширину каждого символа и наворотить расчет по пикселям...
А может это делается совсем по-другому и я зря копья ломаю?
Amoeba (2005-11-07 18:00:00) [1]Плюсы в таком подходе напрочь отсутствуют.
Sergey13 (2005-11-07 16:25:00) [2]2[8] Ольга (07.11.05 16:14)
> Есть свои плюсы и минусы в таком подходе программирования, я пока плюсов вижу больше.
Опубликуешь список плюсов? Вот например минус я вижу уже в том, что надо перегонять инфу из датасета в "объеты". А плюсы пока что-то не усматриваю.
А вообще - дело твое.
Ольга (2005-11-07 16:14:00) [3]
> Sergey13 © (07.11.05 14:52) [7]
2 копии одного и того-же я не держу, т.к. ADOQuery сразу после заполнения ListBox-а освобождаю для дальнейшей работы. Как правило, я использую одну компоненту ADOQuery, считываю информацию из выборки в объекты и дальше работаю с ними. Есть свои плюсы и минусы в таком подходе программирования, я пока плюсов вижу больше.
Sergey13 (2005-11-07 14:52:00) [4]2 [5] Ольга (07.11.05 14:29)
>А почему странно? В ListBox вывожу информацию из БД, а потом в -дцати местах обращаюсь к ListBox-у, чтобы считать, что выбрал пользователь.
Потому и странно. Ты фактически копируешь выборку и держишь в памяти 2 копии одного и того-же. Пустая трата получается. Тогда как грид - это просто отображение первоисточника (датасета).
Anatoly Podgoretsky (2005-11-07 14:32:00) [5]Ольга (07.11.05 14:29) [5]
Тогда как сказали какой ни будь грид - отличное решение и позволяет расширить функциональность.
Ольга (2005-11-07 14:29:00) [6]
> Sergey13 ©
А почему странно? В ListBox вывожу информацию из БД, а потом в -дцати местах обращаюсь к ListBox-у, чтобы считать, что выбрал пользователь.
Ну, а по сути проблемы, вы правы. Поменяла шрифт - столбики ровные, но Courier New вносит дисонанс в общую картинку интерфейса, т.к. шрифт задается пользователем и только ListBox этому не подчиняется. Нехорошо, буду переделывать.
Sergey13 (2005-11-07 14:15:00) [7]2[3] Ольга (07.11.05 14:13)
А у тебя программа по работе с БД на ListBox сильно завязана? Странно.
Хочешь подпорки ставить - дело твое.
Ольга (2005-11-07 14:13:00) [8]Грид, конечно, катит. Но не хочется переделывать работающую программу.
А что в Courier New все символы одной ширины? Сейчас попробую. Переделка меньшей кровью.
Sergey13 (2005-11-07 14:07:00) [9]2Ольга (07.11.05 14:02)
А может отказаться от ListBox-а? Чем грид например не катит?
Anatoly Podgoretsky (2005-11-07 14:06:00) [10]Используй шрифт Courier New