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 aus Eingabemaske direkt in Textfeld anzeigen lassen

 

Mathlab
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 08.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2011, 18:09     Titel: Werte aus Eingabemaske direkt in Textfeld anzeigen lassen
  Antworten mit Zitat      
Hallo zusammen,

ich [Anfänger] habe folgendes vor:
In einem popup wird eine Zeile gewählt. dann erscheint direkt eine Eingabmaske, in die ich Werte (u.a. Bauteillängen) eintrage. Diese Werte müssen in den WS. Bis dahin klappt bei mir auch alles.

Nun kommt der Knackpunkt: gleichzeitig mit Bestätigung der eingegebenen Werte soll die Bauteillänge in einem Textfeld im GUI ausgegeben werden.

(Im folgenden sollen in weiteren popups weitere Längen addiert werden ("Gesamtlaenge"), das aber nur als Randbemerkung.)

Das schaffe ich nicht. Ich schaffe es zwar, einen string anzeigen zu lassen, aber keine Variable mit Zahlenwert.

Hier ein wenig Code, unten drunter noch ein bisschen Text:
Code:

% --- Executes just before GUI_Temptex is made visible.
function GUI_Temptex_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to GUI_Temptex (see VARARGIN)

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

% Choose default command line output for GUI_Temptex
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes GUI_Temptex wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = GUI_Temptex_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;




% --- Executes on selection change in Komponente1.
function Komponente1_Callback(hObject, eventdata, handles)
% hObject    handle to Komponente1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns Komponente1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from Komponente1
switch get(handles.Komponente1,'Value')  
    case 1
        prompt = {'Rohrlaenge [m]', 'Rohraussendurchmesser [m]', 'Wandstaerke [m]', 'Biegeradius [m]'};
        dlg_title = 'Rohreigenschaften';
        num_lines = 1;
        def = {'0.1','0.06','0.0015', '2'};
        answer = inputdlg(prompt,dlg_title,num_lines,def, 'on');
        assignin('base', 'Daten1_1', answer{1});
        assignin('base', 'Daten1_2', answer{2});
        assignin('base', 'Daten1_3', answer{3});
        assignin('base', 'Daten1_4', answer{4});
        set (handles.Gesamtlaenge, 'String', Daten1_1)
    case 2

usw.
 


ich bin die ganze Zeit an der letzten Zeile vor "case 2" dran.
das, was jetzt dort drin steht, wird mit "Undefined function or variable"(Daten1_1) kommentiert, obwohl es diese Variable ja schon im WS gibt. Funktioniert allerdings auch nciht mit einer anderen Variable wie z.B. a=2;

hat jemand ne Hilfe?
Private Nachricht senden Benutzer-Profile anzeigen


draussen
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 26.11.10
Wohnort: DE
Version: 2010b,2020a
     Beitrag Verfasst am: 08.11.2011, 20:34     Titel:
  Antworten mit Zitat      
Hallo,

ich bin nicht sicher ob ich das ganze genau verstanden habe.

1. aus einer Gui variablen in den WS per assignin rein zu packen macht man nicht!!!

2. das ist auch der Grund für Dein Problem. Du weißt die Variable Daten1_1 dem "base Workspace" zu. Damit ist die Variable in Deiner Gui Routine nicht sichtbar. Das sollte Dir beim debuggen auffallen da diese Variable nicht in dem aktuellen WS auftaucht.

Arbeite lieber mit den Mitteln die für die Variablenübergabe vorgesehen sind:

In Deinem "Komponente1_Callback":
Code:

handles.answer = inputdlg(prompt,dlg_title,num_lines,def, 'on');

% Update handles structure: DAS IST IMMER NOTWENDIG WENN SICH %DIE handles Structure ändert - das updated diese:
guidata(hObject, handles);

 


So und damit die Variable nach beenden der Gui ausgegeben wird noch folgendes in die outputfktn:

Code:

varargout{1} = handles.answer;

 


Wenn Du jetzt noch die Gui aus der Comandline per

Code:


Daten=GUI_Temptex
 


aufrufst, bekommst Du die "Daten" auch in den base WS.


MfG

Georg
_________________

Der Einäugige ist unter den Blinden der König!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
draussen
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 26.11.10
Wohnort: DE
Version: 2010b,2020a
     Beitrag Verfasst am: 08.11.2011, 20:39     Titel:
  Antworten mit Zitat      
...ich nochmal...

Ich habe nicht verstanden was Du mit

Code:

set (handles.Gesamtlaenge, 'String', Daten1_1)
 


bezwecken willst?

Ich gehe davon aus, das handles.Gesamtlaenge der handle eines Textfeldes ist?! Ansonsten dürfte der Ausdruck nichts bezwecken.

MfG

Georg
_________________

Der Einäugige ist unter den Blinden der König!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Mathlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 08.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2011, 20:24     Titel:
  Antworten mit Zitat      
draussen hat Folgendes geschrieben:
...ich nochmal...

Ich habe nicht verstanden was Du mit

Code:

set (handles.Gesamtlaenge, 'String', Daten1_1)
 


bezwecken willst?

Ich gehe davon aus, das handles.Gesamtlaenge der handle eines Textfeldes ist?! Ansonsten dürfte der Ausdruck nichts bezwecken.

MfG

Georg


Genau dafür war es gedacht.
Ich werde das andere morgen ausprobieren. Hab hier kein Matlab am Ort.
Vielen Dank schonmal Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Mathlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 08.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2011, 10:38     Titel:
  Antworten mit Zitat      
So, also mit den Hinweisen von "draussen" klappt das leider nicht Sad

1. es wird nichts in das textfeld geschrieben
2. die Ausgabe mit Daten=GUI_Temptex ergibt eine Gesatmzahl - aber ich lese ja 4 einzelne Werte ein. Mit meiner Variante bekomme ich die wenigstens als Cell in den WS.

Weiß da jemand weiter?
Ich glaube, ich hab das noch nicht so ganz gecheckt, wo was angekündigt werden muss und vor allem wo die eingebenen Daten hinterlegt sind, wenn ich die nicht im WS abspeichere.
Private Nachricht senden Benutzer-Profile anzeigen
 
draussen
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 26.11.10
Wohnort: DE
Version: 2010b,2020a
     Beitrag Verfasst am: 10.11.2011, 22:51     Titel:
  Antworten mit Zitat      
Hallo,

Du könntest mal Deinen gesamten Code posten. Und nochmal genau erklären was Du erreichen willst. Wo wann was angezeigt werden soll und vor allem welcher Art die Variablen sind die Du verwendest. Du kannst ja z.B. keine Zahl einfach als string verwenden. Am besten ein konkretes Beispiel.

Ist Dein Textfeld richtig definiert? Ist "Gesamtlaenge" der Tag des Textfeldes? Wichtig ist auch, dass die handles structure upgedated wird (wie bereits beschrieben).

Die Verwendung von "varargout" in der "outputfunction" war nur schemenhaft dargestellt. Das lässt sich aber auch detailiert klären wenn klar ist welche variablen wie übergeben werden sollen.


MfG

Georg
_________________

Der Einäugige ist unter den Blinden der König!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
draussen
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 90
Anmeldedatum: 26.11.10
Wohnort: DE
Version: 2010b,2020a
     Beitrag Verfasst am: 10.11.2011, 23:12     Titel:
  Antworten mit Zitat      
Achso, das noch vorab zu der Frage:

"Ich glaube, ich hab das noch nicht so ganz gecheckt, wo was angekündigt werden muss und vor allem wo die eingebenen Daten hinterlegt sind, wenn ich die nicht im WS abspeichere. "


Während die gui ausgeführt wird, steht immer die handles structure zur Verfügung (man kann auch andere structs selbst definieren). In der handles structure kann man alle Daten ablegen, die man mal irgendwo in der gui braucht. In der handles structure liegen auch alle Informationen der gui Objekte (Testfelder, Buttons etc.). Wird das handles structure geändert, muss handles durch den Befehl

Code:

guidata(hObject,handles)
 


aktualisiert werden um Änderungen wirksam zu machen.

Alle Variablen die nicht mit mit der handles structure (oder anderen "gui variablen" die dann auch aktualisiert werden müssen) zusammenhängen sind nur in den aktuellen Funktionen verfügbar. In Deinem Beispiel ist z.B. die Variable "answer" nur in der Funktion

Code:

function Komponente1_Callback(hObject, eventdata, handles)
 


sichtbar.
Keine der Variablen ist jedoch im base WS enthalten.

Ich hoffe das gibt so einen kleinen Einblick und verwirrt nicht mehr als es klärt.

MfG
_________________

Der Einäugige ist unter den Blinden der König!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Mathlab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 08.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2011, 09:12     Titel:
  Antworten mit Zitat      
Danke für deine Erklärung!
Ich habe aber gestern das ganze GUI selbst programmiert. Gefällt mir irgendwie besser und alles ist verfügbar Smile
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.