Ich wollt mir bei einer Zelle in einem DBGrid den Inhalt selber zeichnen und bin dabei auf ein Problem gestoßen, was auch in einem normalen StringGrid (letzter gemeinsamer Vorfahr: TCustomGrid) nachzustellen ist (Bugeintrag oder ein Forumeintrag habe ich nicht finden können):
Versuche ich mit TextRect einen Text in das Rect zu schreiben, funktioniert dies nur, wenn der TextStyle.Alignment <> taLeftJustify ist:
Code: Alles auswählen
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol,
aRow: Integer; aRect: TRect; aState: TGridDrawState);
var
aTextStyle: TTextStyle;
begin
if (aCol=2) and (aRow>0) then begin
aTextStyle:=TStringGrid(Sender).Canvas.TextStyle;
// aTextStyle.Alignment:=taRightJustify; //funktioniert
// aTextStyle.Alignment:=taCenter; //funktioniert
aTextStyle.Alignment:=taLeftJustify; //funktioniert nicht !!!
TStringGrid(Sender).Canvas.TextRect(aRect, 0, 0, 'Test', aTextStyle);
end;
end; Ich habe getestet: Win7 64bit, Lazarus 32bit: Lazarus 1.2.2 r44758 FPC 2.6.4 i386-win32-win32/win64 und Lazarus 1.3 r45318M FPC 2.7.1 i386-win32-win32/win64
kleines Bsp. anbei