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

Callbacks für selbst erstelle Elemente

 

BlackDice
Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 08.12.20
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 23.04.2021, 10:02     Titel: Callbacks für selbst erstelle Elemente
  Antworten mit Zitat      
Moin zusammen,
ich habe mal wieder ein Problem mit dem ich nicht weiter komme. Ich möchte mit CheckBoxen Graphen ein- uns ausblenden. Die Checkboxen erstelle ich so:
Code:
           delete (app.TanDelta_CheckBox)
            app.TanDelta_CheckBox = [];
            for v = 1:app.Spinner.Value
                app.TanDelta_CheckBox(v) = uicheckbox('Parent',app.Panel,'Position',[10,20,34,22],'Text',char(9675),'Value',1,'ValueChangedFcn',@(TanDelta_CheckBox,event) TanDelta_CheckBoxValueChanged(app));
            end




Das Plotten der Graphen habe ich erstmal so geschrieben. Dies ist erstmal nur ein Beispiel. Im späteren Programm sind x und y Achse Werte von einem Messgerät.
Code:
       function Value(app)
            v = app.Spinner.Value;
            app.TanDeltaPlot(v) = plot(app.UIAxes,(1:10),randn(10,1));
            hold(app.UIAxes,'on')
        end




Den Callback der CheckBoxen sieht so aus:
Code:
       function TanDelta_CheckBoxValueChanged(app)
            if get(app.TanDelta_CheckBox,'Value') == 1
                app.TanDeltaPlot.Visible = 'on';
            else
                app.TanDeltaPlot.Visible = 'off';
            end
        end


Ich bekomme es nicht hin dass die erste CheckBox den ersten Graphen ein- und ausblendent, die zweite CheckBox den zweiten Graphen und so weiter. Kann mir da jemand einen Tipp geben? Muss ich für jede Messung ein CallBack schreiben?

Viele Grüße
Fabian
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.04.2021, 14:35     Titel:
  Antworten mit Zitat      
Hallo,

du musst v an den Callback übergeben und entgegennehmen, also an beiden Stellen
Code:
TanDelta_CheckBoxValueChanged(app, v)

und v dann im Callback auf app.TanDeltaPlot(v) zugreifen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDice
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 08.12.20
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 23.04.2021, 14:47     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
also an beiden Stellen


Das verstehe ich nicht. Was meinst du mit beiden Stellen?

Mein Callback sieht jetzt so aus:
Code:
       function TanDelta_CheckBoxValueChanged(app,v)
            if get(app.TanDelta_CheckBox,'Value') == 1
                app.TanDeltaPlot(v).Visible = 'on';
            else
                app.TanDeltaPlot(v).Visible = 'off';
            end
        end


Damit übernehme ich die Variable v oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.04.2021, 16:13     Titel:
  Antworten mit Zitat      
Hallo,

du musst das an beiden Stellen machen, also auch hier:
Code:
'ValueChangedFcn',@(TanDelta_CheckBox,event) TanDelta_CheckBoxValueChanged(app, v));


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDice
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 08.12.20
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 23.04.2021, 19:04     Titel:
  Antworten mit Zitat      
OK danke,
habe das jetzt so geändert:

Code:
function Plot(app)
            % TanDelta Messungen anzeigen
            delete (app.TanDelta_CheckBox)
            app.TanDelta_CheckBox = [];
            for v = 1:app.Spinner.Value
                       app.TanDelta_CheckBox(v) = uicheckbox('Parent',app.Panel,'Position',[10,20,34,22],'Text',char(9675),'Value',1,'ValueChangedFcn',@(TanDelta_CheckBox,event) TanDelta_CheckBoxValueChanged(app,v));
               
            end
        end
       
        function Value(app)
            v = app.Spinner.Value;
            app.TanDeltaPlot(v) = plot(app.UIAxes,(1:10),randn(10,1));
        end
       
        function TanDelta_CheckBoxValueChanged(app,v)
            if get(app.TanDelta_CheckBox(v),'Value') == 1
                app.TanDeltaPlot(v).Visible = 'on';
            else
                app.TanDeltaPlot(v).Visible = 'off';
            end
        end


Wenn ich die CheckBox ab oder auswähle passiert nichts. Auch keine sichtbare Fehlermeldung. Ich kann nur über die Lautsprecher ein "boing" hören.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.04.2021, 21:07     Titel:
  Antworten mit Zitat      
Hallo,

da kann ich dir mal wieder nur das empfehlen, was ich auch machen würde: debuggen. Insbesondere überprüfen, welche Codeteile wann erreicht werden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.