Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1300363050
petrovich
2011-03-17 14:57
2011.06.26
вести логи действий


2-1300915523
fynjy93
2011-03-24 00:25
2011.06.26
проблема с дбчекбокс


15-1299748624
laby
2011-03-10 12:17
2011.06.26
При вызове sp часики убрать


2-1300306556
Aleks
2011-03-16 23:15
2011.06.26
Округление чисел в Дельфи


2-1300378553
Алексей Гость
2011-03-17 19:15
2011.06.26
Не могу разобраться с DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский