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

Pushbutton

 

CuteyHoney

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2010, 16:14     Titel: Pushbutton
  Antworten mit Zitat      
Hallöchen,

ich hab ein anliegen. und zwar geht es darum, dass ich mehrere Berchnungen in meiner Gui durchführe und eine auf die andere aufbaut.
Ich habe auch mehrere PushButtons eingebaut, die quasi alles in Teilschritten ausrechnen lassen.
wenn der user jetzt aber ganz unten einen betätigt ohne den vorherigen gedrückt zu haben gibt matlab automatisch eine fehlermeldung aus. da es die berechneten daten die ich in dieser rechnung benötige ja noch nicht gibt. kann man durch irgendeinen befehl vorschreiben lassen, bzw. den nutzer drauf aufmerksam machen, dass er erst die push buttons zuvor drücken muss?
oder sollte ich ganz drauf verzichten und nur einen button für alles einbringen?


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.11.2010, 20:48     Titel: Re: Pushbutton
  Antworten mit Zitat      
Hallo CuteyHoney,

Zitat:
oder sollte ich ganz drauf verzichten und nur einen button für alles einbringen?

Ein User-Interface sollte immer so wenige Objekte wie möglich haben. Wenn also sowieso alle Teilschritte nacheinander ablaufen müssen, ist ein einzelner Button hinreichend.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.11.2010, 14:34     Titel:
  Antworten mit Zitat      
Hallo,

Jan hat vollkommen recht!
Willst du es aber unbedingt mit mehreren Buttons realisieren, so kannst du ja z.B. den Button der erst als 2. betaetigt werden darf (button2) erst aktiv machen nachdem der 1. betaetigt wurde:

Code:

set(handles.button2,'Enable','off'); % button inaktiv, mit 'on' ist er aktiv
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
CuteyHoney

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 15:11     Titel:
  Antworten mit Zitat      
set(handles.Abbringen,'Enable','off')

funktioniert bei mir leider nicht
ich kann immer noch den button betätigen. Crying or Very sad
ich habe diesen befehl bei der aktion laden miteingebunden, da mein programm automatisch bei jedem programmstart immer die entsprechenden daten lädt.
wenn ich diesen befehl aber in die opening function mit reinsetze, dann macht er es. aber sollte der weg über laden nicht auch funktionieren?

liebe grüße =)
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 16.11.2010, 15:34     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

ich habe diesen befehl bei der aktion laden miteingebunden

Was heisst aktion laden, ist das eine function?

Und wenn es in der Opening function klappt, dann lass es doch dort. sobald deine Berechnungen erfolgt sind, dann aktivierst du den Button und gut ist.
Jedoch ist es eigentlich egal in welche Funktion des Guis du
Code:

set(handles.button2,'Enable','off');
 

hinsetzt, es sollte immer den Button inaktivieren!

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
CuteyHoney

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 15:49     Titel:
  Antworten mit Zitat      
ja, laden ist eine function, jedoch führt er bei programmstart dort leider nicht den befehl aus Confused
ich habe set jetzt auch im programmstart gelassen, jedoch sobald ich den pushbutton nachdem aktivwerden einmal betätige blendet er sich automatisch wieder aus Crying or Very sad sodass ich wenn ich ihn wieder betätigen will immer den zuvor nochmals betätigen muss
kann man das irgendwie verhindern?

und noch eine frage:

set gibt man ja meist wie folgt ein:

set(handles.PS,'String','0');

wenn die 0 jetzt aber eine zahl sein will, wie lautet der Befehl denn?

set(handles.PS,'Double','0'); ?????
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 16.11.2010, 16:00     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht postest du mal die entscheidenten Zeilen deines GUIS (oder alle wenn es nicht ZUVIELE sind), damit ich einen Eindruck bekomme was ablaeuft.

Zum 2. Problem:
Ich nehme mal einfach an, dass du Text z.B. in ein Textfeld mit dem:
Code:

set(handles.PS,'String','0');
 

schreiben willst? Falls nicht berichtige mich, da du leioder nicht naeher erlaeuterst fuer welches Object du den Set-Befehl verwendest. Allg. lassen koennen nur Strings in Textfelder geschrieben werden, d.h. du muesstest bei zahlen zuvor den die Nummer in ein String umwandeln:
Code:

set(handles.PS,'String',num2str(0));
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
CuteyHoney

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 16:08     Titel:
  Antworten mit Zitat      
also in der opening function setze ich den text im ediz PS auf 0
set(handles.PS,'String','0');

nun soll etwas berechnet werden.
aber diese berechnung darf erst dann ausgeführt werden, wenn diese eingabe in dem edit feld durch den benutzer verändert wurde wurde.

ich hatte angefangen mit dem code:

Code:
function Berechnen_Callback(hObject, eventdata, handles)
clc;
global PS

if PS<=0
    msgbox(meldung,'Eingabe von Wellenleistung überprüfen!','error','non-modal');
end;
 


da PS aber zu diesem zeitpunkt noch ein string ist, vermute ich funktioniert es nicht Question

wie kann man das problem lösen?
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 16.11.2010, 16:32     Titel:
  Antworten mit Zitat      
Hallo,

hier ist so manchen komisch, warum erstellst du eine globale Variable "PS" wenn du doch den Wert aus der Editbox moechtest bzw. auch einlesen kannst?

Mach es so:
Code:

function Berechnen_Callback(hObject, eventdata, handles)

if str2double(get(handles.PS,'String')) <= 0
    msgbox(meldung,'Eingabe von Wellenleistung überprüfen!','error','non-modal');
end;
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
CuteyHoney

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 16:46     Titel:
  Antworten mit Zitat      
dankeschön, es funktioniert =)
ich habe vorher den eingegebenen edit wert eine variable ps zugewiesen, weil ich damit auch noch in der rechnung rechne und diese auch noch auf fehler überprüfe. ist dieses nicht so üblich?
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 16.11.2010, 16:56     Titel:
  Antworten mit Zitat      
Hallo,

prinzipiell sollte man auf den Gebarauch von globalen Variablen verzichten, da sie zu schwer auffindbaren Fehlern fuehren koennen.

Man sollte stattdessen (in einem GUI), Werte von bestimmten Objekten mit Hilfe des set-Befehl "holen".


MFG

Sco
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 - 2025 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.