![]() |
rechtsbündiges Stringgrid
Hi,
ich bin dabei ein Stringgrid, besser gesagt den Inhalt der Zellen, rechtsbündig anzuzeigen. Und zwar mit folgendem Code:
Delphi-Quellcode:
Horizontal gesehen ist es auch rechts, aber sobald ich die Eingabe beendet wandert der Text nicht nur nach rechts, sondern auch nach oben. Er ist also vertikal nicht mehr zentriert. Woran kann das liegen ?
procedure sgRechts (sg: TStringGrid; Rect: TRect; ACol, ARow:Integer);
var st: String; begin sg.Canvas.FillRect(Rect); st := sg.Cells[ACol,ARow]; DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT); end; |
Re: rechtsbündiges Stringgrid
Versuche es mal mit
Delphi-Quellcode:
DT_RIGHT or DT_VCENTER
|
Re: rechtsbündiges Stringgrid
Liste der Anhänge anzeigen (Anzahl: 1)
DT_VCENTER bewirkt nichts !
Habe hier ein Beispiel, das mit einem neuen Projekt und folgendem Code gemacht wurde:
Delphi-Quellcode:
Im Anhang sieht man das Ergebnis. In der letzten Zeile sieht man, wie es aussieht, bevor die Zelle verlassen wird.
procedure sgRechts (sg: TStringGrid; Rect: TRect; ACol, ARow:Integer);
var st: String; begin sg.Canvas.FillRect(Rect); st := sg.Cells[ACol,ARow]; DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT OR DT_VCENTER); end; procedure Tform1.StringGrid1DrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState); begin inherited; if (ACol in [1..3]) then sgRechts(StringGrid1, Rect, ACol, ARow); end; |
Re: rechtsbündiges Stringgrid
Zitat:
Wenn du dir den original code von drawcell anschaust, siehst du, daß der Text immer um 2 Pixel nach rechts und unten versetzt gezeichnet wird. Entweder du veränderts dein rect.top und rect.left auch um +2 oder nutzt inflaterect.
Delphi-Quellcode:
Mfg Frank
procedure sgRechts (sg: TStringGrid; Rect: TRect; ACol, ARow:Integer);
var st: String; begin sg.Canvas.FillRect(Rect); st := sg.Cells[ACol,ARow]; InflateRect(rect,-2,-2); //<<---- DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT); end; |
Re: rechtsbündiges Stringgrid
Thx, Keldorn das wars. :thumb: Habe hier zwar noch anderen Code, der dasselbe macht, aber der jetzige ist besser. Und wegen .NET auch ein @ weniger. :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz