![]() |
Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Hallo, Allerseits.
Ich schon wieder - mit einem neuen Problem: Mit
Delphi-Quellcode:
versuche ich, meine Anwendung dazu zu bewegen, nur Eingaben von '0' bis '9' zu akzeptieren. Bis eben dachte ich auch, das wäre mir gelungen - bis ich aus Versehen auf die Taste ganz links oben kam: ^
procedure TFStart.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if key in [48..57] then begin Edit2.SetFocus; Memo11.Text := Text2; end else begin Edit1.Clear; MessageBeep(1000); end; end; Erstaunlicherweise - zumindest für mich - werden die Anweisungen aus dem if-Block und nicht die aus dem else-Block ausgeführt und es kommt auch noch eine Fehlermeldung. Wie immer bin ich dankbur für Eure Unterstützung. gruß Jürgen [edit=Luckie]Titel geändert. Mfg, Luckie[/edit] |
Re: Probleme mit dem da ==> ^
Hi,
wenn du nur Zahlen von 0 - 9 erlauben möchtest (inkl. Punkt, Komma, Entf., etc) geht es auch so:
Delphi-Quellcode:
Lass dir doch mal den TastenCode anzeigen, dann weist du warum welche Bedingung zutrifft.
if not (key in ['0'..'9',#13,#8, '.' , ',' ]) then key := #0;
MJ |
Re: Probleme mit dem da ==> ^
Würdest du bitte deinem Thread einen aussagekräftigen Titel geben? Danke.
|
Re: Probleme mit dem da ==> ^
Hai gfjs,
ich würde die Prüfung nicht in das KeyUp sondern OnKeyPress Ereigniss schreiben. So oder so hast Du aber ein Problem. Der Anwender kann noch immer beliebige Zeichen aus der Zwichenablage in das TEdit einfügen. |
Re: Probleme mit dem da ==> ^
Zitat:
Schöne Grüße Michael |
Re: Probleme mit dem da ==> ^
@ Luckie
Tut mir leid, aber mir ist kein besserer Titel eingefallen - das Problem ist ja wirklich das da: ^ und ich dachte mein Titel würde das kurz und prägnant zeigen. @ Maja Jessika + Sharky + grips-net Vielen Dank für Eure Hinweise, aber: "Ich bin dann mal weg!" - Aber sobald ich zurück bin, werde ich mich damit befassen. Erst mal Dank an alle und noch einen schönen Tag! |
Re: Probleme mit dem da ==> ^
Zitat:
"Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^" Das wären jetzt mal so zwei mögliche Titel, die mir ohne längeres Nachdenken so einfallen. :? |
Re: Probleme mit dem da ==> ^
*lol* wenn jemand mit oracle was zu tun hat, dann stößt er auch ab und zu auf ein ^, um spezielle zeichen zu maskieren, usw., usw., usw...
darf deine anwendung global nur zahlen empfangen oder willst du das auf edits beschränken!? dafür hätte ich dir eine komponente, die ich mir schon mal passend erzeugt. bei bedarf einfach eine pn schicken, dann kann ich sie hier posten. |
Re: Probleme mit dem da ==> ^
Zitat:
|
Re: Probleme mit dem da ==> ^
Liste der Anhänge anzeigen (Anzahl: 1)
soll ich, soll ich nicht, soll ich, soll ich nicht... :D
hier habt ihr es... wenn ich änderungen vornehmen soll, dann bite eine pn, sonst wird es hier zu OT! [edit] sollte wohl noch als feature dazu sagen, nachdem es keine passende dokumentation gibt: - man kann über die eigenschaft ClearOnEscape steuern, ob das feld beim drücken des esacpe-taste geleert werden soll - und es werden beim einfügen (strg+v) nur zahlen aus dem einzufügenden string entnommen. [/edit] |
Re: Probleme mit dem da ==> ^
So! Jetzt habe ich mir das Ganze noch einmal angeschaut.
Das einzig erfreuliche: Das Einfügen mit Ctrl-v macht keine Probleme - das wird abgefangen, weil ja der Key-Code von 'v' gesendet wird. Was mir absolut schleierhaft bleibt ist, wieso ^ und ´ Probleme machen. Es wird hier ja keine weitere Taste gedrückt, so dass kein virtueller Tastaturcode ins Spiel kommt und der Wert von key ist 94 bzw. 180, sollte also durch "if key in [48..57]" abgefangen werden. Was mir in diesem Zusammenhang noch Probleme macht, sind die virtuellen Tastaturcodes. Ich kann zwar feststellen, ob z.B. Ctrl oder Tab gedrückt wurde, habe aber noch nicht rausgefunden, wie ich das Drücken der Tasten Shift, Ctrl, Alt und AltCltrl abfangen kann. Es wäre schön, wenn Ihr mir weiterhelfen könntet. Gruß Jürgen |
Re: Probleme mit dem da ==> ^
meinst du meine komponente damit!?
|
Re: Probleme mit dem da ==> ^
Glaube ich kaum. Übrigens, die Komponente find ich Klasse, werde ich gleich mal verwenden, ich brauche sowas immer wieder.
:thumb: Sherlock |
Re: Probleme mit dem da ==> ^
Zitat:
|
Re: Probleme mit dem da ==> ^
Zitat:
Link: ![]() |
Re: Probleme mit dem da ==> ^
Zitat:
|
Re: Probleme mit dem da ==> ^
Zitat:
als einzig funktionierende Variante hab ich es hinbekommen das Edit mit einem leeren PopUpMenü zu verknüpfen, gibts da noch eine sauberere Variante? Edit @ s.h.a.r.k: Warum kann ich folgende Zeichen in dein Edit eingeben? - # |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Delphi-Quellcode:
also so gehts
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then begin ShowMessage('Stop!'); end; end; |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
und wenn man auf der tastatur diese List taste drückt?
|
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Zitat:
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = 93 then begin ShowMessage('Stop!'); end; end; |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Demnächst gibt es ein NumberEdit in der VCL, damit dürften sich diese Probleme erledigt haben.
|
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Also man soll nur Zahlen eingeben können?
Ich mach das immer so:
Delphi-Quellcode:
Also in die KeyPress un nich KeyDown
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if not (Key in ['0'..'9'])then Key:=#0; end; |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Und die Zwischenablage?
|
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Delphi-Quellcode:
Das man au immer erst den Holzhammer rausholen muss :lol:
procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean); begin Handled:=true; end; |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Die Variante mit dem Showmessage hatte ich im Übrigen auch schon, die is aber doof.
Ich will ja keine nachricht aufploppen lassen. Da is das mit dem PopupMenü besser finde ich. |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
So, Backspace geht nicht, also müsste #8 mit in die Menge, und über SHIFT-EINFG kann ich immer noch aus der Zwischenablage einfügen.
|
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Delphi-Quellcode:
dann geht auch Shift + Einfg nicht mehr wenn du das meinst
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = 45 then begin ShowMessage(''); // oder sonst irgendwas end; end; |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Jedi installiert?
Wenn ja, dann Komponente TJvValidateEdit nehmen. Properties setzen: CheckChars = 0123456789 DisplayFormat = dfInteger MaxLength (=1) oder MaxValue (=9) einstellen Fertig! MFG Lorenz Nachtrag: Funktioniert auch, wenn man über Strg+V oder rechte Maustaste->Einfügen einen Text einfügt, der Zahlen und Buchstaben enthält. Es werden nur die Zahlen eingetragen. |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Macht richtig Spaß zu lesen, was Euch alles für Tricks einfallen, um die angebotenen Lösungen auszuhebeln.
Bin gespannt, was gegen meine übliche Vorgehensweise spricht....:
Delphi-Quellcode:
procedure TfrmMain.Edit1Exit(Sender: TObject);
begin try StrToInt(Edit1.Text); Except Edit1.Text := '0'; Edit1.SetFocus; Edit1.SelectAll; end; end; Edit: Gerne auch mit StrToFloat... |
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Zitat:
|
Re: Edit Eingabe nur auf Zahlen beschränken, Probleme mit ^
Eine Exception zur Eingabeprüfung? Vielleicht besser so:
Delphi-Quellcode:
procedure TfrmMain.Edit1Exit(Sender: TObject);
var dummy: integer; begin if not TryStrToInt(Edit1.Text, dummy) then begin Edit1.Text := '0'; Edit1.SetFocus; Edit1.SelectAll; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr. |
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