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

Verschieben des sliderbalkens blockieren

 

elcachon
Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 08.12.2011, 16:12     Titel: Verschieben des sliderbalkens blockieren
  Antworten mit Zitat      
Hallo,

Einen slider zu verschieben, gibt es ja eigentlich 3 Möglichkeiten:
1. Verschieben durch Drücken der Arrow - Pfeile(min_step)
2. Max_step = slider through, klicken der Maus in den slider(nicht auf den Balken selbst)
3. Verschieben des Balkens mit der Maus

Mein Probelm:
Habe min_step und max_step definiert--> funktioniert,
wenn ich aber mit der Maus direkt auf den Balken gehen, dann ist das irgendeinen undefinierte Schrittweite.

Weiß jemand wie ich die einstellen kann??
Oder ist es möglich das Verschieben des Balkens, wenn man mit der Maus auf ihn klickt zu blockieren, dass sich nur bei Drücken der Pfeiltasten der slider verschiebt und sonst nicht??

lg elcachon
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.12.2011, 17:43     Titel: Re: Verschieben des sliderbalkens blockieren
  Antworten mit Zitat      
Hallo elcachon,

Wenn man den Slider am Handle ("Balken") bewegt, ehält man keine definierte Schrittweite, sondern kann ihn in der Auflösung der Bildschirm-Pixel positionieren. Wenn man aber z.B. nur ganzzahlige Werte haben möchte, kann man dies in der Callback-Funktion festlegen:
Code:
figure;
uicontrol('Style', 'slider', 'Position', [0, 0, 300, 20], ...
   'Callback', @myCallback);

function myCallback(ObjH, EvenData)
Value = round(get(ObjH, 'Value'));
set(ObjH, 'Value', Value);
 

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

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 12.12.2011, 12:13     Titel:
  Antworten mit Zitat      
Hallo jan,

das hört sich gut an, aber meine Situation ist so, dass ich dem Slider einen festen Vektor vorgegeben habe, und ich auch möchte, dass auch wenn ich den Balken verschiebe, der entsprechende Wert aus dem Vektor übenommen wird und nicht ein Zwischenwert.
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 12.12.2011, 13:53     Titel:
  Antworten mit Zitat      
Moin,

wenn du den Vorschlag von Jan S etwas anpasst, dann kannst du es auch mit deinem Vektor schaffen. Je nach dem wie der Vektor aussieht, müsstest du nur den nächstgelegenen Wert im Vektor finden...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
elcachon
Themenstarter

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 12.12.2011, 15:22     Titel:
  Antworten mit Zitat      
Hallo steve,
habs schon a bissal rumprobiert, aber irgendwie versteh ichs nicht.
Code:

% Mein Vektor, mit dem der Slider vorbelegt wird
handles.volts_div = [0.01 0.02 0.05 0.1 0.2 0.5 1 2 5];

% so möcht ichs lösen!
volts_div_currentA = handles.volts_div(ceil(get(handles.chan_A_Volt_Div_slider,'Value')))


Code:
rundet mir ja auf ganze integer werte und trotzdem funktioniert das nicht so wie es soll!
Bekomme folgende Fehlermeldung
Zitat:

??? Error while evaluating TimerFcn for timer 'timer-62'

Subscript indices must either be real positive integers or logicals.


Wenn ich
Code:
aber direkt im Slider Callback teste
Code:
value = ceil(get(hObject,'Value'))
´
bekomme ich ganze werte!
Also wo liegt der (Denk-) Fehler???

lg elcachon
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: 12.12.2011, 23:18     Titel:
  Antworten mit Zitat      
Hallo elcachon,

Woher kommt denn auf einmal ein Timer-Callback? Ich dachte es geht um einen Slider-UICONTROL?!

Wenn Du den Slider auf einen der Werte in [0.01 0.02 0.05 0.1 0.2 0.5 1 2 5] setzen möchtest, musst Du statt CEIL zu verwenden, denjenigen Wert suchen, der am nächsten an Deinem Slider-Value liegt.

Allerdings ist ein Slider gar nicht geeignet um die Auswahl zwischen 9 Werten zu treffen. Window7 benutzt zwar auch einen Slider, um die Art der Darstellung im Explorer zu wählen. Ich halte das aber für unintuitiv. Ein Slider soll sliden, nicht hoppeln, sonst hieße er ja Hoppler.

Wie wäre es mit einem Satz Radio-Buttons?

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

Forum-Century

Forum-Century


Beiträge: 190
Anmeldedatum: 03.05.11
Wohnort: ---
Version: 7.6.0(R2008a), 7.8.0(R2009a)
     Beitrag Verfasst am: 13.12.2011, 08:46     Titel:
  Antworten mit Zitat      
Hallo Jan,

du bist ja noch spät hier unterwegs! Smile
Ja ich bin wieder vom Slider weggekommen, werd statt dessen wahrscheinlich ein Pull -down Menü verwenden.
Zitat:
Woher kommt denn auf einmal ein Timer-Callback? Ich dachte es geht um einen Slider-UICONTROL?!

Ganz einfach, in meinen Programm befindet sich ein Timer, und der Vektor wird verwendet, um die Volts/Divisor Einstellung eine Input - Channels meines Oszis in der Matlaboberfläche anzupassen!

Lg elcachon
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 - 2025 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.