WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

KeyPressFcn eines Edit-Feldes

 

Diach
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 20.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2010, 11:44     Titel: KeyPressFcn eines Edit-Feldes
  Antworten mit Zitat      
Guten Morgen!

Ich hab da ein kleines Problem mit meiner GUI. Ich möchte über mehrere Edit-Felder Parameter eingeben und wenn ich nun in "Enter" drücke, soll eine Suchfunktion gestartet werden.
Leider scheit es so zu sein, dass der Inhalt des Edit-Feldes aber zu diesem Zeitpunkt noch nicht auslesbar bzw. leer ist. Wenn ich mit beim drücken von "Enter" den Inhalt des (nicht leeren) Feldes in ein anderes schreiben lassse, dann bleibt es leer. Wenn ich aber mit dem Debugger Zeilenweise durchgehe, geht es Confused

Die Callback Funktion möchte ich nicht benutzen, weil der Suchvorgang nicht beim Verlassen des Feldes mit Tab oder klicken in ein ein anders ausgelöst werden soll.

Hat da jemand von euch ggf. mal einne Lösung entdeckt?

Schöne GGrüße,
Dirk
Private Nachricht senden Benutzer-Profile anzeigen


Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 20.12.2010, 12:26     Titel:
  Antworten mit Zitat      
Hallo Dirk,

ich hoffe, dass ich dein Problem richtig verstanden habe. Du möchtest in einem Editfeld die KeyPressFcn aufrufen und diese soll nur ausgeführt werden, wenn enter gedrückt wird?!

Dann mache es einfach wie folgt:
Code:

function edit1_KeyPressFcn(hObject, eventdata, handles)
if strcmp(eventdata.Key,'return')
   Data = get(hObject,'String'); % daten des Editfeldes edit1
end
 

Über die handles hast du Zugriff auf alle GUI-Objekte und kannst diese zu jeder Zeit verändern oder auslesen...

Ich hoffe dies war wonach du gesucht hast...

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Diach
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 20.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2010, 13:49     Titel:
  Antworten mit Zitat      
Hallo Marco.

meine KeyPressFunction sieht so aus:
Code:
   function edit_key_press(~,k)
        k = k.Key;
        if strcmp(k,'return')
            search_click;
        end        
    end

search_click ist eine andere Function die aufgerufen wird um die Suche zu starten.
In search_click steht:
Code:
   function search_click(~,~)
        parameter = get(fig1.edit1, 'String');
        ... % hier ist noch mehr code
   end

leider ist "parameter" = '' (leer) obwohl im Editfeld etwas drin steht.
Ich glaube ich habe es im Prinzip so gemacht wie du es beschrieben hast, oder?

Schöne Grüße,
Dirk
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 20.12.2010, 16:10     Titel:
  Antworten mit Zitat      
Hey Diach,

jau jetzt weiß ich auch was du meinst. Dies ist auch wieder ein gutes Beispiel dafür wie langsam die GUI ist... setze mal bevor du deinen String vom Objekt auslesen willst ne pause ein

Code:

function search_click(~,~)
        pause(0.001)
        parameter = get(fig1.edit1, 'String');
        ... % hier ist noch mehr code
   end
 


Die Objekte brauchen ne Zeit bis sie gesetzt sind...

Falls das auch noch nicht die Lösung ist versuch mal findobj zu benutzen...
Code:

parameter = get(findobj(hFig,'Style','Edit','Tag','edit1'),'String');
 


MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Diach
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 20.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2010, 16:20     Titel:
  Antworten mit Zitat      
Hehehe.

Ich wollte gerad schreiben, dass ich auch eine Antwort gefunden hab. Ich dachte, dass der Inhalt erst gesetzt wird, wenn man des Edit-Feld verlässt und dann hab ich halt mit uicontrol(h) den Focus auf ein anderes Edit gesetzt und dann wieder zurück. Aber es klappt auch nur so:
Code:
   function edit_key_press(~,k)
        k = k.Key;
        if strcmp(k,'return')
            uicontrol(fig1.edit1);
            search_click;
        end        
    end


Auf jeden Fall vielen Dank für die Hilfe Smile

Schönen Tag noch,
Dirk
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.