Verfasst am: 05.06.2008, 09:04
Titel: Werte von Chechboxes auslesen
Hallo zusammen,
ich arbeite zwar schon ein Weilchen mit MATLAB, bei der Programmierung von GUIs bewege ich mich jedoch noch auf recht dünnem Eis
Hier mein Problem: Ich habe ein relativ komplexes Skript geschrieben, in dem vom Anwender verschiedene Entscheidungen getroffen werden müssen. Dies erfolgt momentan durch setzen der Variablen im Skript vor dem Programmstart. Jetzt möchte ich dies gern durch kurze Dialogboxen ersetzen. Im konkreten Fall handelt es sich um ein Fenster, welches drei Checkboxen und einen "OK"-Button enthält. Wenn man auf den "OK"-Button drückt, möchte ich gern wissen, welche Checkboxen gewählt sind und welche nicht. Eine Anmerkung: Ich erstelle meine Dialoge nicht mit GUIDE sondern möchte sie in mein bestehendes Skript einbauen.
Hier mein aktueller (nicht funktionierender Code zu dem Problem)
Hallo,
hab ein wenig mit deinem Code herumexperimentiert und es scheint zu funktionieren.
Ich kenne mich leider sehr schlecht mit function_handles
und deswegen weiß ich nicht ob es so ein Konstrukt wirklich erlaubt sei?
function chk()
scrsz = get(0,'ScreenSize');
w = 600;
h = 140;
%
h1 = figure('Name','chk',...
'NumberTitle','off',...
'MenuBar','None',...
'Position',[scrsz(3)/2-w/2 scrsz(4)/2-h/2 w h],...
'Resize','Off');
bc = get(gcf,'Color');
%
% vergib auch ein Tag, um die Elemente auch dann wieder zu finden
box1=uicontrol('Style','checkbox',...
'Tag','chkDecision_1',...
'String','decision 1',...
'pos',[1010020020],...
'parent',h1,...
'HandleVisibility','off',...
'Backgroundcolor', bc,...
'UserData',1);
%
box2=uicontrol('Style','checkbox',...
'Tag','chkDecision_2',...
'String','decision 2',...
'pos',[106020020],...
'parent',h1,...
'HandleVisibility','off',...
'Backgroundcolor', bc,...
'UserData',2);
%
box3=uicontrol('Style','checkbox',...
'Tag','chkDecision_3',...
'String','decision 3',...
'pos',[102020020],...
'parent',h1,...
'HandleVisibility','off',...
'Backgroundcolor', bc,...
'UserData',3);
%
% definiere function handle
myfunhandle = @(hObject, handles)findchk(gcbo,guidata(h1));
% und überegebe diesen an Button uicontrol(h1,...
'Style','pushbutton',...
'Tag','butOk',...
'String','Ok',...
'Backgroundcolor',bc,...
'Position',[400 h/2+2010020],...
'Callback',myfunhandle);
%
handles = guihandles(h1);
handles.h1 = h1;
%
% ich würde alles checkboxen handles % zusaätzlich in einem array speichern % um leichter zu überprüfen welche boxen gewählt wurden
handles.chkBoxen = [box1,box2,box3];
%
% handles in gui ablegen guidata(h1,handles);
%
% Callback-Funktion, wenn ok-button gedrückt wird function findchk(hObject,handles)
for i=1:length(handles.chkBoxen) ifget(handles.chkBoxen(i),'Value') fprintf('Checkbox_%d wurde ausgewählt\n',get(handles.chkBoxen(i),'UserData'));
end end delete(handles.h1);
ich habe den Code auch ausprobiert. Bei mir funktioniert er ebenfalls. Ich muss mich auch mal schlau machen, was es mit den handles functions auf sich hat und wie das genau funktioniert. Für meine Zwecke recht deine Hilfe jedoch vollkommen aus.
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
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.