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

Werte von Chechboxes auslesen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2008, 09:04     Titel: Werte von Chechboxes auslesen
  Antworten mit Zitat      
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 Wink

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)

Ich danke für eurere Unterstützung

Code:

scrsz = get(0,'ScreenSize');
    w = 600;
    h = 140;
   
    h1 = figure('Name','bla','NumberTitle','off','MenuBar','None','Position',[scrsz(3)/2-w/2 scrsz(4)/2-h/2 w h],'Resize','Off');
    bc = get(gcf,'Color');
    d0 = uicontrol('Style','checkbox','String','decision 1',...
    'pos',[10 100 200 20],'parent',h1,'HandleVisibility','off','Backgroundcolor',bc);
    d1 = uicontrol('Style','checkbox','String','decision 3',...
    'pos',[10 60 200 20],'parent',h1,'HandleVisibility','off','Backgroundcolor',bc);
    d2 = uicontrol('Style','checkbox','String','decision 3',...
    'pos',[10 20 200 20],'parent',h1,'HandleVisibility','off','Backgroundcolor',bc);

    uicontrol(gcf,'Style', 'pushbutton', 'String','Ok','parent',h1,'Backgroundcolor',bc,'Position',[400 h/2+20 100 20],...
    'Callback','get(d0,''Value'')');
    uiwait(gcf)
 


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 05.06.2008, 10:19     Titel:
  Antworten mit Zitat      
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?
Code:

myfunhandle = @(hObject, handles)findchk(gcbo,guidata(h1));
 


kompletter Code:
Code:

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',[10 100 200 20],...
               'parent',h1,...
               'HandleVisibility','off',...
               'Backgroundcolor', bc,...
               'UserData',1);
%
box2=uicontrol('Style','checkbox',...
               'Tag','chkDecision_2',...
               'String','decision 2',...
               'pos',[10 60 200 20],...
               'parent',h1,...
               'HandleVisibility','off',...
               'Backgroundcolor',  bc,...
               'UserData',2);
%
box3=uicontrol('Style','checkbox',...
               'Tag','chkDecision_3',...
               'String','decision 3',...
               'pos',[10 20 200 20],...
               '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+20 100 20],...
         '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)
   if get(handles.chkBoxen(i),'Value')
      fprintf('Checkbox_%d wurde ausgewählt\n',get(handles.chkBoxen(i),'UserData'));
   end
end
delete(handles.h1);

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2008, 10:39     Titel:
  Antworten mit Zitat      
Hallo Denny,

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.

Hab vielen Dank für deine Hilfe. Der Tipp mit
Code:

myfunhandle = @(hObject, handles)findchk(gcbo,guidata(h1));
 


war sehr hilfreich.

Gruß
Jörg
 
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.