Главная страница
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.01 c
15-1298966436
Rouse_
2011-03-01 11:00
2011.06.26
Нужна небольшая помощь в тестировании


1-1257767754
Chizhov
2009-11-09 14:55
2011.06.26
Определение начала/завершения сеанса пользователя из сервиса?


2-1300265235
>|<
2011-03-16 11:47
2011.06.26
Как организовать именованные массивы в Delphi?


4-1219157045
ganj
2008-08-19 18:44
2011.06.26
Переключение раскладки клавиатуры в консоли


15-1299833572
OW
2011-03-11 11:52
2011.06.26
Как проверить было ли изменение TDataSet ?