Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.26;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
2-1300644733
inslave
2011-03-20 21:12
2011.06.26
многопоточность


15-1300178434
brother
2011-03-15 11:40
2011.06.26
ISSN


4-1227677945
Саня
2008-11-26 08:39
2011.06.26
Перехват названий окон и приложений


3-1261456991
d@nger
2009-12-22 07:43
2011.06.26
2 таблицы Firebird


15-1299958215
Fergo
2011-03-12 22:30
2011.06.26
Люди обясните что в этом коде не так???