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

Panels unsichtbar machen

 

wami2007
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 08:55     Titel:
  Antworten mit Zitat      
hallo,

der threat ist schon etwas älter, dennoch aktuell.
Die Frage ist jetzt, wenn ich die Panels übereinander gelegt hab und das Unterste ausblende, werden alle anderen Panels, die darauf positioniert sind, ebenfalls ausgeblendet. Wie kann ich dies umgehen?
bisher hab ich nur als Lösungsansatz, die Panels getrennt zu positionieren und dann manuel an die Position zu verschieben und einzublenden, sprich visible "on"
jemand ne Idee?
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.07.2015, 09:54     Titel:
  Antworten mit Zitat      
Hallo wami2007,

Bitte öffne einen neuen Thread für eine neue Frage. Andernfalls wird der "beantwortet"-Status sinnfrei und man weiß nicht mehr, zu welcher Frage die Antworten gehören. Danke.

Bitte erklären dann auch explizit, was "die Panels übereinander gelegt" bedeutet und welches daqnn "das Unterste" ist. Was heißt "darauf positioniert" und was ist "getrennt zu positionieren"? Was heißt "manuel an die Position zu verschieben"?

Erzeugst Du das GUI per Code oder in GUIDE? Welche Matlab Version verwendest Du?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
wami2007
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 10:49     Titel:
  Antworten mit Zitat      
hallo Jan S,

ok ... ist jetzt offen, denk das Thema kann ich jetzt hier weiterführen ?
Arbeite mit GUIDE.
Matlab 2014a

- "manuel an die Position verschieben" bedeutet, ich drück mit der linken Maustaste auf das Panel und ziehe es an die angegebene stelle und lasse es los
- "die Panels übereinander gelegt" bedeutet, befinden sich in GUIDE auf identischer Position
- "unterste" ist das Panel, das zuerst an der Stelle war
-"darauf positioniert" bedeutet ich führe Schritt "manuel an die Position verschieben" durch und danach Schritt "die Panels übereinander legen"

um das Ganze abzukürzen und evnt zu vereinfachen will ich mit den folgenden Codezeilen einfach nur 2 Panels an identischer Stelle nacheinander durch drücken eines pb "Panel1" und pb "Panel2" sichtbar erscheinen lassen.

drücke pb "Panel1"

Code:
set(handles.Panel1.'Visible','on');
set(handles.Panel2.'Visible','off');


drücke pb "Panel2"
Code:
set(handles.Panel2.'Visible','on');
set(handles.Panel1.'Visible','off');



etwas ist grundlegen falsch?
Danke
Private Nachricht senden Benutzer-Profile anzeigen
Gesplittet: 07.07.2015, 11:17 Uhr von Jan S
Von Beitrag Panel im GUI durch drücken eines Buttons ausblenden aus dem Forum GUIs
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.07.2015, 11:22     Titel:
  Antworten mit Zitat      
Hallo wami2007,

Zitat:
ok ... ist jetzt offen, denk das Thema kann ich jetzt hier weiterführen ?

Nein, mit "Bitte öffne einen neuen Thread für eine neue Frage." meinte ich, dass Du einen neuen Thread öffnen sollst. Ich habe den alten Thread nun geteilt, aber ich muss mir dann auch einen neuen Titel für Deine Frage ausdenken.

Zitat:
Code:
set(handles.Panel1.'Visible','on');
set(handles.Panel2.'Visible','off');

Nach "handles.Panel1" muss ein Komma kommen, kein Punkt.

Hast Du denn den Eindruck, es wäre etwas grundlegend falsch?

Hilft es per uistack das gewünschte Panel in den Vordergrund zu holen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
wami2007
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 12:36     Titel:
  Antworten mit Zitat      
hallo,

gute Idee!
funktioniert jedoch nicht, es geschieht nichts anderes als zuvor!
Das komma hatte ich in meinem Code.

anbei ein einfaches Beispiel, hoffe das hilft weiter

Tab.zip
 Beschreibung:

Download
 Dateiname:  Tab.zip
 Dateigröße:  4.15 KB
 Heruntergeladen:  427 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.07.2015, 22:13     Titel:
  Antworten mit Zitat      
Hallo wami2007,

Verwende ml den Debugger und schaue Dir an:
Code:
get(handles.Reiter1)
get(handles.Reiter2)

Der Reiter1 ist ein Child der TabGroup, während Reiter2 ein Child von Reiter1 ist. Wenn also Reiter1 auf 'Visible', 'off' gestellt wird, werden auch alle seine Children versteckt. Wahrscheinlich sollder Reiter2 aber ebenfalls ein Child der TabGroup sein, oder?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
wami2007
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2015, 07:29     Titel:
  Antworten mit Zitat      
sehr vielen Dank, jetzt bin ich ein gutes Stück weiter.
jetzt nur noch eine Frage Wink

jetzt hab ich den Code wie folgt ergänzt
Code:

% --- Executes on button press in Tab1.
function Tab1_Callback(hObject, eventdata, handles)

posreiter2=get(handles.Reiter2,'Position');
set(handles.Reiter1,'parent',handles.Tabgroup);
set(handles.Reiter2,'Visible','off');
set(handles.Reiter1,'Visible','on');
set(handles.Reiter1,'Position',[posreiter2]);

% --- Executes on button press in Tab2.
function Tab2_Callback(hObject, eventdata, handles)

posreiter2=get(handles.Reiter2,'Position');
set(handles.Reiter2,'parent',handles.Tabgroup);
set(handles.Reiter2,'Visible','on');
set(handles.Reiter1,'Visible','off');
set(handles.Reiter2,'Position',[posreiter2]);


warum muss ich die Position übergeben, wenn ich das nicht mache, verschiebt er den Reiter?
gibt es eine elegantere Methode?

Dankeschön
Gruß
edit winkow: BBcode muss aktiviert sein damit die code umgebung klappt
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.07.2015, 14:37     Titel:
  Antworten mit Zitat      
Hallo wami2007,

Die handles.Reiter - Objekte sind im Fig-File definiert. Dort ist auch die Größe und der Parent festgelegt. Dies dynmaisch im Callback innerhalb des M-Files zu ändern ist ziemlich unsauber.
Da der eine Reiter als uipanel des anderen definiert worden ist, bezieht sich auch seine Größe relativ zu diesem. Wenn man dann den Parent ändert, passt auch die Größe nicht mehr.

Beste Lösung: GUI aufräumen, indem mit GUIDE die UIPANELs gleich richtig definiert werden und nicht erst im M-File umgebogen werden müssen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
wami2007
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2015, 14:41     Titel:
  Antworten mit Zitat      
danke, das wars zu dem Thema denn Wink
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.