Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

DBGrid+DrawText   Найти похожие ветки 

 
vitv ©   (2007-04-08 13:50) [0]

Из примера вырезал следующую функцию, добавив свои поля. Не работает, ругается:
Constant object cannot be passed as var parameter

procedure Form6.DBGrid9DrawDataCell(Sender: TObject; const Rect: TRect;
 Field: TField; State: TGridDrawState);
 var
   C: array[0..255] of Char;

begin
Canvas.FillRect(Rect);
 StrPCopy(C, DataModule2.IBDataSet2.fieldbyname("SG").AsString);
 WinProcs.DrawText(Canvas.Handle, C, StrLen(C), Rect, DT_WORDBREAK);
end;


 
Anatoly Podgoretsky ©   (2007-04-08 13:57) [1]

> vitv  (08.04.2007 13:50:00)  [0]

Сказано же, что константный объект нельзя


 
vitv ©   (2007-04-08 18:31) [2]


> const Rect: TRect;

А как поступить?


 
Loginov Dmitry ©   (2007-04-08 19:09) [3]

var
 S: string;
......
begin
...
 S := DataModule2.IBDataSet2.fieldbyname("SG").AsString);

 WinProcs.DrawText(Canvas.Handle, PChar(S), Length(S), Rect, DT_WORDBREAK);
end

А WinProcs - это откуда?


 
vitv ©   (2007-04-08 19:54) [4]


> Loginov Dmitry ©   (08.04.07 19:09) [3]
> var
>  S: string;
> ......
> begin
> ...
>  S := DataModule2.IBDataSet2.fieldbyname("SG").AsString);
>
>
>  WinProcs.DrawText(Canvas.Handle, PChar(S), Length(S), Rect,
>  DT_WORDBREAK);
> end
>
> А WinProcs - это откуда?
> <Цитата>

из примера DelphiWorld


 
vitv ©   (2007-04-08 22:04) [5]


> var
>  S: string;
> ......
> begin
> ...
>  S := DataModule2.IBDataSet2.fieldbyname("SG").AsString);
>
>
>  WinProcs.DrawText(Canvas.Handle, PChar(S), Length(S), Rect,
>  DT_WORDBREAK);
> end

Не работает :))) Та же ошибка...


 
Loginov Dmitry ©   (2007-04-08 23:28) [6]

Тогда так попробуй:

var
 S: string;
......
begin
...
 S := DataModule2.IBDataSet2.fieldbyname("SG").AsString);
 DrawText(Canvas.Handle, PChar(S), Length(S), PRect(@Rect)^, DT_WORDBREAK);
end


 
Германн ©   (2007-04-09 00:15) [7]


> Loginov Dmitry ©   (08.04.07 19:09) [3]


> А WinProcs - это откуда?

Из Д1. уст. :)


 
Loginov Dmitry ©   (2007-04-09 00:46) [8]

> Из Д1. уст. :)


Отстал я от жизни, что поделаешь... :)


 
Германн ©   (2007-04-09 01:04) [9]


> Loginov Dmitry ©   (09.04.07 00:46) [8]
>
> > Из Д1. уст. :)
>
>
> Отстал я от жизни, что поделаешь... :)
>

Кстати уж сколько лет в обед тому Д1. А и в BDS2006 в ConditionalDefines для каждого нового проекта по умолчанию добавляется: WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;


 
Германн ©   (2007-04-09 01:07) [10]

Пардон. Не в ConditionalDefines, а в Unit aliases, конечно.


 
Германн ©   (2007-04-09 01:14) [11]


> vitv ©   (08.04.07 22:04) [5]
>
>
> > var
> >  S: string;
> > ......
> > begin
> > ...
> >  S := DataModule2.IBDataSet2.fieldbyname("SG").AsString);
>
> >
> >
> >  WinProcs.DrawText(Canvas.Handle, PChar(S), Length(S),
>  Rect,
> >  DT_WORDBREAK);
> > end
>
> Не работает :))) Та же ошибка...

Как раз строка тут и не причём. Этот параметр описан в DrawText как LPCTSTR. А вот предпоследний параметр DrawText описан как LPRECT. И именно он не может быть константным параметром. А в DBGrid9DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
он как раз константа!


 
vitv ©   (2007-04-09 10:05) [12]

Loginov Dmitry ©   (08.04.07 23:28) [6]

Тогда так попробуй:

var
S: string;
......
begin
...
S := DataModule2.IBDataSet2.fieldbyname("SG").AsString);
DrawText(Canvas.Handle, PChar(S), Length(S), PRect(@Rect)^, DT_WORDBREAK);
end

Спасибо! Заработало, но многострочный грид не получился.
Может я работаю не в том направлении?


 
ЮЮ ©   (2007-04-10 03:11) [13]

> Спасибо! Заработало, но многострочный грид не получился.

Плтому что TDBGrid сам учтанавливает высоту строки грида, исходя из размера Font-а. Так что "переносы" просто не видны в ячейке. Для проверки попробуй нарисовать в два раза меньшим шрифтом: Canvas.Font.Size := Grid.Font.Size div 2.

З.Ы. Неужели так трудно добавлять заголовок метода? Ессли это метод формы, то иcпользуется Canvas формы, а не Canvas грида.



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
3-1171020714
Kyn66
2007-02-09 14:31
2007.04.29
Summa Calculated полей


2-1176025604
kate_1
2007-04-08 13:46
2007.04.29
помогите составить программу в Delphi6


3-1171346681
korden
2007-02-13 09:04
2007.04.29
Добавление поля в существующий dbf


15-1175417739
Calibr
2007-04-01 12:55
2007.04.29
Perl с HTML


4-1164309076
Dmitry_177
2006-11-23 22:11
2007.04.29
Обработка WM_LBUTTONDOWN