Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.018 c
14-35892
MBo
2002-08-19 10:24
2002.09.12
Очередная задачка ;)


1-35677
Старик
2002-09-02 11:55
2002.09.12
DLL


1-35636
lipskiy
2002-08-26 20:32
2002.09.12
Иконки с альфаканалом?


3-35629
Firsor1
2002-08-23 10:41
2002.09.12
не выбираются некоторые записи


1-35707
Mic_2000
2002-09-02 15:21
2002.09.12
как запустить файл с параметрами?