Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TEdit Eigenschaft


Kobald - Fr 14.06.02 21:45
Titel: TEdit Eigenschaft
Gibt es eine Eigenschaft von TEdit, mit der man in einem Edit-Feld NUR Zahlen eingeben kann?
Oder muss ich mir da selbst was schreiben :?


Alfons-G - Fr 14.06.02 23:07

Du kannst an Stelle eines normalen Edit-Feldes ein MaskEdit verwenden. Allerdings musst Du eine feste Maske mit Dezimalpunkt usw. vorgeben. Du kannst für eine Stelle nur festlegen, ob dort eine Zahl stehen muss, oder ob dort auch ein Leerzeichen sein darf. Frei platzierte Dezimalpunkte sind nicht möglich.

Wenn Du so was benötigst, musst Du Dir selbst was basteln und des KeyDown-Ereignis, bzw. die Windows-Botschaft WM_KEYDOWN abfangen.

:idea:


Arakis - Sa 15.06.02 00:59
Titel: SpinEdit
Nimm doch einfach SpinEdit unter "Beispiele". Damit kannst du aber nur Integer-Werte eingeben, d.h. keine Kommazahlen

Bis dann
user defined image


cbs - Sa 15.06.02 11:51

ich nehme immer folgenden code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
function EditKeyPressFloat(Text: string; Key: Char; curPos: Integer): Char;
begin
  Result:= Key;
  if not (Key in ['0'..'9''-'','#8]) then Result:= #0;
  if (Key = '-'and (Length(Text) <> 0then Result:= #0;
  if Key = ',' then begin
    if Pos(',', Text) <> 0 then Result:= #0;
    if Length(Text) = 0 then Result:= #0
    else if Text[curPos] = '-' then Result:= #0;
  end;
end;

function EditKeyPressInteger(Text: string; Key: Char): Char;
begin
  Result:= Key;
  if not (Key in ['0'..'9''-'#8]) then Result:= #0;
  if (Key = '-'and (Length(Text) <> 0then Result:= #0;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  Key:= EditKeyPressFloat(Edit1.Text, Key, Edit1.SelStart);
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  Key:= EditKeyPressInteger(Edit2.Text, Key);
end;


in Edit1 kann man real-Zahlen eingeben und bei edit2 nur integer zahlen


Kobald - Mo 17.06.02 16:55

Vielen Dank für eure Hilfe !!!! :P

Ich habs jetzt mal mit SpinEdit gelöst. Funktioniert perfekt da man nur ganze Zahlen eingeben soll !!

Kobald


Alfons-G - Mo 17.06.02 23:09

Das funktioniert auch mit Maskedit gut, wenn Du nur ganze Zahlen brauchst. Falls die Zahl z.B. maximal 5-stellig sein soll, gibst Du einfach '99999' als Maske vor.

:idea:


webmaker - Di 18.06.02 20:43

du kannst doch auch ganz einfach durch ein bischen Code andere Zeichen beid der Tedit sperren


CrazyLuke - Sa 24.06.06 19:49
Titel: Re: SpinEdit
user profile iconArakis hat folgendes geschrieben:
Nimm doch einfach SpinEdit unter "Beispiele". Damit kannst du aber nur Integer-Werte eingeben, d.h. keine Kommazahlen

Das ist so nicht korrekt - zumindest nicht bei meiner Version. Über die Pfeilschaltflächen wird der "Increment"-Wert berücksichtigt, bei der manuellen Eingabe dagegen nicht.

Wenn ich das Programm von Delphi aus starte, stürzt das Programm bei Eingabe eines falschen Wertes nach Verlassen des SpinEdits ab mit der Meldung, dass z.B. "2,5" kein gültiger Integerwert ist. Starte ich das kompilierte Programm dagegen separat, erscheint keine Fehlermeldung. Benutze ich nach Eingabe eines falschen Wertes die Pfeilschaltflächen, wird so gezählt, als stände eine Null drin.

Wie kann ich die Eingabe eines ungültigen Wertes verhindern?