Verfasst am: 08.10.2014, 13:07
Titel: textedit Callback ausschließlich mit Enter
Hallo zusammen,
ich habe in mein GUI mehrere textedit-objekte. Normalerweise wird die jeweiligen Callback-Funktion ausgeführt, wenn man die Enter bzw. die Tabulator-Taste betätigt oder wenn man mit der Maus zu einem andern Textedit springt.
Nun möchte ich, dass die jeweilige Callback-Funktion ausschließlich durchs Drücken der Enter-Taste ausgeführt wird. Gibt es da eine Einstellung dafür?
es ist ein Kassenprogramm. Es gibt 2 Eingabe Felder:
1. Eingabe-Feld: Hier werden die Artikelnr. eingegeben
2. Eingabe-Feld: Hier wird der Name des Kunden eingegeben.
wenn man etwas in das 1. eingabe-Feld getippt hat und aus Versehen auf das 2. Eingabe-Feld klickt, dann wird die Callback-Fcn des 1.Feld bereits ausgeführt und die Artikelnr wird registriert, was ich aber nicht wollte.
Ich habe mit KeyPressFcn folgendes versucht:
Der komplette Code in der Callback-Fcn habe ich in die KeyPressFcn verpackt. Die KeyPressFcn übernimmt also die Rolle der Callback-Fcn. D. h. sobald ich enter drücke, werden die Befehle ausgeführt.
Leider funktioniert es noch nicht richtig. Die Aktuelle Eingabe werden nicht sofort übernommen sondern verzögert. Bsp:
es wurde z.B die Artikelnr. "3" eingegeben => es passiert nichts.
nun wird eine neue Artikelnr. "4" eingebenen => die Artikelnr. "3" wird registriert und nicht die "4"
wie wäre es damit, neben die beiden Textfelder einen Push-Button zu setzen und die Aktion erst dann auszuführen, wenn der Push-Button gedrückt wird?
Der Callback beider Textfelder bliebe leer bzw. würde höchstens die Gültigkeit der Eingabe überprüfen.
ich möchte aber nicht über Pushbutton arbeiten sondern komplett über die Tastatur bzw. Enter-Taste. Die Bedienung zwischen Maus und Tastatur ist manchmal sehr umständlich
Verfasst am: 11.10.2014, 14:52
Titel: Re: textedit Callback ausschließlich mit Enter
skyforce hat Folgendes geschrieben:
Nun möchte ich, dass die jeweilige Callback-Funktion ausschließlich durchs Drücken der Enter-Taste ausgeführt wird.
Das trifft doch aber eingeschränkt zu. Die callback Funktion eines Textfelds wird nach einer Eingabe nur beim Drücken von Enter aufgerufen. Oder wenn nach der Eingabe im Textfeld ohne abschließendes Enter ein anderes Objekt der GUI betätigt wird.
Somit müsstest du der zweite Fall irgendwie gesondert behandelt werden. Aber aktuell fällt mir da auch noch nichts sinnvolles ein.
wie bereits oben erwähnt habe ich wie folgt gelöst:
- Komplette Callback-Fcn des Eingabe-feldes in die Keypressfcn packen (Ausführung sobald Enter gedrückt wird).
- Pause einbauen
- Callback-Fcn des Eingabe-feldes leer lassen
Wie kann ich nun mit den Pfeiltasten zwischen den Eingabefeldern springen?
Ich habe außerdem meine KeyPressfcn erweitert: Sobald man die "Nach Rechts"- Taste drückt, schickt matlab mit hilfe von java.awt.Robot class einen Tab-Befehl
Mehr dazu steht alles hier:
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.