Verfasst am: 12.03.2013, 15:22
Titel: Position aller Objekte beim starten der GUI auslesen
Hallo liebe Community,
gibt es eine Möglichkeit, die Position aller Objekte beim starten der GUI in geordneter Art und Weise (Struktur, Cell Array, o.a.) abzuspeichern?
Des Weiteren stehe ich vor folgendem Problem: Wenn die gesamte GUI maximiert wird. möchte ich, dass sich die vorhanden Elemente dynamisch mit verändern. (Bsp.: Button1 ist immer links oben und hat immer die gleiche Größe; unabhängig von der Größe der GUI)
Das habe ich nun so gelöst, dass ich von jedem Objekt (Buttons, Editfelder, Panels,...) eine CreateFunction erstellt habe in denen folgender Code steht (am Beispiel eines Buttons) :
Verfasst am: 12.03.2013, 16:29
Titel: Re: Position aller Objekte beim starten der GUI auslesen
Hallo n.force,
Die handles sind alle in der ResizeFcn erreichbar, deshalb ist die Verwendung von GLOBALs eine unnötige Verkomplizierung. Da man von GLOABLs sowieso besser ganz absieht, würde ich das unbedingt weglassen.
Zitat:
gibt es eine Möglichkeit, die Position aller Objekte beim starten der GUI in geordneter Art und Weise (Struktur, Cell Array, o.a.) abzuspeichern?
Das kommt darauf an, was "Objekte" und "beim Start und "abspeichern" bedeutet. Es wäre ineffizient, wenn ich zu viel errate.
Ich verstehe das Ziel des geposteten Codes nicht. Hier wird in der CreateFcn nur der Handle gespeichert, aber der ist doch bereits im handles Struct vorhanden. Besser wäre es doch, die Größe des Objektes zu speichern, damit "[x,y,w,h]" auch irgendwie definiert werden kann.
Welche Fehlermeldung bekommst Du denn? Wenn wir sie nicht sehen, können wir nich herausbekommen, woran es liegt.
function figure1_ResizeFcn(hObject, eventdata, handles) % hObject handle to figure1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.popupmenu_sense_type_1,'String','Es geht')
Ich verstehe das Ziel des geposteten Codes nicht. Hier wird in der CreateFcn nur der Handle gespeichert,
Genau, als globale Variable, damit ich sie in der resizefcn benutzen kann.
Mir ist klar, dass es sicher eine viel bessere Lösung gibt. Aber so konnte ich die Fehlermeldung umgehen.
Zitat:
Das kommt darauf an, was "Objekte" und "beim Start und "abspeichern" bedeutet.
"Objekte": Buttons, Panels, Edit Felder,...
"beim Start": eigentlich nach jedem resize Vorgang und halt beim kompilieren meiner GUI
"abspeichern": Ich brauche zu jedem Objekt die Positionsdaten. Als CellArray wäre gut, da ich hier Strings und sonstige Datentypen gleichzeitig speichern kann.
Es wäre echt toll, wenn du mir weiterhelfen könntest.
Sollte noch etwas unklar sein, frag ruhig.
zum dem Fehler deine Handles sidn wohl leer, weil du ja globale Objekte verwendest, solltest aber GUIDATA, stattdessen verwenden
Einstellungen und Berechtigungen
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.