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

Überschreiben einer Zelle in einer uitable aus einer Fkt.

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2015, 14:43     Titel: Überschreiben einer Zelle in einer uitable aus einer Fkt.
  Antworten mit Zitat      
Hallo zusammen,

mein problem ist folgendes:
Ich lasse in einer GUI über eine uitable einigen Werte einlesen. Will man Werte ändern wird die Funktion inputcheck.m geöffnet, die prüft ob die eigegebenen Werte gültig sind und ggf eine Fehlermeldung ausgibt. Aus Gründen der Idiotensicherung möchte ich nun gerne in der Funktion den Wert der geänderten Zelle im Fehlerfall mit nichts überschreiben.
Der bisherige Versuch sah so aus:
Code:

       handles.currentCell=eventdata.Indices;
       guidata(hObject,handles);
       Indices=handles.currentCell;
       celldata=get(handles.uitable2,'Data');
       data=celldata(Indices(1),Indices(2));
       data (Indices(1),Indices(2))= {''};
       set(handles.uitable2, 'data', data);
 

Die Funktion kriegt den Zelleninhalt, einen Prüfvektor und die handles übergeben.
Weiß jemand eine Lösung?

Vielen Dank schon mal
Seb


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.10.2015, 16:24     Titel: Re: Überschreiben einer Zelle in einer uitable aus einer Fk
  Antworten mit Zitat      
Hallo Seb,

Zitat:
Die Funktion kriegt den Zelleninhalt, einen Prüfvektor und die handles übergeben.
Weiß jemand eine Lösung?

Welche Funktion bekommt dies übergeben? Was ist "der Zelleninhalt" und "ein Prüfvektor"? Bitte beschreibe noch das Problem, zu dem Du eine Lösung suchst. Macht der Code nicht, was er soll?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2015, 07:59     Titel:
  Antworten mit Zitat      
Hallo Jan,
die Funktion überprüft immer den Inhalt der aktuellen Zelle auf seine Gültigkeit. Der Zellinhalt ist also das, was ich gerade in die Zelle reingeschrieben habe. Der Prüfvektor sagt der Fkt nur, was sie alles überprüfen soll (ist für das Problem weniger relevant denke ich). Die Funktion wird im Hauptprogramm im CellEditCallback aufgerufen und soll, wenn möglich bei einem ungültigen Wert den aktuellen Zellinhalt löschen bzw. mit nichts überschreiben.
Der bisherige Code erzeugt folgende Fehlermeldung:

#Undefined variable "eventdata" or class "eventdata.Indices".

Error in inputcheck (line 18 )
handles.currentCell=eventdata.Indices;

Error in Start_GUI>uitable2_CellEditCallback (line 148)
inputcheck (data, [1 1], handles);

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


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

Error in @(hObject,eventdata)Start_GUI('uitable2_CellEditCallback',hObject,eventdata,guidata(hObject))


Error while evaluating uitable CellEditCallback

Der Aufruf in der Funktion sieht so aus:
Code:

function [check]=inputcheck(content, vec ,handles)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here

cellcontent=str2double(content);
if (isnan(cellcontent))
    set(handles.speichern,'Enable','off');
    h=msgbox('Du weißt schon, dass hier nur Zahlen reindürfen, oder?','RETARD ALERT!!!','warn');  
return
end
if (vec(1)==1)
    if (cellcontent>0)
        set(handles.speichern,'Enable','on')
       
    else
       set(handles.speichern,'Enable','off');  
       h=msgbox('Nur Zahlen größer 0 eintragen!','Achtung','warn');
       handles.currentCell=eventdata.Indices;
       guidata(hObject,handles);
       Indices=handles.currentCell;
       celldata=get(handles.uitable2,'Data');
       data=celldata(Indices(1),Indices(2));
       data (Indices(1),Indices(2))= {''};
       set(handles.uitable2, 'data', data);
       return
    end
end
 


Grüße Seb
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.10.2015, 09:48     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
#Undefined variable "eventdata" or class "eventdata.Indices".
Error in inputcheck (line 18 )
handles.currentCell=eventdata.Indices;

Die Fehlermeldung ist klar, oder?
Hier wird die Variable "eventdata" verwendet, die aber in dieser Funktion gar nicht definiert ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2015, 09:17     Titel:
  Antworten mit Zitat      
Hallo,
es hat sich herausgestellt, dass diese Zeile auch gar nicht nötig ist.
Übergibt man der Funktion noch die Indices der geänderten Zelle, kann mit

Code:

celldata1=get(handles.platinenwerte,'Data');  
celldata1(Indices(1),Indices(2))={''};
set(handles.uitable1, 'data', celldata1);
 


den Zelleninhalt überschreiben.

Danke für die Hilfe
Seb
 
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.