Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Названия колонок в DBGrid в 2-а, 3-и ряда [D6, Win2k]


diabolik_krsk ©   (2004-10-26 09:23:00) 

Уважаемые мастера. Вопрос такой:
На форме существует DBGrid. Заношу туда названия столбцов (что бы по русски названия были) из базы данных.
При изменении ширины столбца (если название столбца длинное) название "уезжает" за правую границу столбца и не отображается.
Как определить, что ширина столбца меньше ширины названия этого же столбца, и если данное соотношение в True то часть названия переносить во вторую строчку (а если надо и в третью).


diabolik_krsk   (2004-10-27 09:13:00) [1]


> Думкин ©   (27.10.04 08:18) [5]
> http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=806


Спасибо, интересная статья.


diabolik_krsk   (2004-10-27 09:12:00) [2]


> PKT   (27.10.04 07:03) [4]
> var
>  R: TRect;
> begin
>  .........
>  R := Rect;
>  DrawText(....., R, ....);


IMHO данная операция вызывает ошибку при компиляции проекта с сообщением TRec redefined, и что то мне подсказывает что такая операция не "пройдет" через компилятор.


Думкин   (2004-10-27 08:18:00) [3]

http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=806


PKT   (2004-10-27 07:03:00) [4]

var
 R: TRect;
begin
 .........
 R := Rect;
 DrawText(....., R, ....);


diabolik_krsk   (2004-10-27 05:16:00) [5]

> begin...end ©

Пытался обработать событие DrawText на примере статьи Голубь П.М.:


s := DBGrid1.Columns[0].FieldName;
DrawText(DBGrid1.Canvas.Handle,PChar(s),length(s),Rect,DT_WORDBREAK);


Однако согласно справке описания функции DrawText:

function Windows.DrawText(hdc: HDC; lpString: PChar; nCount: integer; var lpRect: TRect; uFromat: Cardinal):integer;

параметр lpRect: TRect должен быть переменной, а в событии OnDrawColumnCell либо OnDrawDataCell DBGrid'а данный параметр значится как константа. В результате Delphi выдает ошибку компиляции о несовместимости параметра constRect и varRect.

Хотя компоненты StrindGrid и DBGrid являются потомками TCustomGrid.

Может есть возможность обойти как то эту проблему??


Koala   (2004-10-26 10:38:00) [6]

diabolik_krsk   (26.10.04 9:23)
EhDBGrid, там это реализовано


begin...end   (2004-10-26 09:24:00) [7]

См. справку по API-функции DrawText().


Наверх

Титульная страница Поиск, карта сайта Написать письмо