![]() |
Edit immer mit 2 Nachkommastellen
Ich habe hier ein Stringgrid mit 2 Nachkommastellen. Ich kann also 2 Nachkommestellen eingeben und fertig. Ich wollte das nun auf ein TEdit übertragen, aber es geht nicht. 8) Wie muß der Code geändert werden ?
Delphi-Quellcode:
Wie kann ich dieses Verhalten auf ein Edit übertragen ??
procedure TfrmTest.sgTestDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); procedure WriteText(StringGrid: TStringGrid; ACanvas: TCanvas; const ARect: TRect; const Text: string); const DY = 2; var S: array[0..255] of Char; begin with Stringgrid, ACanvas, ARect do begin ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), nil); end; end; procedure Display(StringGrid: TStringGrid; const S: string); begin WriteText(StringGrid, StringGrid.Canvas, Rect, S); end; var s : string; begin inherited; if (ACol in [1,3..7]) then Display(sgTest, sgTest.Cells[ACol, ARow]) end; |
Re: Edit immer mit 2 Nachkommastellen
Musst du gar nicht: In der JVCL gibt es bereits FloatEdits, die nicht mehr als eine bestimmte Anzahl an Nachkommastellen "durchlassen".
|
Re: Edit immer mit 2 Nachkommastellen
Was soll ich mit der JVCL ? :shock: Wenn es schon in einem Stringgrid geht, dann wird es mit einem Edit ja wohl auch hinzukriegen sein. Wie man an dem Source sieht, habe ich dazu das OnDrawCell Ereignis verwendet. Das gibts nun aber beim Edit nicht. Außerdem handelt es sich um eine eigene Komponente, die nicht fast alles so macht wie gewünscht (siehe Fremdkomponenten) sondern genau das, was ich will. Eben bis auf die 2 Dezimalstellen. Wenn es geht mache ich die auch noch in den OI rein, damit auch das einzustellen ist, mit 2 als Default-Wert.
|
Re: Edit immer mit 2 Nachkommastellen
Hey,
probiers mal so
Delphi-Quellcode:
Müsste so funzen
var v:Integer; s: String;
begin v := 1.43245; Str(v:6:2, s); // die 2 steht für die Nachkommastellen Edit.Text := s; end; mfg CT86 |
Re: Edit immer mit 2 Nachkommastellen
Kannst auch das hier versuchen (nicht sehr ausgiebig getestet):
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var SelStart: Integer; begin try SelStart := Edit1.SelStart; Edit1.Text := Format('%.2f', [StrToFloat(Edit1.Text)]); Edit1.SelStart := SelStart; except end; end; |
Re: Edit immer mit 2 Nachkommastellen
Thx, aber das einfachste ist, das OnExit des Edits zu verwenden und dann noch FloatToStr. Im Onchange sieht das ganze etwas seltsam aus und es ist auch nicht nötig, das bei jedem Tastendruck aufzurufen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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