Verfasst am: 22.06.2011, 11:13
Titel: checkboxes und editierbare Zellen in uitable
Hallo Matlab Freunde,
erst einmal vielen Dank an dieses Forum. Hier hab ich in den letzten Wochen viele nützliche Informationen finden können.
Nun habe ich aber ein Problem bei dem ich mich ein wenig verzettelt habe.
Ich arbeite gerade an einer GUI mit der Matlab 2010b unter XP und habe mir hierbei eine Tabelle erstellt mit uitable in GUIDE.
Funktioniert auch alles wunderbar.
Die Tabelle hat unterschiedliche viele Zeilen, je nachdem wieviel eingetragen wurden. Die ersten 10 Spalten sind mit Werten gefüllt.
In das figure der Tabelle habe ich in die 11. Spalte checkboxen über den Table Property Editor mit Format logical eingefügt und noch eine weitere Spalte die Editierbar sein soll.
Was will ich machen: Wenn kein Häckchen gesetzt ist, werden die Werte aus der Spalte 10 zusammen addiert und in ein statictext-Feld ausgegeben. Wenn doch ein Häckchen gesetzt wurde, wird der eingetragene Wert in der Zeile in der Spalte 12, statt dem aus der Spalte 10 verwendet. Das soll im Grunde für jede Zeile funktionieren. Probiert hab ich es schon mal mit einer for-Schleife um jede Zeile zu checken.
Auch eine checkeditcallback habe ich eingefügt. Jedoch komm ich zum einen nicht mit den cells klar und zum anderen weiß ich nicht recht weiter.
Hier einmal meine bisherigen Überlegungen für das celleditcallback:
Code:
%
function uitable1_CellEditCallback(hObject, eventdata, handles) % hObject handle to uitable1 (see GCBO) % eventdata structure with the following fields (see UITABLE) % Indices: row and column indices of the cell(s) edited % PreviousData: previous data for the cell(s) edited % EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed % Error: error string when failed to convert EditData to appropriate value for Data % handles structure with handles and user data (see GUIDATA)
MeinProblem ist nun, dass ich keine Häckchen bekomme, wenn ich die Checkboxen anklicke und die Werte in den editibaren Feldern verschwinden nach dem eintragen.
Ich muss ehrlich gestehen, ich weiß nicht ob ich völlig auf dem Holzweg bin. Bin noch Anfänger und bitte um, wenn es nicht zu große Umstände macht, etwas ausführlichere Erklärungen bzw. Hinweise.
vielen Dank erst einmal für die Antwort.
Das mit dem length für den Vektor habe ich übernommen.
Nur bei dem strcmp habe ich nicht recht eine Idee, wie ich die Zelle in der Tabelle vergleichen soll. Hab es stattdessen mit true probiert. Habe aber immer noch das gleiche Verhalten wie vorher. Häckchen lassen sich nicht setzen und editierbare Felder bleiben leer.
Dazu ist mir noch aufgefallen, dass ich doch eigentlich erst einmal noch diese Spalte mit den logical zu den Data der uitable hinzufügen müsste, oder? Wenn ja wie mach ich das dann? Oder reicht es, dass in dem figure diese Spalte eingefügt wurde?
Gruß Negahtiev
Negahtiev
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 23.06.2011, 08:57
Titel:
Hallo ich nochmal,
also ich hab jetzt noch ein bisschen rumgefrickelt. Bin zwar schon ein wenig weiter, aber funktionieren tut es noch nicht.
Code:
%
function uitable1_CellEditCallback(hObject, eventdata, handles)
So wie ich das sehe, muss ich tatsächlich noch vorher die Spalten 11 und 12 definieren oder eintragen. Und außerdem muss ich es noch irgendwie hinbekommen, dass die Eingabe des Users abgewartet wird.
Negahtiev
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 23.06.2011, 14:58
Titel:
So die editierbaren Zellen hab ich dann jetzt hinbekommen. Es lassen sich jetzt Werte eintragen und diese bleiben auch bestehen.
Bleibt jetzt nur das Problem, dass die checkboxen nicht ausgefüllt werden können.
Ich hab es mal nochmal als Dateien angefügt, damit man es vlt. besser versteht. Habt Nachsicht, wenn es nicht die sauberste Art der Umsetzung ist, bin wie gesagt Anfänger. Und für jede Vereinfachung dankbar.
So Problem gelöst. Neben ein paar Änderungen in der Celleditcallback, waren auch die übergebenen Werte in der Tabelle nicht ganz so einfach zu bearbeiten... Das mit chars so nicht einfach gerechnet werden kann...
Für alle die es interessiert hier dann noch mal eine funktionierende Celleditcallback:
Code:
%
function uitable1_CellEditCallback(hObject, eventdata, handles)
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
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.