C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
DBGrid, Несколько строк в ячейке
Zeus
Отправлено: 30.01.2004, 12:58


Ученик-кочегар

Группа: Участник
Сообщений: 5



Люди подскажите как создать ячейку DBGrid высотой в несколько строк.
Может нужно использовать компонент Memo?

Заранее благодарен!
Valdemar
Отправлено: 30.01.2004, 14:41


Мастер участка

Группа: Участник
Сообщений: 433



Можно использовать DBMemo, но если очень хочется использовать DBGrid, то можно использовать обработчик события OnDrawDataCell.

Я делал так:
1. Для DBGrid ширину колонок устанавливал программно, в не через CollumnEditor (т.к. если я добалял столбцы в CollumnEditor, то ничего не получалось)
2. Для DBGrid ставил большой шрифт
3. В обработчике события OnDrawDataCell при рисовании всех ячеек делал шрифт обычного размера, это позволяло выводить несколько строк текста.
CODE
void __fastcall TForm1::DBGrid1DrawDataCell(TObject *Sender,
     const TRect &Rect, TField *Field, TGridDrawState State)
{
 TRect r=Rect;
 InflateRect(&r,-2,-2);
 DBGrid1->Canvas->Font->Size=8;
 DBGrid1->Canvas->FillRect(Rect);
 DrawText(DBGrid1->Canvas->Handle,Field->AsString.c_str(), Field->AsString.Length(), &r, DT_LEFT|DT_WORDBREAK);
}

Данный способ работал в силу того, что мне не требовалось редактировать таблицу и я для DBGrid в Options поставил dgEditing=false
Admin
Отправлено: 30.01.2004, 15:39


Владимир

Группа: Администратор
Сообщений: 1190



Вообще советую присмотреться к компоненту DBGridEh (523 Кб)
(из библиотеки EhLib)
очень много интресных (полезных и нужных) возможностей
есть Help (185 Кб), демо-программа (743 Кб) , которая показывает
возможности компонента.


Пока бесплатно, не триал (для exUSSR)
http://www.farpost.com/personal/dmitryb/RUS/

Вернуться в Работа с базами данных в C++Builder