Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: TStringgrid mehrzeiliger vertikaler Text
14. Sep 2012, 09:02
Du musst vor dem Zeichnen die Transformation setzen
Delphi-Quellcode:
Procedure RotText(left:Boolean;C:TCanvas;r:Trect;Const s:String);
var
tr:TRect;
ts:String;
begin
ts := s;
if Left then SetCanvasZoomAndRotation(c,1,-90,r.Left,r.Bottom)
else SetCanvasZoomAndRotation(c,1,90,r.Right,r.top);
tr.Left := 0;
tr.Top := 0;
tr.Right := r.Bottom - r.Top;
tr.Bottom := r.Right - r.Left;
InflateRect(tr,-2,-2);
c.TextRect(tr,ts,[tfWordBreak]);
ResetCanvas(c);
end;
procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Const
C_TEXT='Irgend ein Testtext der etwas länger ist';
Procedure Default;
var
ar:TRect;
ast:String;
begin
ar := Rect;
InflateRect(ar,-2,-2);
ast:= C_TEXT;
StringGrid1.Canvas.Textrect(ar,ast,[tfWordBreak]);
end;
begin
if (ARow=3) then
begin
if ACol=2 then
begin
RotText(true,StringGrid1.Canvas,Rect,C_TEXT)
end
else if Acol=3 then
begin
RotText(false,StringGrid1.Canvas,Rect,C_TEXT)
end
else Default;
end else Default;
end;
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
Geändert von Bummi (14. Sep 2012 um 10:01 Uhr)
|
|
Zitat
|