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

Cursor/Schreibmarke in Edit-Textfeld setzen

 

Cope
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 21.04.2014, 16:00     Titel: Cursor/Schreibmarke in Edit-Textfeld setzen
  Antworten mit Zitat      
Hallo zusammen,
ich habe eine GUI mit mehreren Edit-Textfeldern und einem Pushbutton erstellt.

Beim drücken des Pushbutton wird zunächst einmal überprüft ob alle Edit-Textfelder ausgefüllt wurden und anschließend wird eine Datei erzeugt.

Falls ein Edit-Textfeld leer ist, kommt über die msgbox eine Meldung, dass das entsprechende Edit-Textfeld leer ist.

Meine Frage: Besteht die Möglichkeit den Cursor/die Schreibmarke (also diesen blinkenden vertikalen Balken) nach der msgbox Meldung gleich in dem entsprechenden Edit-Textfeld zu positionieren? So das der/die Anwender/in nicht noch einmal mit dem Mauszeiger in das Edit-Textfeld gehen muss.

Beten Dank und Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.04.2014, 20:15     Titel: Re: Cursor/Schreibmarke in Edit-Textfeld setzen
  Antworten mit Zitat      
Hallo Cope,

Der Befehl "uicontrol(Handle)" aktiviert das entsprechende UICONTROL-Objekt.
Ich verwende in einem ähnlichen Fall ein Aufblinken der bisher noch nich ausgefüllten Felder, siehe http://www.mathworks.com/matlabcentral/fileexchange/25566-uiflash.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Cope
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 21.04.2014, 22:49     Titel:
  Antworten mit Zitat      
Hey Jan,
danke, genau das habe ich gesucht.

Zu dem von dir vorgestellten uiFlash:
Zunächst einmal: Coole Idee!
Wenn ich lediglich ein rotes Aufblinken meines edit-Textfelden haben möchte wieso kann ich nicht einfach folgendermaßen vorgehen?

Code:
BtnH = uicontrol(handles.edit5);
uiFlash(BtnH, 'BackgroundColor', [1, 0, 0])


Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.04.2014, 21:01     Titel:
  Antworten mit Zitat      
Hallo Cope,

Was hindert Dich denn daran so vorzugehen? Bei funktioniert das ohne Probleme. Allerdings nicht mit "handles.edit5", denn das habe ich ja natürlich nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Cope
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 23.04.2014, 19:02     Titel:
  Antworten mit Zitat      
Hallo Jan,
na wenn ich das mal wüßte Smile

Ich habe jetzt einfach mal eine figure erstellt mit einem edit-textfeld und einem Pushbutton.

In die Callback des Pushbutton habe ich folgendes geschreiben:

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


if isempty(handles.edit1)
    BtnH = uicontrol(handles.edit1);
    uiFlash(BtnH, 'BackgroundColor', [1, 0, 0])
end


Und das hier in der Opening Fcn:

Code:
function uiflash_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 uiflash (see VARARGIN)

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

        handles.edit1 = '';



% Update handles structure
guidata(hObject, handles);


Und als Fehler bekomme ich folgendes raus:

Error using uicontrol
Arguments may only include figure, uicontainer, or uicontrol
handle and param/value pairs

Error in uiflash>pushbutton1_Callback (line 111)
BtnH = uicontrol(handles.edit1);

Error in gui_mainfcn (line 96)
feval(varargin{:});

Error in uiflash (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)uiflash('pushbutton1_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback


Es wird wahrscheinlich recht simple sein, aber als Matlab Neuling kann ich selbst mit den Fehlermeldungen nicht all zu viel anfangen :-/

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.04.2014, 20:02     Titel:
  Antworten mit Zitat      
Hallo Cope,

Zitat:
na wenn ich das mal wüßte :)

Das Posten der Fehlermeldung ist hilfreich, dann müssen wir nicht erraten, was "kann nicht" bedeutet.

Code:
if isempty(handles.edit1)
    BtnH = uicontrol(handles.edit1);
    uiFlash(BtnH, 'BackgroundColor', [1, 0, 0])
end

Das ist merkwürdig. "handles.edit1" ist der Handle des Grafik-Objektes, also eine Art Adresse um das Objekt zu identifizieren. Der Wert wird beim Erzeugen des GUIs belegt und sollte auf keinen Fall überschrieben werden. Du meinst sicherlich den Inhalt dieses Objektes:
Code:
if isempty(get(handles.edit1, 'String'))


Auch hier ist eine Änderung nötig:
Code:
% Nein: handles.edit1 = '';
set(handles.edit1, 'String', '');

Also handles und deren Inhalt sind ein Unterschied. Versuche es mal im Command Window:
Code:
figure;
H = uicontrol('Style', 'edit');
get(H)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Cope
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 29.04.2014, 14:35     Titel:
  Antworten mit Zitat      
Hallo Jan,
danke für deine Mühe. Der Fehler lag ganz klar bei mir. Typischer Anfängerfehler. Ich habe deine uiFlash.m natürlich nicht im gleichen Verzeichnis gehabt. Demnach konnte er nicht darauf zurück greifen, weshalb das auch in keinem meiner Versuche Funktionierte.

Jetzt läuft alles Prima. Danke nochmal!

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Cope
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 15.07.2014, 11:47     Titel:
  Antworten mit Zitat      
Hey Jan,
ist es auch möglich mehrere Felder gleichzeitig aufblinken zu lassen? Oder funktioniert das nur der Reihe nach?

Gruß
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.