![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DbGrid-ячейка в две строки [D6, XP]
Andrey_1 © (2011-03-16 08:45:00)Добрый день! У меня в таблице не вмещается текст в ячейке. Как можно чтобы строка увеличивалась по высоте и данные были в две строки?
Andrey_1 (2011-03-17 11:53:00) [1]Спасибо! буду пробовать.
Игорь Шевченко (2011-03-17 11:05:00) [2]
> Как можно чтобы строка увеличивалась по высоте и данные
> были в две строки?
не использовать DBGrid
И. Павел (2011-03-17 08:47:00) [3]> label с AutoSize = true и WordWrap = true
Лучше даже не Label а Memo использовать, чтобы текст на строки автоматически разбивался. Тогда вообще почти ничего самому делать не понадобится :)
И. Павел (2011-03-17 08:23:00) [4]Например, вы можете узнать ширину строки текста на канве грида, используя метод DBGrid1.Canvas.TextWidth(). Если эта ширина меньше ширины колонки, то пишете текст в несколько строк.
> IF length(Query3FName.Value)<43
Этот способ сгодится только если текст моноширинный. Кроме того - не понятно, что такое Query3FName.Value. Чтобы получить текст в текущей ячейке, можно использовать свойство Column.Field.AsString. Исходя из всего этого, можно делать разметку текста вручную.
Есть еще простой способ определить, какой высоты будет текст в ячейке: создайте label с AutoSize = true и WordWrap = true и с фиксированной шириной (constraints). Пишите туда текст из Column.Field.AsString. и ставите высоту ячейки в таблице такую же, как Label.Height. Не самый производительный способ, но как вариант, думаю, сгодится.
Andrey_1 (2011-03-17 08:06:00) [5]Вот ещё так прописываю для пробы.
IF length(DBGrid4.Columns[1].Field.asstring)<43 Then
Label6.Visible:=True;
Но дальше упираюсь в те же вопросы.
Andrey_1 (2011-03-17 07:48:00) [6]Я прочитал. Но всё-таки. Допустим я определяю поле в таблице что оно длиннее, но как определить какое поле и как прописать его в две или три строки. Вот так прописываю для пробы определения
в
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 строки?
И. Павел (2011-03-16 09:11:00) [7]Вот примеры: http://www.delphisources.ru/pages/faq/base/dbgrid_possibilities.html
И. Павел (2011-03-16 09:10:00) [8]В обработчике DrawColumnCell можно рисовать таблицу так, как вам нужно: вставлять картинки, менять текст, в общем - делать все, что угодно, не говоря уже о выводе многострочных данных.