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

Dynamische GUI

 

AlBa
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.11.20
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 25.11.2020, 10:17     Titel: Dynamische GUI
  Antworten mit Zitat      
Moin,

ich möchte einen Teil meiner GUI dynamisch anpassen. Wenn ich eine Auswahl mit einem Radiobutton treffen soll ein Panel mit anderen Auswahlmöglichkeiten aufgehen. Dazu habe ich das folegende Skript geschrieben. Es funktioniert soweit, aber ich möchte natürlich noch das abgewählte Panel löschen, mit all seinem Inhalt. Das bekomme ich aber nicht hin. Ich verstehe da leider auch nicht, wie ich den Objekthandler ansprechen kann, da ich das Objekt in einer anderen Funktion erstellt habe.

Code:

close all
clear f


function geo_quader (obj)
h = guidata (obj);
printf("Quader2!");

 geopanel = uipanel ('parent', h,
                    'position', [0.1 0.1 0.5 0.5]);      

end;

function geo_trapezoid (obj)
h = guidata (obj);
printf("Trapezoid!");

 geopanel = uipanel ('parent', h,
                    'position', [0.1 0.1 0.8 0.5]);      

end;

function setgeo ()

% hier soll geopanel samt aller childobjekte gelöscht werden


end;



f = figure ("toolbar", "none");
                     
bg = uibuttongroup(f,
                     'Visible','on',
                     'Title','Geometrie:',
                     'Position',[0.04 0.75 0.92 0.24],
                     'SelectionChangedFcn', @setgeo);
                     
                     
geo_quader = uicontrol (bg,'style', 'radiobutton',
                                    'units', 'normalized',
                                    'string', 'Quader',
                                    'callback', @geo_quader,
                                    'position', [0.05 0.09 1 1.1]);
                                   
trapezoid = uicontrol (bg,'style', 'radiobutton',
                                    'units', 'normalized',
                                    'string', 'Trapezoid',
                                    'callback', @geo_trapezoid,
                                    'position', [0.05 0.04 1 0.4]);
 


Besten Dank und Grüße
Alex
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2020, 19:46     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber ich möchte natürlich noch das abgewählte Panel löschen, mit all seinem Inhalt

Wirklich löschen oder kann es reichen, das unsichtbar zu machen?

Zitat:
Das bekomme ich aber nicht hin.

Wie hast du es denn versucht und welche Probleme sind dabei aufgetreten?
Ich würde delete versuchen, oder 'visible' auf 'off' stellen, s.o.

Zitat:
Ich verstehe da leider auch nicht, wie ich den Objekthandler ansprechen kann, da ich das Objekt in einer anderen Funktion erstellt habe.

Ich verstehe nicht mal, was du damit (insbesondere mit "Objekthandler") meinst.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
AlBa
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.11.20
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 26.11.2020, 10:24     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für die schnelle Antwort. Ich möchte die GUIs wechseln können.

Zitat:
Wirklich löschen oder kann es reichen, das unsichtbar zu machen?


Eigentlich wäre ein unsichtbar machen sogar besser. Dann muss ich eben nur prüfen, ob die GUI-Objekte schon erstellt sind, damit ich beim Wechsel zwischen den Ansichten nicht immer neue generiere.

Zitat:
Ich verstehe nicht mal, was du damit (insbesondere mit "Objekthandler") meinst.


Nun wenn ich delete verwende, muss ich das Objekt welches ich löschen möchte ja benennen. Dieses geschieht doch über den Handle, der sowas wie ein Pointer auf das Objekt ist, oder?

Beste Grüße,
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.11.2020, 11:39     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Dann muss ich eben nur prüfen, ob die GUI-Objekte schon erstellt sind, damit ich beim Wechsel zwischen den Ansichten nicht immer neue generiere.

Ich würde stattdessen von Anfang an alle Ansichten generieren und sie nur anfangs evtl. nicht sichtbar machen.

Zitat:
Nun wenn ich delete verwende, muss ich das Objekt welches ich löschen möchte ja benennen.

Ja, dazu musst das Handle in der Funktion zur Verfügung stehen - oder du arbeitest mit Tags.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
AlBa
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.11.20
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 26.11.2020, 14:20     Titel:
  Antworten mit Zitat      
Hallo,

die Idee alle Ansichten zu erstellen und nur die Sichtbarkeit zu ändern finde ich super. Auf diese Weise gehen auch ggf. eingegebene Daten beim Umschalten nicht verloren.

Mit Tags habe ich gut Erfahrungen gemacht, ich glaube das bekomme ich hin.

Besten Dank,
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 28.01.16
Wohnort: ---
Version: 2024a
     Beitrag Verfasst am: 10.03.2024, 15:55     Titel: Panel with auto-reflow
  Antworten mit Zitat      
Hallo,
die einfachste und zugleich eleganteste Lösung ist die Auswahl einer 2-panel-App with auto reflow. Deren Vorlage kann man im App-Designer auswählen.

Dann kann man zum linken Panel noch eine Tab-Group -z.B. am oberen Rand- hinzufügen. Auf den einzelnen Tabs kann man dann jeweils unterschiedliche Eingabelemente unterbringen. Diese bleiben beim Wechsel des Tabs erhalten. Auch kann man die Breite des linken Panels einstellen.
Beim Vergrößern der laufenden App bleibt die horizontale Größe des linken Panels erhalten, während das rechte Panel maximal erscheint. Das ist eine optimale Situation für die Erstellung von Grafiken: Im linken Panel stellt man auf verschiedenen Reitern die Elemente ein während im rechten Panel die jeweils zugehörige Grafik erscheint.
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.