![]() |
rechtsbündige Eingabe im Stringgrid
Hi,
ich habe ein Stringgrid und die Zahlenzellen sollen da rechtsbündig mit abschließenden Nullen usw. angezeigt werden. Das geht auch. Aber folgendes ist mir noch nicht gelungen : direkt bei der Eingabe eine rechtsbündige Darstellung zu erreichen. Geht das relativ einfach, oder wird es kompliziert ? Dann bleibt nämlich alles wie gehabt. Momentan steht im OnDrawCell folgendes :
Delphi-Quellcode:
Im Endeffekt steht alles wie gewollt in den Zellen, aber eben noch nicht bei der Eingabe.
DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT);
|
Re: rechtsbündige Eingabe im Stringgrid
Zitat:
Du brauchst zunächst mal Zugriff auf TStringGrid.InplaceEditor. Da dieses Property protected ist muss man tricksen:
Delphi-Quellcode:
Wenn du nun dem Editor eine WindowsMessage schickst,
type
TSG = class(TStringGrid) end; // ein Beispiel, wie man mit einem Timer den Inhalt des Editors verändern kann procedure TForm1.Timer1Timer(Sender: TObject); var sg : TSG; begin sg := TSG(StringGrid1); if Assigned(sg.InplaceEditor) then sg.InplaceEditor.Text := 'Dummerle'; end; dass er sich rechtsbündig anzeigen soll... |
Re: rechtsbündige Eingabe im Stringgrid
Ich habe mal kurzerhand eine Komponente draus gemacht :
Delphi-Quellcode:
Zum testen dient vorerst das hier :
unit sgExt;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids; procedure Register; type TsgExt = class(TStringGrid) private { Private-Deklarationen } FAlignment: TAlignment; procedure SetAlignment(Value: TAlignment); published { Public-Deklarationen } property Alignment: TAlignment read FAlignment write SetAlignment; end; implementation // {$R *.dfm} procedure TsgExt.SetAlignment (Value: TAlignment); begin FAlignment := Value; RecreateWnd; end; procedure Register; begin RegisterComponents('Eigene', [TsgExt]); end; end.
Delphi-Quellcode:
Ich habe das Alignment umgestellt und lande auch an dieser Stelle. Die Frage ist nun, wie es weiter geht. Die ShowMessage kommt schon mal und die Frage ist, wie es auszuwerten ist.
procedure TForm1.sgExt1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin if sgExt1.Alignment = taRightJustify then showmessage ('12345'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz