Вниз
Скачать: CL | DM;

Снова вопрос по DrawTextEx   Найти похожие ветки 

 
KIR ©   (2002-08-29 13:12) [0]

Вот процедура:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
al: UINT;
s: string;
hi: integer;
R: TRect;
begin
S:=StringGrid1.Cells[ACol,ARow];
al:=DT_RIGHT or DT_END_ELLIPSIS or DT_NOPREFIX or DT_WORDBREAK;
R := Rect;
R.left:=R.Left+2;
R.Top:=R.Top+2;
R.Right:=Rect.Right-2;
StringGrid1.Canvas.FillRect(Rect);
hi:=DrawTextEx(StringGrid1.Canvas.Handle, PChar(s), Length(s), R, al or DT_CALCRECT, nil);
if StringGrid1.RowHeights[ARow] < hi then
StringGrid1.RowHeights[ARow]:=hi+6;
DrawTextEx(StringGrid1.Canvas.Handle,Pchar(s),-1,R,al,nil);
end;


она НЕ ВЫРАВНИВАЕТ текст по правому краю, НО как только я комментирую след. строки:


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
al: UINT;
s: string;
hi: integer;
R: TRect;
begin
S:=StringGrid1.Cells[ACol,ARow];
al:=DT_RIGHT or DT_END_ELLIPSIS or DT_NOPREFIX or DT_WORDBREAK;
R := Rect;
R.Left:=R.Left+2;
R.Top:=R.Top+2;
R.Right:=Rect.Right-2;
StringGrid1.Canvas.FillRect(Rect);
// hi:=DrawTextEx(StringGrid1.Canvas.Handle, PChar(s), Length(s), R, al or DT_CALCRECT, nil);
// if StringGrid1.RowHeights[ARow] < hi then
// StringGrid1.RowHeights[ARow]:=hi+6;
DrawTextEx(StringGrid1.Canvas.Handle,Pchar(s),-1,R,al,nil);
end;

все получается. Я так понимаю, что проблема в использовании параметра DT_CALCRECT. Но без него я не смогу выводить текст в несколько строк... может мне кто-нибудь помочь?


 
KIR ©   (2002-08-30 10:46) [1]

Люди, ау...


 
KIR ©   (2002-09-02 11:41) [2]

Что действительно никто не знает...


 
Ученик ©   (2002-09-02 11:48) [3]

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
al: UINT;
s: string;
hi: integer;
R , R1: TRect;
begin
S:=StringGrid1.Cells[ACol,ARow];
al:=DT_RIGHT or DT_END_ELLIPSIS or DT_NOPREFIX or DT_WORDBREAK;
R := Rect;
R.left:=R.Left+2;
R.Top:=R.Top+2;
R.Right:=Rect.Right-2;
StringGrid1.Canvas.FillRect(Rect);
R1 := R;
hi:=DrawTextEx(StringGrid1.Canvas.Handle, PChar(s), Length(s), R, al or DT_CALCRECT, nil);
if StringGrid1.RowHeights[ARow] < hi then
StringGrid1.RowHeights[ARow]:=hi+6;
DrawTextEx(StringGrid1.Canvas.Handle,Pchar(s),-1, R1,al,nil);
end;



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
3-35540
AM
2002-08-21 14:08
2002.09.12
Запрос для получения количества подключенных к БД


1-35633
Strela
2002-08-30 01:18
2002.09.12
Динамическое создание объекта


14-35894
kalenih
2002-08-19 14:09
2002.09.12
Привет


1-35753
Mr. Faga
2002-08-30 16:53
2002.09.12
Delphi 7


3-35586
michael_b
2002-08-21 22:23
2002.09.12
подскажите какой-нибудь реальный(не учебный) пример по работе IB




   Наверх