Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Edit Feld definieren (https://www.delphipraxis.net/206192-edit-feld-definieren.html)

andloer 28. Nov 2020 10:09

Edit Feld definieren
 
Guten Morgen,

kurze Frage zu der Edit Komponente.
Die Caption des Feldes ist zu beginnt gefüllt mit 'Bitte eintragen!', bei EditClick wird alles markiert und bei KeyPress dürfen nur Zahlen kommen.

Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Wohnflaeche := StrtoFloat(Edit1.Text);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If not(key in [#48..#57,#8,#44]) then key :=#0;
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.SelectAll ;
end;
Problem an der Sache ist, dass es nur funktioniert, wenn ich direkt Zahlen eingebe.. wenn ich den Inhalt lösche macht er mit eine Fehlermeldung. Bei Edit.Clear macht er mir auch eine Fehlermeldung.
Vermute weil ich einen String durch das löschen eintrage, was ich ja nicht darf?

Jemand eine Lösung parat?

Freundliche Grüße und schönes Wochenende

Uwe Raabe 28. Nov 2020 11:35

AW: Edit Feld definieren
 
Du sagst jetzt nichts über deine Delphi-Version, aber in einem halbwegs aktuellem Delphi kannst du das mit den TEdit-Eigenschaften erreichen:

-> Die Caption des Feldes ist zu beginnt gefüllt mit 'Bitte eintragen!'
Das 'Bitte eintragen!' muss in
Delphi-Quellcode:
TextHint
anstatt
Delphi-Quellcode:
Text
.
Delphi-Quellcode:
Text
leer lassen.

-> bei EditClick wird alles markiert
Delphi-Quellcode:
AutoSelect
muss
Delphi-Quellcode:
True
sein. Ist auch Standard.

-> bei KeyPress dürfen nur Zahlen kommen
Delphi-Quellcode:
NumbersOnly
auf
Delphi-Quellcode:
True
setzen.

Letzteres funktioniert nur mit ganzen Zahlen ohne Komma. Alternativ ginge auch ein
Delphi-Quellcode:
TMaskEdit
und eine entsprechende Eingabemaske.

himitsu 28. Nov 2020 19:14

AW: Edit Feld definieren
 
Ja klar, beim Löschen (und auch Clear) steht nur noch ein Leerstring drin und der lässt sich nunmal nicht in einen Float umwandeln.

PS: es gibt auch unzählige Möglichkeiten "ungültige" Zeichen dennoch einzutragen
* DEL (rechts löschen), Erase (Links löschen), XCut (Ausschneiden)
* Einfügen (Strg+V, Einfg, Kontextmenü)
* uvm.



Delphi-Referenz durchsuchenTryStrToFloat
Delphi-Referenz durchsuchenStrToFloatDef
...


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:48 Uhr.

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