Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   Prism Edit Problem (https://www.delphipraxis.net/131538-edit-problem.html)

GoTo0815 26. Mär 2009 14:13

Re: Edit Problem
 
Hallo,

ich möchte nur zu DaddyHs Beitrag hinzufügen, dass eine Prüfung auch im OnExit stattfinden kann.
Persönlich empfinde ich dass für den User manchmal als angenehmer, wenn nicht wegen eines Vertippens gleich eine Fehlermeldung kommt.

Einfaches Beispiel ausgehend davon, dass Edit.Maxlength gesetzt wurde. Habe den Code hier geschrieben und hoffe dass er keine Fehler enthält

Delphi-Quellcode:
procedure EditExit(Sender: TObject);
var i: integer;
    s: string;
begin
  Try
    Edit.Text := IntToStr(StrToInt(Edit.Text));
  Except
    // Hier kann die Fehlermeldung rein und eventuell das Setzen eines gültigen Standardtextes z.B: Edit.Text := '000001';
  End;
  if Length(Edit.Text) < Edit.Maxlength then
  Begin
    // führende Nullen schreiben
    s:='';
    for i:= 1 to Edit.MaxLength - length(Edit.Text) do s:=s+'0';
    Edit.Text := s + Edit.Text ;
  End;
end;
Schöner wäre es natürlich allgemeingültig für alle Edits das Edit zu ersetzen durch 'with sender as TEdit do' Habe das aber der einfachheit halber hier weggelassen

Nersgatt 26. Mär 2009 14:20

Re: Edit Problem
 
Wenn man diese Version verwenden möchte, würde ich lieber TryStrToInt verwenden, als mutwillig Exceptions zuzulassen.
Delphi-Quellcode:
var i : Integer;
begin
  if not tryStrToInt(Edit1.Text, i) then
  begin
   showMessage('Zahlen eingeben');
  end;
end;
Wobei man bei den StrToInt-Dingern beachten muss, dass z.B. '$A' akzeptiert wird.
Daher würde ich doch die einzelnen Zeichen prüfen, wie oben schon vorgeschlagen, oder eine Komponenten verwenden, die nur die Eingaben aktzeptiert, die erlaubt sind (z.B. TMaskEdit).

Gruß,
Jens

GoTo0815 26. Mär 2009 15:06

Re: Edit Problem
 
Hallo,
kannte ich noch gar nicht!
Ich lerne nie aus :-)

Danke!

Hendrik


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Seite 2 von 2     12   

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