Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Формирование строки [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо