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

Zuweisung von Werten bei fehlendem Eintrag im Edit-Fenster

 

fränky

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2009, 15:56     Titel: Zuweisung von Werten bei fehlendem Eintrag im Edit-Fenster
  Antworten mit Zitat      
Hallo zusammen,

Ich hab eine GUI-Oberfläche programmiert, die mehrere Werte über edit-Felder einliest. Trage ich in alle Edit-Felder etwas ein, läuft das Programm einwandfrei.

Falls ich jedoch in eines der edit-Felder nichts eingetrage, will ich, dass das Programm automatisch einen fest definierten Wert übernimmt (hier: 1), der dann an andere Callbacks weitergegeben werden soll... Ich habe das ganze mit isempty versucht, nur "handles.Wert" übernimmt den definierten Wert nicht und es kommt zu einer Fehlermeldung.

Code:

function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double

% Festlegung, dass nur Zahlen vom Typ 'String' in den Edit-Text % ge schrieben werden dürfen
input = str2num(get(hObject,'String'));

% Falls keine Eingabe in den Edit-Text erfolgt, soll der Wert auf 1 gesetzt werden - hier liegt wohl der Fehler.
if isempty(input)
     set(hObject,'String','1');
end

% Der in den Edit-Text festeglegte Wert wird
% definiert und für andere Callbacks zur Verfügung gestellt
t = get(handles.edit1,'String');
handles.Wert = str2num(t);
guidata(hObject, handles);

 


Falls im Edit-Fenster keine Zahl eingetragen wird, soll das Programm automatisch mit dem Wert 1 weiterrechnen

Code:


% --- Executes on button press in mpe1.
function mpe1_Callback(hObject, eventdata, handles)
% hObject    handle to mpe1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Übernahme des Wertes, der im Edit-Text eingegebenen Zahl

for I=1:handles.Wert
%...
 


Ich hoffe, jemand kann mir bei diesem Problem weiterhelfen.
Danke


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2009, 08:23     Titel:
  Antworten mit Zitat      
Hallo,

edit1_Callback wird nur aufgerufen, wenn der Benutzer eine Eingabe in dem Feld vornimmt (oder zumindest in das Feld klickt und dann mit Return bestätigt).
Ich würde an Deiner Stelle schon in der OpeningFcn Default-Werte vergeben (und auch das Edit-Feld schon damit vorbelegen).
Danach funktioniert Deine Abfrage (also wenn der Benutzer einen Wert löscht, wird er wieder durch den Standardwert ersetzt).

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
fränky

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2009, 13:39     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort,
nur wie kann ich in der OpeningFcn Default-Werte angeben bzw. definieren(Syntax), die bei einem Eintrag in das edit1_Callback Fenster wieder überschrieben werden?
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 02.09.2009, 14:57     Titel:
  Antworten mit Zitat      
Hallo,

in der OpeningFcn kannst Du wie sonst auch schreiben:
Code:
set(handles.edit1,'String', '1');
 

wohl erst nach der Zeile, in der die handles zugewiesen werden Wink.

Das Überschreiben durch den Default Wert hast Du doch im Callback gemacht, oder nicht...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2009, 14:58     Titel:
  Antworten mit Zitat      
Hallo,

das funktioniert mit dem Befehl set.
Ich würde so etwas in der Art schreiben:
Code:

set(handles.edit1,'String','1');
handles.Wert = 1;
guidata(hObject,handles)
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
fränky

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2009, 15:19     Titel:
  Antworten mit Zitat      
Vielen Dank LittleX!!!!!
Das Programm läuft einwandfrei Razz
 
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.