Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: TStringgrid mehrzeiliger vertikaler Text

  Alt 14. Sep 2012, 08: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;
Miniaturansicht angehängter Grafiken
dreh_grid.png  
Angehängte Dateien
Dateityp: zip Project2.zip (3,3 KB, 21x aufgerufen)
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 09:01 Uhr)
  Mit Zitat antworten Zitat