TEdit mit Dezimalzahlformatierung
-
- Beiträge: 17
- Registriert: So 7. Jan 2007, 00:09
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Berlin
TEdit mit Dezimalzahlformatierung
Werte Lazarusgemeide,
bin auf der Suche nach einer "TEdit" Komponente, bei der man das einzugebende Format einstellen kann. Auf z.B. 99,99. Die TMaskEdit gefällt mir nicht so, da dort die Eingabe wie diese möglich ist: 9_,99. Oder ich habe das Format dort nur nicht richtig eingestellt ... Vielleicht weiss jemand Rat.
Vielen Dank im Voraus.
bin auf der Suche nach einer "TEdit" Komponente, bei der man das einzugebende Format einstellen kann. Auf z.B. 99,99. Die TMaskEdit gefällt mir nicht so, da dort die Eingabe wie diese möglich ist: 9_,99. Oder ich habe das Format dort nur nicht richtig eingestellt ... Vielleicht weiss jemand Rat.
Vielen Dank im Voraus.
-
- Beiträge: 144
- Registriert: So 22. Aug 2010, 16:06
- OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
- CPU-Target: 64bit
- Wohnort: NRW
- Kontaktdaten:
Re: TEdit mit Dezimalzahlformatierung
TFloatSpinEdit unter dem Tab "Misc" in der IDE sollte etwas für dich sein. Anzahl der Dezimalstellen ist über das Property DecimalPlaces einstellbar.Strathmore hat geschrieben:Werte Lazarusgemeide,
bin auf der Suche nach einer "TEdit" Komponente, bei der man das einzugebende Format einstellen kann. Auf z.B. 99,99. Die TMaskEdit gefällt mir nicht so, da dort die Eingabe wie diese möglich ist: 9_,99. Oder ich habe das Format dort nur nicht richtig eingestellt ... Vielleicht weiss jemand Rat.
Vielen Dank im Voraus.
-
- Beiträge: 17
- Registriert: So 7. Jan 2007, 00:09
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Berlin
Re: TEdit mit Dezimalzahlformatierung
Hallo Live,
bei direkter Eingabe werden die Einschränkungen jedoch nicht eingehalten.
Gruss
bei direkter Eingabe werden die Einschränkungen jedoch nicht eingehalten.
Gruss
-
- Beiträge: 144
- Registriert: So 22. Aug 2010, 16:06
- OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
- CPU-Target: 64bit
- Wohnort: NRW
- Kontaktdaten:
Re: TEdit mit Dezimalzahlformatierung
Alternativ könntest du Tastatureingaben abfangen und alles was kein Return, eine Zahl (oder ein Komma) ist, nicht in das Editfeld schreiben.
Der obere Code erlaubt die Eingaben 0-9 und die Return-Taste. Komma müsstest du evtl selber hinzufügen.
Code: Alles auswählen
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
if NOT (Key in [#08, '0'..'9']) then
Key := #0;
end;
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TEdit mit Dezimalzahlformatierung
Ehrlich gesagt, überprüft er nur Zeichen, die in ASCII enthalten sind (0-127). Da die LCL aber mit UTF-8 arbeitet, sind alle Unicode-Zeichen immer erlaubt.Live hat geschrieben:Der obere Code erlaubt die Eingaben 0-9 und die Return-Taste. Komma müsstest du evtl selber hinzufügen.
Code: Alles auswählen
procedure TForm1.Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
if (Length(UTF8Key) <> 1) or not (UTF8Key[1] in [#08, '0' .. '9']) then
UTF8Key := #0;
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 144
- Registriert: So 22. Aug 2010, 16:06
- OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
- CPU-Target: 64bit
- Wohnort: NRW
- Kontaktdaten:
Re: TEdit mit Dezimalzahlformatierung
Du hast absolut recht, sorrySocke hat geschrieben:Ehrlich gesagt, überprüft er nur Zeichen, die in ASCII enthalten sind (0-127). Da die LCL aber mit UTF-8 arbeitet, sind alle Unicode-Zeichen immer erlaubt.Live hat geschrieben:Der obere Code erlaubt die Eingaben 0-9 und die Return-Taste. Komma müsstest du evtl selber hinzufügen.Funktioniert hingegen besser -- Umlaute können nicht mehr eingegeben werden. Die erlaubten Zeichen müssen noch angepasst werden. Dazu müsste noch eine Überprüfung erfolgen, ob bereits ein Dezimaltrennzeichen eingegeben wurde.Code: Alles auswählen
procedure TForm1.Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char); begin if (Length(UTF8Key) <> 1) or not (UTF8Key[1] in [#08, '0' .. '9']) then UTF8Key := #0; end;

-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: TEdit mit Dezimalzahlformatierung
Nun ich würde das im OnChange-Ereignis lösen. Dann wird bei jeder Veränderung sichergestellt, dass die eingegebenen Zeichen dem gewünschten Format entsprechen.
Aber ehrlich gesagt, reicht mir zumindest FloatSpinEdit.Value. Bei mir wird eingehalten, dass es ein Zahlenformat bleibt ohne Sonderzeichen (momentan habe ich Revision 29147). Habe gerade ausprobiert und festgestellt dass in der 0.9.28 die Sache mit den Sonderzeichen noch geht. Die Reaktion auf die Eingaben ist allerdings manchmal etwas seltsam
.
Aber ehrlich gesagt, reicht mir zumindest FloatSpinEdit.Value. Bei mir wird eingehalten, dass es ein Zahlenformat bleibt ohne Sonderzeichen (momentan habe ich Revision 29147). Habe gerade ausprobiert und festgestellt dass in der 0.9.28 die Sache mit den Sonderzeichen noch geht. Die Reaktion auf die Eingaben ist allerdings manchmal etwas seltsam

Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)