Verfasst am: 22.11.2018, 14:59  Â
Titel: Werteanpassung bei Objekten erstellt im Appdesigner
  Â
Hallo liebe Matlab-Gurus,
ich beschäftige mich zur Zeit mit dem Appdesigner in Matlab. Ich habe ein paar Checkboxen erzeugt und schreibe - bei Wertänderung - den neuen Zustand in ein Zustands_Array, welches im Workspace liegt. Soweit so gut: Lesen und Schreiben des Arrays funktioniert.
Nun möchte ich das Zustands_Array - welches ja die Zustände der Checkboxen beinhaltet - auch von außerhalb beeinflussen und das ganze eben dann visuell mit den Checkboxen darstellen. (alles in einer zyklisch aufgerufenen Funktion)
Die Zuweisung einzeln funktioniert für jede Checkbox:
app.CheckBox_1.Value = Zustands_Array(1);
Da ich noch mehr Checkboxen einbauen muss erscheint es mir praktikabler mein Vorhaben mit einer for Schleife umzusetzen. Dazu möchte ich zuvor die jeweiligen Checkboxes auslesen und in ein Checkbox_Array schreiben und dann in der for Schleife jedem Checkbox_Array - Element das Element in dem Zustands_Array zuweisen. beide Array haben die selbe Dimmension.
Dazu der folgende Code:
Code:
% Laden der Struktur auswahl aus dem Workspace
Zustands_Array = evalin('base','Zustands_Array');
% Auslesen der Objekte vom Typ "uicheckbox" (ist ja ne App!)
Checkbox_Array = app.findobj('Type', 'uicheckbox');
% Zuweisung Checkbox aktuelle Werte for i = 1:20
app.Checkbox_Array(i).Value = Zustands_Array(i);
end
Zusätzlich noch: eval(in) ist immer unschön. Bei App Designer kann man schön eigene Eigenschaften ("properties") definieren, um die eigenen Daten innerhalb der App abzuspeichern.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
die Checkboxen als Array von Objekten filtern zu lassen. Beim Erstellen der grafischen Oberfläche mit Appdesigner wird von der Programmierumgebung automatisch ein Code angelegt (eben das Erstellen der Objekte). Dieser lässt sich nicht verändern. Die Properties Tag und Type werden auch von der Programmierumgebung vergeben (oder eben leer gelassen). Deshalb bekommt man mit dem findobj(...) eine Struktur mit allen erstellten Objekten zurück. Ein Anpassen der Tag Einträge ist in der App nicht möglich (zu mindest über den Editor). Ein erweitertes Editormenü zur Bearbeitung der Objekteigenschaften lässt sich nur über Matlab (Workspace) öffnen und ändern. Nach anderen Eigenschaften kann ich nicht filtern, da diese bei den Objekten identisch sind.
Hab ich etwas übersehen, gibt es doch die Möglichkeit die handles auszulesen (so ähnlich wie bei GUIDE) und die Eigenschaften von einer Auswahl von Objekten ohne großen Programmieraufwand zu ändern?
Vielen Dank im voraus.
@Harald ja das stimmt, mit eval(in) ist es etwas unschön, allerdings benötige ich für mein Projekt den Workspace ("base") zum Austausch von den Zuständen ^^
_________________
     Verfasst am: 23.11.2018, 16:27  Â
Titel:
  Â
Hallo,
unser Vorschlag sollte an sich gleichwertig mit dem sein, was du geschrieben hast, nur dass der händische Teil wegfällt.
Ansonsten ist mir einiges nicht klar:
Zitat:
(zu mindest über den Editor)
Meinst du damit jetzt den Code View von App Designer oder den "normalen" Editor?
Zitat:
Ein erweitertes Editormenü...
Welches "Editormenü" meinst du?
Zitat:
allerdings benötige ich für mein Projekt den Workspace ("base") zum Austausch von den Zuständen ^^
Das sollte sich eleganter lösen lassen.
Bei dem bisherigen Code kannst du Zustands_Array als Eingabeargument der App übergeben und in der StartupFcn als Property abspeichern und von dort aus auch wieder abfragen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.