Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизФормирование строки Найти похожие ветки
← →
Ольга (2005-11-07 14:02) [0]Мне нужно сформировать строку, состоящую из 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 кривокосеньких столбца, т.к. ширина символов разная.
Можно, наверное, определить ширину каждого символа и наворотить расчет по пикселям...
А может это делается совсем по-другому и я зря копья ломаю?
← →
Anatoly Podgoretsky © (2005-11-07 14:06) [1]Используй шрифт Courier New
← →
Sergey13 © (2005-11-07 14:07) [2]2Ольга (07.11.05 14:02)
А может отказаться от ListBox-а? Чем грид например не катит?
← →
Ольга (2005-11-07 14:13) [3]Грид, конечно, катит. Но не хочется переделывать работающую программу.
А что в Courier New все символы одной ширины? Сейчас попробую. Переделка меньшей кровью.
← →
Sergey13 © (2005-11-07 14:15) [4]2[3] Ольга (07.11.05 14:13)
А у тебя программа по работе с БД на ListBox сильно завязана? Странно.
Хочешь подпорки ставить - дело твое.
← →
Ольга (2005-11-07 14:29) [5]
> Sergey13 ©
А почему странно? В ListBox вывожу информацию из БД, а потом в -дцати местах обращаюсь к ListBox-у, чтобы считать, что выбрал пользователь.
Ну, а по сути проблемы, вы правы. Поменяла шрифт - столбики ровные, но Courier New вносит дисонанс в общую картинку интерфейса, т.к. шрифт задается пользователем и только ListBox этому не подчиняется. Нехорошо, буду переделывать.
← →
Anatoly Podgoretsky © (2005-11-07 14:32) [6]Ольга (07.11.05 14:29) [5]
Тогда как сказали какой ни будь грид - отличное решение и позволяет расширить функциональность.
← →
Sergey13 © (2005-11-07 14:52) [7]2 [5] Ольга (07.11.05 14:29)
>А почему странно? В ListBox вывожу информацию из БД, а потом в -дцати местах обращаюсь к ListBox-у, чтобы считать, что выбрал пользователь.
Потому и странно. Ты фактически копируешь выборку и держишь в памяти 2 копии одного и того-же. Пустая трата получается. Тогда как грид - это просто отображение первоисточника (датасета).
← →
Ольга (2005-11-07 16:14) [8]
> Sergey13 © (07.11.05 14:52) [7]
2 копии одного и того-же я не держу, т.к. ADOQuery сразу после заполнения ListBox-а освобождаю для дальнейшей работы. Как правило, я использую одну компоненту ADOQuery, считываю информацию из выборки в объекты и дальше работаю с ними. Есть свои плюсы и минусы в таком подходе программирования, я пока плюсов вижу больше.
← →
Sergey13 © (2005-11-07 16:25) [9]2[8] Ольга (07.11.05 16:14)
> Есть свои плюсы и минусы в таком подходе программирования, я пока плюсов вижу больше.
Опубликуешь список плюсов? Вот например минус я вижу уже в том, что надо перегонять инфу из датасета в "объеты". А плюсы пока что-то не усматриваю.
А вообще - дело твое.
← →
Amoeba © (2005-11-07 18:00) [10]Плюсы в таком подходе напрочь отсутствуют.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.018 c