Форум: "Начинающим";
Текущий архив: 2011.06.26;
Скачать: [xml.tar.bz2];
ВнизDbGrid-ячейка в две строки Найти похожие ветки
← →
Andrey_1 (2011-03-16 08:45) [0]Добрый день! У меня в таблице не вмещается текст в ячейке. Как можно чтобы строка увеличивалась по высоте и данные были в две строки?
← →
И. Павел © (2011-03-16 09:10) [1]В обработчике DrawColumnCell можно рисовать таблицу так, как вам нужно: вставлять картинки, менять текст, в общем - делать все, что угодно, не говоря уже о выводе многострочных данных.
← →
И. Павел © (2011-03-16 09:11) [2]Вот примеры: http://www.delphisources.ru/pages/faq/base/dbgrid_possibilities.html
← →
Andrey_1 (2011-03-17 07:48) [3]Я прочитал. Но всё-таки. Допустим я определяю поле в таблице что оно длиннее, но как определить какое поле и как прописать его в две или три строки. Вот так прописываю для пробы определения
в
procedure TForm1.DBGrid4DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
прописываю.
IF length(Query3FName.Value)<43 Then
Label6.Visible:=True; // проверка
Но какое поле? Как указать что эта ячейка будет иметь 2 или 3 строки?
← →
Andrey_1 (2011-03-17 08:06) [4]Вот ещё так прописываю для пробы.
IF length(DBGrid4.Columns[1].Field.asstring)<43 Then
Label6.Visible:=True;
Но дальше упираюсь в те же вопросы.
← →
И. Павел © (2011-03-17 08:23) [5]Например, вы можете узнать ширину строки текста на канве грида, используя метод DBGrid1.Canvas.TextWidth(). Если эта ширина меньше ширины колонки, то пишете текст в несколько строк.
> IF length(Query3FName.Value)<43
Этот способ сгодится только если текст моноширинный. Кроме того - не понятно, что такое Query3FName.Value. Чтобы получить текст в текущей ячейке, можно использовать свойство Column.Field.AsString. Исходя из всего этого, можно делать разметку текста вручную.
Есть еще простой способ определить, какой высоты будет текст в ячейке: создайте label с AutoSize = true и WordWrap = true и с фиксированной шириной (constraints). Пишите туда текст из Column.Field.AsString. и ставите высоту ячейки в таблице такую же, как Label.Height. Не самый производительный способ, но как вариант, думаю, сгодится.
← →
И. Павел © (2011-03-17 08:47) [6]> label с AutoSize = true и WordWrap = true
Лучше даже не Label а Memo использовать, чтобы текст на строки автоматически разбивался. Тогда вообще почти ничего самому делать не понадобится :)
← →
Игорь Шевченко © (2011-03-17 11:05) [7]
> Как можно чтобы строка увеличивалась по высоте и данные
> были в две строки?
не использовать DBGrid
← →
Andrey_1 (2011-03-17 11:53) [8]Спасибо! буду пробовать.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.06.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c