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

handles in GUIs übergeben

 

Falko
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 21.04.2008, 10:34     Titel: handles in GUIs übergeben
  Antworten mit Zitat      
Hallo, leider hat mir die Suche bei diesem Thema nicht viel helfen können.
Es muss doch einen einfachen Weg geben, den handles-struct eines 1. GUIs an einen 2. zu übergeben. Im 1. GUI gebe ich über edit-Fenster die Werte ein und drücke dann auf den Button, der den 2. GUI öffnet. In dem 2. GUI sollen die Werte einfach in Textfelder eingesetzt und ausgegeben werden. Bekomme aber immer die Fehlermeldung:
Reference to non-existent field 'Bu1x'
_________________

Grüße, Falko
Private Nachricht senden Benutzer-Profile anzeigen


tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 21.04.2008, 12:35     Titel:
  Antworten mit Zitat      
Hallo,

mit

Code:
handles = guidata(hObject)


bekommst Du ja den handles-struct des Objektes 'hObject' (sofern dieser erzeugt und upgedated wurde...). In hObject steht in Deinem Fall also einfach der Handle des 1. GUI drin. Diesen Handle kannst Du ja beim Aufruf des 2. GUI mitschicken. Alternativ kannst Du ihn im 2. GUI auch durch

Code:
h = findobj('Tag','TagName_Deines_ersten_GUI')


erhalten. Dazu sollte aber in der root-Ebene die Eigenschaft 'ShowHiddenHandles' auf 'on' gesetzt sein, sonst sieht Dein 2. GUI den Handle des 1. GUI evtl. nicht:

Code:
set(0,'ShowHiddenHandles','on')


Wieder alternativ kannst Du den Handle des 1. GUI auch über z.B.

Code:

in die root-Ebene hängen und im 2. GUI wieder mit

Code:


lesen.

So könntest Du auch den gesamten handles-struct übergeben:

Code:
setappdata(0,'handles_GUI1',handles)


Du siehst, es gibt derlei viele Möglichkeiten.

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 21.04.2008, 12:44     Titel:
  Antworten mit Zitat      
bzgl. des Vorschlages von tompie - Du kannst die Zeile mit "ShowHiddenHandles" sich ersparen, wenn Du FINDALL statt FINDOBJ verwendet.
Code:
h = findall(0,'type','figure','Name','TagName_Deiner_GUI')



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Falko
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 22.04.2008, 09:05     Titel:
  Antworten mit Zitat      
Vielen Dank für eure Antworten!
ich fange mal mit Tompies ersten Vorschlag an.
Ist der Begriff hObject als Platzhalter für den GUI zu verstehen oder ist dieser immer gleich?
Ich habe jetzt im ersten GUI folgendes geschrieben:
Code:
function pushbutton_Ergebnis_Callback(hObject, eventdata, handles)
    Ausgabeblatt; % Öffnen des Ausgabefensters
    handles = guidata(hObject);

mit:
Zitat:
set(handles.text_L1x,'STRING',handles.Bu1x);

möchte ich den Wert Bu1x in das Textfeld L1x schreiben. Diese Anweisung habe ich in der opening-function von GUI2 stehen. Aber der Fehler erscheint immernoch.
_________________

Grüße, Falko

Zuletzt bearbeitet von Falko am 22.04.2008, 09:23, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 22.04.2008, 09:20     Titel:
  Antworten mit Zitat      
"hObject" ist der Handle des Objekts von dem der Callback abgefeuert wurde. Dahinter steht die GCBO-Funktion.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Falko
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 22.04.2008, 10:36     Titel:
  Antworten mit Zitat      
@ outsider:
habe auch deinen Vorschlag getestet. Kriege zwar keine Fehlermeldung, aber auch nichts angezeigt, sprich das Textfeld bleibt leer.
mein Code in der Opening-Fct. von GUI2 lautet
Code:
Bu1x=findall(0,'type','figure','handles.Bu1x','Eingabeblatt');
set(handles.text_L1x,'STRING',Bu1x);


im Command Window lasse ich mir den Wert ausgeben, es erscheint:
Code:
Bu1x =

   Empty matrix: 0-by-1
 

_________________

Grüße, Falko
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 22.04.2008, 10:44     Titel:
  Antworten mit Zitat      
Code:
Bu1x=findall(0,'type','figure','handles.Bu1x','Eingabeblatt');

was ist "Eingabeblatt'?

Falls das der Name von der GUI ist (was in der Title-Leiste angezeigt wird), dann sollte es so sein:
Code:
Bu1x=findall(0,'type','figure','Name','Eingabeblatt');

Falls es sich um ein 'Tag' handelt, dann
Code:
Bu1x=findall(0,'type','figure','Tag','Eingabeblatt');


Aber definitiv hat 'handles.Bu1x' dort nichts zu suchen.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Falko
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 22.04.2008, 11:11     Titel:
  Antworten mit Zitat      
Ja, "Eingabeblatt" heißt mein GUI1. Also muss ich 'Name' in die Befehlszeile eingeben. Aber wie kann ich dann den Wert von handles.Bu1x der Variable Bu1x zuweisen?
_________________

Grüße, Falko
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 22.04.2008, 11:47     Titel:
  Antworten mit Zitat      
Du willst aus einer GUI heraus auf die Handles-Strukt einer anderen GUI zugreifen. Dafür musst Du aus dem Callback einer GUI den Handle von der anderen GUI bestimmen. Dafür benutzt man den Aufruf, den ich Dir geschrieben habe (mit FINDALL). Als Ergebnis bekommst Du den Handle von der GUI, auf die Du zugreifen willst!

Bitte lese genau diesen thread durch.

obendrauf noch den Link:
How do I pass data between GUIs in MATLAB 6.5 (R13)?
http://www.mathworks.com/support/so.....AR8.html?solution=1-1BAR8


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 22.04.2008, 12:07     Titel:
  Antworten mit Zitat      
Hallo,
du kannst dir zusätzlich einfach Video-Tutorial von Doug anschauen:
Das zeigt anschaulich was hObject ist...
http://blogs.mathworks.com/pick/200.....nputs-to-guide-callbacks/

und hier Interaktion zwischen 2 GUIs:
http://www.mathworks.com/matlabcent.....=8616&objectType=FILE
Private Nachricht senden Benutzer-Profile anzeigen
 
Falko
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 23.04.2008, 13:04     Titel:
  Antworten mit Zitat      
Vielen Dank für die Unterstützung - ohne euch wäre ich ganz schön ratlos!!! Smile
_________________

Grüße, Falko
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 - 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.