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

kommunikation zwischen mehreren GUIs

 

isbjörn

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2009, 09:02     Titel: kommunikation zwischen mehreren GUIs
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine grundlegende Frage zur Übergabe von Variablen zwischen verschiedenen GUIs.
Leider habe ich in den bisherigen Forumseinträgen noch keine Lösung für mein Problem gefunden.

Zum Problem:

GUI1 besteht aus einer Checkbox, einem Editfeld und einem Pushbutton. GUI2 besteht nur aus einem Editfeld.

Aufgabe soll nun sein.

Sobald in GUI1 das Checkboxfeld aktiviert wird, soll das Editfeld in GUI1 ebenfalls aktiv werden (sonst deaktiviert-grau- bleiben).
Wenn dann ein Wert ins Editfeld eingetragen wird, soll dieser nach Drücken des Pushbuttons in das Editfeld von GUI2 übergeben werden.

Wie geht das?
Kann mir hierbei jemand helfen?

Gruß Isbjörn


Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2009, 17:09     Titel:
  Antworten mit Zitat      
Servus isbjörn

Viele Wege führen nach Rom Wink .

Hier einer von vielen:

Code:
function Pushbutton_Callback( hObject, eventdata, handles)
% Hier musst Du statt "GUI2" den Tag Deiner 2. Gui einsetzen
handlesGUI2 = guihandles( findobj( 'Tag', 'GUI2'));

% Statt "editfeldGUI2" den Tag des Editfeldes in Gui2 angeben
% Statt "editfeldGUI1" den Tag des Editfeldes in Gui1 angeben
set( handlesGUI2.editfeldGUI2, 'String', get( handles.editfeldGUI1, 'String'));


Ich hab das jetzt nicht probiert, sollte ansatzweise aber stimmen.

Ich weiß natürlich jetzt nicht ob Gui1 geschlossen werden soll nachdem Gui2 geöffnet wurde, oder eine etwaige Eingabe in Gui2 auf Gui1 übertragen werden sollte.

Je nach Ablauf, würde es u.U. auch Sinn machen mit appdata zu arbeiten.
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
isbjörn

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2009, 09:32     Titel:
  Antworten mit Zitat      
Hallo Martin,
besten Dank für Deinen Vorschlag. Er sah sehr vielversprechend aus. Leider hat er noch nicht zum Erfolg geführt.

Ich hab deinen Code angepasst und unter den Pushbutton der GUI 1 eingetragen und probiert.

% Hier musst Du statt "GUI2" den Tag Deiner 2. Gui einsetzen
handlesGUI2 = guihandles( findobj( 'Tag', 'GUI2figure'));

% Statt "editfeldGUI2" den Tag des Editfeldes in Gui2 angeben
% Statt "editfeldGUI1" den Tag des Editfeldes in Gui1 angeben
set( handlesGUI2.edit2, 'String', get( handlesGUI1.edit1, 'String'));


Als Ergebnis tat sich leider nichts und es kam folgende Fehlermeldung beim Schließen des GUI2 Fensters:

??? Error using ==> guihandles at 70
H must be the handle to a figure or figure descendent.

Error in ==> GUI1>pushbutton1_Callback at 111
handlesGUI2 = guihandles( findobj( 'Tag', 'GUI2figure'));


Was ging schief? Hast du evtl. eine Idee?

Besten Dank

Isbjörn
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2009, 09:44     Titel:
  Antworten mit Zitat      
Servus isbjörn

Die Fehlermeldung verwundert mich nicht.
Nachdem Du Gui2 geschlossen hast, wird sich der pushbutton_Callback schwer tun auf Elemente der Gui2 zuzugreifen.

Um beurteilen zu können, warum sich nichts tat, müsste ich mal Deinen Callback sehen.
Poste doch mal Deine Version von
Code:
% Hier musst Du statt "GUI2" den Tag Deiner 2. Gui einsetzen
handlesGUI2 = guihandles( findobj( 'Tag', 'GUI2figure'));

% Statt "editfeldGUI2" den Tag des Editfeldes in Gui2 angeben
% Statt "editfeldGUI1" den Tag des Editfeldes in Gui1 angeben
set( handlesGUI2.edit2, 'String', get( handlesGUI1.edit1, 'String'));
 

_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
isbjörn

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2009, 12:15     Titel:
  Antworten mit Zitat      
Hallo Martin,

ich habe jetzt den Code in die Callbackfkt. des GUI2-Button geschrieben

Code:

% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
handlesGUI1 = guihandles( findobj( 'Tag', 'GUI1figure'));
set( handles.edit2, 'String', get( handlesGUI1.edit1, 'String'));
 


und es funktioniert soweit. Ich habe jetzt so zu sagen einen "Update"-Button in GUI2. Danke schonmal an dieser Stelle.

Ginge es aber auch, dass bereits beim Drücken des Buttons von GUI1 der Wert ins Editfeld von GUI2 übertragen wird, ohne noch einen zusätzlichen Button in GUI2 zu drücken?

Gruß Isbjörn
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2009, 12:22     Titel:
  Antworten mit Zitat      
Servus isbjörn

Wenn Gui2 "offen" ist wenn Du Deinen Button in Gui1 drückst, funktioniert das genauso wie Du es mit dem Button in Gui2 gemacht hast.

Wenn Gui2 aber erst mit drücken vom Button in Gui1 geöffnet wird, musst Du es anders lösen.
Stichwort: Output_function
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
isbjörn

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2009, 13:48     Titel:
  Antworten mit Zitat      
Hi Martin,

Besten Dank für Deine Hilfe. Jetzt hab ich es soweit verstanden und werde das mit der Output_function einmal ausprobieren.

Gruß isbjörn
 
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 - 2024 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.