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

Gesamten "handle."- Inhalt löschen

 

Dave86
Forum-Century

Forum-Century


Beiträge: 113
Anmeldedatum: 31.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2009, 08:26     Titel: Gesamten "handle."- Inhalt löschen
  Antworten mit Zitat      
Hallo zusammen,

gibt es eine Möglichkeit den gesamten Inhalt eines "handles." zu löschen? Ich habe eine GUI und möchte mittels einem "Reset" button neben den Eingaben auch den Inhalt des "handles." löschen. Geht es nur "stückchenweise", z.B.:

Code:
clear(handles.x)
clear(handles.y)


oder gibt es u.U. eine Möglichkeit, den gesamten Inhalt des "handles." zu löschen, z.B.:

Code:


Vielen Dank im Voraus!

Dave
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 03.06.2009, 08:48     Titel:
  Antworten mit Zitat      
Moin,

klar geht das. Du kannst die Variable handles komplett löschen
Code:
allerdings kann das zu einigen Problemen führen, da du in der handles-Struktur nicht nur die Werte gespeichert hast, sondern auch die handles zu den einzelnen GUI-Elementen. Ich denke mal du möchtest mit deinem RESET alle Eingaben aus der GUI löschen?! Dann probier folgendes:
Code:
% alle Eingaben aus den Edit-feldern löschen:
set(findobj('type','edit'),'String','');


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Dave86
Themenstarter

Forum-Century

Forum-Century


Beiträge: 113
Anmeldedatum: 31.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2009, 09:34     Titel:
  Antworten mit Zitat      
Hi Alex,

vielen Dank für die schnelle Antwort. Jetzt hab ich endlich eine Funktion, die mir mehrere "Edits" oder "RadioButtons" zurücksetzt und ich nicht jedes einzelne Element "von Hand" löschen muss...! Danke!
Zum Hintergrund meiner GUI: ich mache Eingaben, lasse mir ein paar figures plotten und im nächsten Schritt möchte ich mittels einem "reset" Button alles löschen um u.U. einen neuen Plot mit anderen Werten durchzuführen. Jetzt ist mit vorhin aufgefallen, dass wenn ich andere Werte eingebe, und MatLab mir diese ins "handle." überträgt und diese danach plotten will, anscheinend noch alte Werte drin sein können, deren Vektorlänge kleiner oder größer ist und wie die der neuen. Dementsprechend kommt eine Fehlermeldung.
Habs jetzt wie folgt gelöst:
Code:

set(findobj('Style','edit'),'String','');
set(findobj('Style','radiobutton'),'Value',0);
 

und am Ende meiner Pushbutton Callback
Code:

Mir ist jedoch aufgefallen, dass MatLab meckert, wenn ich
Code:

guidata(hObject,handles)
 

im Quellcode in dieser Callback lasse. Ich hab nun die Zeile eliminiert und es geht einwandfrei!
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 03.06.2009, 09:43     Titel:
  Antworten mit Zitat      
Aber wie gesagt, ich würde das Löschen der handles-Sturktur nach Möglichkeit vermeiden...
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Dave86
Themenstarter

Forum-Century

Forum-Century


Beiträge: 113
Anmeldedatum: 31.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2009, 09:45     Titel:
  Antworten mit Zitat      
ok, ich werds im Hinterkopf behalten, dass es zu Problemen führen kann...!
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 10.06.2009, 10:54     Titel:
  Antworten mit Zitat      
Hallo,

ein paar Anmerkungen:
- clear handles löscht die handles-Variable, nicht aber die handles, die in den einzelnen Feldern gespeichert sind
- clear(handles.x) müsste eigentlich eine Fehlermeldung liefern, da clear einen String (Namen der Variablen) erwartet
- die Kombination mit set/findobj ist gut, alternativ könnte man sich auch mehr Arbeit machen (wenn z.B. nicht alle Radiobuttons sondern nur bestimmte gesetzt werden sollen), wie z.B.
Code:
set([handles.rbFarbe, handles.rbWert], 'value', 0)

oder, wenn man seine Tags gut vergibt (z.B. immer rbName1, rbName2 für Radiobuttons):
Code:
fields = fieldnames(handles);
radioButtons = fields(strmatch('rb', fields));
set(radioButtons, 'value', 0)
 


Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
jackmckinley
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.11.09
Wohnort: Rostock
Version: R2009b
     Beitrag Verfasst am: 27.01.2010, 10:31     Titel:
  Antworten mit Zitat      
Hallo Matlab-Freunde,

geht dieser Code:
Code:
set(findobj('Style','edit'),'String','');


auch nur für vereinzelte Variablen? Ich möchte in meiner GUI nur 2 oder 3Eingabefelder Null setzen!

MfG Erik
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 27.01.2010, 11:04     Titel:
  Antworten mit Zitat      
Hallo,
es geht schon, dazu muss du nur die Suche auf diese 3 Edit-Felder beschränken. Das geht über Reguläre Ausdrücke.

z.B habe ich Tags edtNCOSize, edtCOSize, edtSize
Code:

obj=findobj('Style','edit','-and','-regexp','Tag','edt(.)*Size')
set(obj,'String','');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
jackmckinley
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.11.09
Wohnort: Rostock
Version: R2009b
     Beitrag Verfasst am: 27.01.2010, 11:29     Titel:
  Antworten mit Zitat      
Hallo Denny,

kannst du mir das ein wenig genauer erklären?
Meine Variablen heißen s2a und s3a und sollen von einen Wert - meistens ein negativer und ein positiver Winkel - auf 0 gesetzt werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 27.01.2010, 12:51     Titel:
  Antworten mit Zitat      
Hallo

GUI-Objekte habe Eigenschaften, nach welchen du mit findobj suchen kannst.
Wenn du mit Variablennamen s2a,s3a, auch Tag-Bezeichner von Edit-Felder meinst.

dann so:
Code:

% suche String, welches s am Anfang hat und a -- am Ende
% in der Mitte kann es 2 oder 3 haben
obj=findobj('Style','edit','-and','-regexp','Tag','s[23]a')
set(obj,'String','');
 


schau dir die Hilfe zu regexp an, oder einfach im Internet nach Regulären Ausdrücken suchen
Private Nachricht senden Benutzer-Profile anzeigen
 
jackmckinley
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.11.09
Wohnort: Rostock
Version: R2009b
     Beitrag Verfasst am: 27.01.2010, 13:50     Titel:
  Antworten mit Zitat      
Hey Denny,

vielen Dank für die Hilfe. Das funktioniert und bringt mich weiter.

Schönen Tag noch!
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.