Announcement

Collapse
No announcement yet.

Spalten im StringGrid rechtsbündig

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

  • Spalten im StringGrid rechtsbündig

    Hallo,<br>
    wir versuchen seit längerem, einzelne Spalten im StringGrid (nicht DBGrid!) rechtsbündig darzustellen.<br>
    Bei Nachkommen von TDBCustomGrid gibt es UseRightToLeftAlignmentForField. Gibt es eine ähnliche Methode / Eigenschaft für StringGrids?<br>
    <br>
    Besten Dank im Voraus, Christian<br>

  • #2
    Hi,
    <pre>
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
    Rect: TRect; State: TGridDrawState);
    const
    AlignFlags: array [TAlignment] of Integer =
    (DT_LEFT or DT_VCENTER or DT_WORDBREAK or DT_EXPANDTABS or DT_NOPREFIX,
    DT_RIGHT or DT_VCENTER or DT_WORDBREAK or DT_EXPANDTABS or DT_NOPREFIX,
    DT_CENTER or DT_VCENTER or DT_WORDBREAK or DT_EXPANDTABS or DT_NOPREFIX);
    var s: string;
    begin
    inherited;

    with Rect do
    begin
    Left := Left + 2;
    Top := Top + 2;
    Right := Right - 5
    end;

    s := StringGrid1.Cells[Col, Row];

    if (Row = 0) and (Col < StringGrid1.ColCount) then
    begin
    StringGrid1.Canvas.Font.Style := StringGrid1.Canvas.Font.Style + [fsBold];
    StringGrid1.Canvas.Brush.Color := StringGrid1.FixedColor;
    StringGrid1.Canvas.FillRect(Rect);

    DrawText(StringGrid1.Canvas.Handle,
    PChar(s), Length(s),
    Rect, AlignFlags[taCenter]);
    end
    else
    if (Col = 0) and (Row > 0) and (Row < StringGrid1.RowCount) then
    begin
    StringGrid1.Canvas.FillRect(Rect);
    DrawText(StringGrid1.Canvas.Handle,
    PChar(s), Length(s),
    Rect, AlignFlags[taRightJustify]);
    end;
    end;
    </pre>
    Gruß,<br>
    Markus<p>
    PS: Das ist ein Bsp., das ich immer benutze. Den Code so zu ändern, dass alle Zellen rechtsbündig ausgerichtet werden, sollte kein Problem sein..

    Comment

    Working...
    X