Announcement

Collapse
No announcement yet.

Stringgrid Felder rechtsbündig anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stringgrid Felder rechtsbündig anzeigen

    Ich lese Zahlen aus einer Tabelle in ein Stringgrid. Diese würde ich gerne rechtsbündig anzeigen. Gibts es hier eine Möglichkeit?

    Michael

  • #2
    Hallo Michael

    ich habe das mal auf die ganz einfache Methode gemacht.
    Da im OnDrawCell Ereignis die Dimensionen des Rechtecks
    zurückgeliefert wird, in das gezeichnet werden soll,
    berechne ich einfach die Position des Strings und gebe
    ihn dann über Canvas.TextRect aus.

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    StringGrid1.Tag := 0;
    StringGrid1.Cells[1,1] := 'a123456';
    Application.ProcessMessages;

    StringGrid1.Tag := 1;
    StringGrid1.Cells[2,2] := 'a12';
    Application.ProcessMessages;

    StringGrid1.Tag := 2;
    StringGrid1.Cells[3,3] := 'a22';
    Application.ProcessMessages;
    end;

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
    Rect: TRect; State: TGridDrawState);
    Var tw,tc:Integer;
    begin
    tw := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[Col,Row]);
    Case StringGrid1.Tag of
    0: tc := Rect.Right - tw - 2; // Text rechtsbündig
    1: tc := Rect.Left + (Rect.Right - Rect.Left - tw) div 2; // Text zentrieren
    2: tc := Rect.Left + 2; // Text linksbündig
    End;
    StringGrid1.Canvas.TextRect(Rect,tc,Rect.Top+2,Str ingGrid1.Cells[Col,Row]);
    end;

    Gruß ... Uw

    Comment

    Working...
    X