![]() |
Re: Stringgrid-Zellen rechtsbündig
Delphi-Quellcode:
Aktiviere mal das Ereignis OnDrawCell im Objektinspektor und setze dann den
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin // Alle Spalten rechtsbündig WriteTextAligned(TStringGrid(Sender).Canvas, Rect, taRightJustify, TStringGrid(Sender).Cells[Acol, ARow]); end; obigen Code ein. So geht es bei mir. |
Re: Stringgrid-Zellen rechtsbündig
Hast Du Dir mal die von mir gepostete Unit angesehen?
|
Re: Stringgrid-Zellen rechtsbündig
Zitat:
Das, was die Prozedur :
Delphi-Quellcode:
im Prinzip macht, das macht bei mir die Prozedur sgRechts und die wird im OnDrawCell des Grids aufgerufen (noch). Siehe #1.
WriteTextAligned
Darum gehts aber nicht. Es geht darum diese Eigenschaft dem Stringgrid beizubringen. An Source gibts kaum mehr was zu zeigen. Der Vollständigkeit halber :
Delphi-Quellcode:
Rest siehe #1. Ich kann ja auch den Stringgrid-Zellen ohne große Umwege direkt Zahlenwerte übergeben. Das geht ja alles. Aber ich kriege die Zellwerte (sofern numerisch) eben nicht dazu, dass sie rechtsbündig in den Zellen stehen. Außer ich gehe bei jedem Grid hin und behandele das im OnDrawCell. Langsam wird das OnDrawCell unübersichtlich. Man schaue sich das mal an :
TExtStringGrid = class(TStringGrid)
private FCellInteger : integer; ... public property CellInteger[ACol, ARow : integer] : integer read GetCellInteger write SetCellInteger; end; ... function TExtStringGrid.GetCellInteger(ACol, ARow: integer): integer; begin GetCellInteger := FCellInteger; end;
Delphi-Quellcode:
Das muss langsam mal 1. entflechtet, übersichtlicher und 2. wartbarer gemacht werden. Denn obwohl ich schon beim Bestücken der Zellen weiss, wie die formatiert werden sollen, ob es integer, real oder sonstwas ist, gehe ich momentan über den Umweg der Spaltennummern.
procedure Tfrm.sgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); const IsChecked : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); var DrawState: Integer; begin inherited; if (ARow >= sgArtNr.FixedRows) and (ACol >= sgArtNr.FixedCols) then with sgArtNr do begin if (ACol in KommaCols) then sgKommaRechts(sgArtNr, Rect, ACol, ARow) else if (ACol in RechtsCols + ZahlenCols + MinusCols) then sgRechts(sgArtNr, Rect, ACol, ARow) else if (ACol in CheckBoxCols) then sgZentriert(sgArtNr, Rect, ACol, ARow); EditObject := TEditObject (Objects [ACol,ARow]); ... noch über 100 Zeilen end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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