2016-08-05 4 views
0

Ich erstelle eine Funktion "sng_figureslide", die einen Schieberegler erzeugt, der durch alle bereits erstellten Figuren gleiten kann. Ich muss auf den Schieberegler klicken, um ihn mit den Pfeiltasten zu steuern.Wie mache ich ein Objekt in GUI Matlab aktuell?

Ich frage mich, ob es möglich ist, das Slider-Objekt aktiv zu machen, wenn ich die Funktion aufrufen, so dass ich nicht im Voraus auf den Schieberegler klicken muss.

function sng_figureslide 

figh=findobj('type','figure'); 
figs=numel(figh); 

% if there are one or zero figures, the slider does not appear 
if figs > 1 
    sliderstep = 1/(figs-1); 
else 
    return 
end 

fignumber = cell2mat(get(figh,'Number')); 
sliderfignumber = max(fignumber) + 1; 
figure(max(fignumber) +1) 
set(gcf,'position',[360 190 560 36]); 
set(gcf,'Toolbar','none'); 
a=annotation('textbox',[0.03 0.2 0.1 0.7],'String',num2str(figs)); 

uicontrol('Style', 'slider',... 
    'Min',1,'Max',figs,'Value',figs,... 
    'Position', [80 10 470 20],... 
    'Callback', {@slider1,figh,a,figs,fignumber,sliderfignumber},...  
    'SliderStep', [sliderstep sliderstep]); 
end 

function slider1(hObj,~,figh,a,figs,fignumber,sliderfignumber) 
    Val = round(get(hObj,'Value')); 
    set(a,'String',num2str(Val)); 
    figure(figh(Val)); 
    figure(sliderfignumber); 
end 

Außerdem denke ich, dass diese Funktion für viele Leute ziemlich nützlich ist, also fühlen Sie sich frei, sie zu benutzen.

+0

Sie können ein 'WindowKeyPressFcn' einstellen, um Pfeilereignisse zu erfassen und den Schieberegler für Sie zu aktualisieren. – Suever

Antwort

1

Wenn Sie die uicontrol erstellen, speichern Sie das Handle dazu. Übergeben Sie diesen Griff dann zurück an die Funktion "uicontrol".

h = uicontrol (....) 
uicontrol (h); 
+0

Ihre Lösung war ziemlich einfach und unkompliziert. Tx! Manchmal sehe ich einfach nicht die einfachen. –