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

Slider Spezifisch machen

 

guguli
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2013, 16:44     Titel: Slider Spezifisch machen
  Antworten mit Zitat      
Hallo zusammen,

ich hab in meiner GUI ein SelectionChangeFcn wo drin radiobutton zum wählen sind. nun will ich die Slidern in der GUI jenach auswahl des Radiobuttons darstellen.
Soll heißen, wenn ich z.B button 1 wähledann sollen nur slider x und y benutzbar werden und beim Auswahl von radiobutton 2 die Slider x und z.

Kann mir einer sagen ob das möglich ist?
THX
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 18.09.2013, 17:01     Titel:
  Antworten mit Zitat      
du kannst doch beim radiobutten die visibity eingenschaft des sliders ändern. das würde ich jedenfalls versuchen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2013, 17:07     Titel:
  Antworten mit Zitat      
HI danke für die antwort. Aber wie kann ich denn das machen??
also ich hab so meine Radiobuttons implementiert:
Code:

function B_SelectionChangeFcn(hObject,eventdata, handles)
 
   
if hObject == handles.A
....
else
if  hObject == handles.B
...
 


Wie kann ich denn jetzt da an die Slider ran kommen???
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: 18.09.2013, 21:15     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie kann ich denn jetzt da an die Slider ran kommen???

Genauso wie an jedes andere Objekt in einer GUI, mit handles.tag.

Die mit set zu verändernden Eigenschaften wären 'visible' oder, meines Erachtens noch besser, 'enable' auf 'off' - z.B.

Code:
set(handles.slider1, 'Enable', 'off')


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2013, 11:32     Titel:
  Antworten mit Zitat      
danke,.
ABer wenn ich jezt eine Slider auf off setze, so bleib sie auch off auch wenn ich ein anderen radio button auswähle.
ich dachte ich setzt da erst mal alle Slider auf on, aber wie kann ich denn mit handle.alleslider definieren???

THX
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: 19.09.2013, 11:40     Titel:
  Antworten mit Zitat      
Hallo guguli,

Mir wird das Problem nicht klar. Wie heißen denn die Slider?
Code:

function B_SelectionChangeFcn(hObject,eventdata, handles)
 
if hObject == handles.A
  set([handles.Slider1, handles.Slider2], 'enable', 'on');
  set(handles.Slider3, 'enable', 'off');
else  % kann wohl weggelassen werden: elseif  hObject == handles.B
  set([handles.Slider1, handles.Slider3], 'enable', 'on');
  set(handles.Slider2, 'enable', 'off');
end

Oder wie auch immer die Slider heißen.
Du könntest auch einfach per "[handles.Slider1, handles.Slider2, handles. Slider3]" zunächst alle Slider auf 'off' setzen und danach nur die entsprechenden wieder auf 'on'. Oder umgekehrt. Ganz wie es Dir gefällt.

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

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2013, 12:05     Titel:
  Antworten mit Zitat      
Hi, ja aber ich dachte an einer eleganteren Lösung, so dass ich nicht alle Slider da auflisten brauche.
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: 19.09.2013, 12:32     Titel:
  Antworten mit Zitat      
Hallo,

MATLAB kann viel, aber es kann keine Gedanken lesen. Daher muss etwas, das 'off' gestellt wurde, auch wieder 'on' gestellt werden, wenn man das denn möchte.
Einen einfacheren Weg sehe ich nicht, außer wie von Jan schon angedeutet die Handles zusammenzufassen.

Grüße,
Harald
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: 19.09.2013, 16:30     Titel:
  Antworten mit Zitat      
Hallo guguli,

Wenn der Code läuft, wird ihn keiner mehr anschauen. Wenn er klar formuliert und gut dokumentiert ist, lässt er sich leicht debuggen und erweitern. Wenn überflüssiges weggelassen wird, läuft der Code auch schnell.
Wozu möchtest Du dann "eleganten" Code schreiben?

Du könntest in der OpeningFcn oder CreateFcn die Handles zusammenfassen:
Code:
handles.AllSliders = [handles.Slider1, handles.Slider2, handles.Slider3];

Später kannst Du dann die vektorisierte Form von GET anwenden:
Code:

function B_SelectionChangeFcn(hObject,eventdata, handles)
 
if hObject == handles.A
  set(handles.AllSlider, 'enable', {'on'; 'on'; 'off'});
else
  set(handles.AllSlider, 'enable', {'on'; 'off'; 'on'});
end

Siehe http://www.mathworks.com/help/matlab/ref/set.html unter "set(H,pn,MxN_pv)".

Dies kann man übrigens auch für mehrere Properties gleichzeitig verwenden:
[code]set([H1, H2], {'Property1', 'Property2'},
{'Value1_H1', 'Value2_H1'; 'Value1_H2', 'Value2_H2'});
Ich finde dies aber weniger übersichtlich. Die Geschwindigkeit ist etwa gleich, aber das Zeichnen der Objekte benötigt so viel mehr Zeit, dass dies hier sowieso nicht wichtig ist, zumal der lesende Mensch bei GUIs ja der limitierende Faktor ist.

Ich vermeide in meinem Code SET mit Cell Argumenten nach Möglichkeit, da ich den expliziteren Code übersichtlicher finde. Wenn ich aber den 'Value' von 400 Togglebuttons erhalten oder setzen möchte, ist SET mit CELL-Argument praktisch (Minesweeper, Icon-Editor, etc).

Gruß, Jan
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.