Autor Beitrag
Kobald
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Fr 14.06.02 21:45 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 307

Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
BeitragVerfasst: 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:

_________________
Alfons Grünewald
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: 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

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
cbs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207
Erhaltene Danke: 1



BeitragVerfasst: Sa 15.06.02 11:51 
ich nehme immer folgenden code:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 307

Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
BeitragVerfasst: 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:

_________________
Alfons Grünewald
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Di 18.06.02 20:43 
du kannst doch auch ganz einfach durch ein bischen Code andere Zeichen beid der Tedit sperren

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
CrazyLuke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: 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?

_________________
"Was kommt vor 'Schmetterlinge im Bauch'? Raupen im A*sch!" (Bastian Pastewka, "Pastewka", Sat1)