Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Edit immer mit 2 Nachkommastellen (https://www.delphipraxis.net/29885-edit-immer-mit-2-nachkommastellen.html)

Hansa 16. Sep 2004 00:55


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:
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;
Wie kann ich dieses Verhalten auf ein Edit übertragen ??

Dax 16. Sep 2004 06:16

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".

Hansa 16. Sep 2004 09:59

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.

CT86 16. Sep 2004 10:08

Re: Edit immer mit 2 Nachkommastellen
 
Hey,
probiers mal so
Delphi-Quellcode:
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;
Müsste so funzen
mfg
CT86

Stevie 17. Sep 2004 14:35

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;

Hansa 17. Sep 2004 15:20

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 00:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz