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

Mit Slidern (Scrollbars) Fenster verändern (Figure)

 

Robert
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 14.11.08
Wohnort: Istanbul
Version: 2010b
     Beitrag Verfasst am: 21.11.2008, 10:21     Titel: Mit Slidern (Scrollbars) Fenster verändern (Figure)
  Antworten mit Zitat      
Hallo miteinander,

ich programmiere gerade an einer GUI und das Fenster in Standardgröße wird langsam voll. Mit der Property 'Position' kann ich das Fenster ja schön vergrößern, allerdings geht das dann über den Bildschirmrand hinaus, wenn ich es ausführe.
Kann ich das nicht irgendwie mit Slidern/Scrollbars steuern?
Quasi so wie im Bearbeitungsmodus, genau so brauch ich das Smile

Gibt es eine Einstellung, dass das automatisch abläuft, oder muss man sich das programmieren? (naja, letzteres ist sicher nicht kompliziert, als Anfänger ist man da aber gleich überfordert...)

Hab im Forum schon nach Ähnlichem gesucht, aber nichts gefunden. Ihr könnt mir gern einfach nen Verweis auf einen alten Thread geben!

Beste Grüße
Robert
Private Nachricht senden Benutzer-Profile anzeigen


hadi
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 06.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2008, 20:03     Titel:
  Antworten mit Zitat      
Hi!
Von einer automatisierten Lösung weiß ich nichts (lass mich aber gern belehren Wink )
Wenn ich sowas brauch, mach ich es in etwa so:
Code:
hf=figure('Position',[500 400 500 400]);
hcontainer=uipanel('parent',hf,'units','pixels','position',[0 20 2000 390],'Bordertype','none');
uicontrol('style','slider','parent',hf,'position',[0 0 500 20],'Min',0,'max',2000-500,'value',0,'callback',{@slider_Callback});
for count=1:20
    uicontrol('Style','pushbutton','parent',hcontainer,'Position',[(2000-100)*count/20 200 50 30],'String',num2str(count))
end

function slider_Callback(source,eventdata)
    set(hcontainer,'Position',[-get(source,'Value') 20 2000 390])
end

Schöne Grüße, Hadi
Private Nachricht senden Benutzer-Profile anzeigen
 
Robert
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 14.11.08
Wohnort: Istanbul
Version: 2010b
     Beitrag Verfasst am: 25.11.2008, 18:15     Titel:
  Antworten mit Zitat      
Hallo Hadi,

danke für deinen "Input". Hab mir schon gedacht, dass das mit nem Panel gehen müsste, das man dann verschiebt. Hab jetzt noch ein bisschen rumspielen müssen, bis ich das soweit in meine Oberfläche eingearbeitet hatte, aber jetzt funktionierts Smile

Der Trick ist nämlich, dass man sich das Figure im Bearbeitungsmodus schön groß macht und dann beim Ausführen, zum Beispiel in der Open Function (weiß jetzt grad nicht genau wie die heißt...), das Fenster auf die gewünschte Größe verkleinert.

Coole Sache!
Danke nochmal, Grüße
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
Robert
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 14.11.08
Wohnort: Istanbul
Version: 2010b
     Beitrag Verfasst am: 27.11.2008, 10:16     Titel: Mit Mausrad srollen??
  Antworten mit Zitat      
Hallo nochmal an alle!

Nachdem das jetzt mit dem Slider klappt, stellt sich die nächste Frage:
Kann man den Slider auch mit dem Mausrad / Scrollrad bedienen (ansteuern)?
Mir ist aufgefallen, das das komplette Matlab nicht das Mausrad nützt... Schade eigentlich. Gibts da ne Einstellung dafür?

Grüße
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2008, 11:54     Titel:
  Antworten mit Zitat      
Hallo,

du kannst die Eigenschaften der Figure
Code:

   WindowButtonDownFcn
   WindowButtonMotionFcn
   WindowButtonUpFcn
   WindowScrollWheelFcn
mit Callback-Funktionen belegen.

Code:
set(gcf,'WindowScrollWheelFcn',@meineFunktion)


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Robert
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 14.11.08
Wohnort: Istanbul
Version: 2010b
     Beitrag Verfasst am: 27.11.2008, 14:25     Titel:
  Antworten mit Zitat      
ok, danke erstmal.
Bei mir sieht das jetzt so aus:

Code:

function slider3_Callback(hObject, eventdata, handles)
set(handles.uipanel11,'Position',[0 -get(handles.slider3,'Value') 217 100]); %das ist Zeile 1019


function figure1_WindowScrollWheelFcn(hObject, eventdata, handles)
set(gcf,'WindowScrollWheelFcn',@slider3_callback);
 


Problem: Es funktioniert nicht :-/
Fehlermeldung:
??? Input arguement "handles" is undefined.
Error in ==> [...]>slider3_Callback at 1019

Als Matlab Anfänger check ich jetzt noch nicht genau was da miteinander inkompatibel ist...

Grüße
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2008, 15:00     Titel:
  Antworten mit Zitat      
Hallo,

such mal ein bisschen im Forum unter "Callback" herum. Du findest da sicher den einen oder anderen sinnvollen Beitrag.

Ansonsten versuch mal
Code:
set(gcf,'WindowScrollWheelFcn',{@slider3_callback handles});
irgendwo im Code deiner GUI unterzubringen (am besten irgendwo am Ende der Initialisierung). Beachte dass an der Stelle, wo diese Zeile untergebracht ist, handles.uipanel11 und handles.slider3 schon existieren müssen (und mit den richtigen Werten belegt).
Code:
hf = figure(...);
handles.uipanel11 = uipanel(...);
handles.slider3 = uicontrol('style','slider',...);

[...]
set(hf,'WindowScrollWheelFcn',{@slider3_callback handles});
[...]


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Robert
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 14.11.08
Wohnort: Istanbul
Version: 2010b
     Beitrag Verfasst am: 04.12.2008, 12:49     Titel:
  Antworten mit Zitat      
Sodele, habs ne zeitlang liegen lassen und jetzt ganz schnell gelöst Smile
Code:
function figure1_WindowScrollWheelFcn(hObject, eventdata, handles)
a = get(handles.slider3,'Value');
a = a - eventdata.VerticalSrollCount;
set(handles.slider3,'Value',a);
set(hanldes.uipanel11,'Position',[0 -a 217 100];
 


Sicher nicht die professionellste Lösung, aber es funktioniert...

Mfg
Robert
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.