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

UiTable, Checkboxen werden nicht ausgefüllt

 

Snowdog
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2010, 09:07     Titel: UiTable, Checkboxen werden nicht ausgefüllt
  Antworten mit Zitat      
Hallo erst mal,

ich habe ein Problem mit meiner Uitable. Und zwar sollen die Checkboxen immer aktiviert werden sobald Kv logisch 1 ist. Die Matrix Kv wird auch korrekt mit Werten gefüllt. Im GUI werden aber die Checkboxen nicht immer ausgefüllt angezeigt. Ich weiß aber nicht warum?

Im meinem Code erstelle ich zuerst die Tabelle
Code:

%Tabelleneigenschaften
columnname = {'Grün','Gelb','Magenta'};
columnformat = {'logical','logical','logical'};
columneditable = [true true true];
rowname = {'K0HCC10AT021 (Z1)','K0HCC10AT021 (Z2)','K0HCC20AT021 (Z1)',...
'K0HCC20AT021 (Z2)','K0HCC30AT021 (Z1)','K0HCC30AT021 (Z2)',...
'K0HCC40AT021 (Z1)','K0HCC40AT021 (Z2)','K0HCC10AT031 (Z1)',...
'K0HCC10AT031 (Z2)','K0HCC20AT031 (Z1)','K0HCC20AT031 (Z2)',...
'K0HCC30AT031 (Z1)','K0HCC30AT031 (Z2)','K0HCC40AT031 (Z1)',...
'K0HCC40AT031 (Z2)','K0HCC10AT041 (Z1)','K0HCC10AT041 (Z2)',...
'K0HCC20AT041 (Z1)','K0HCC20AT041 (Z2)','K0HCC20AT041 (Z3)',...
'K0HCC30AT041 (Z1)','K0HCC30AT041 (Z2)','K0HCC40AT041 (Z1)',...
'K0HCC40AT041 (Z2)','K0HCC40AT041 (Z3)','K0HCC10AT051 (Z1)',...
'K0HCC10AT051 (Z2)','K0HCC10AT051 (Z3)','K0HCC20AT051 (Z1)',...
'K0HCC20AT051 (Z2)','K0HCC20AT051 (Z3)','K0HCC30AT051 (Z1)',...
'K0HCC30AT051 (Z2)','K0HCC30AT051 (Z3)','K0HCC40AT051 (Z1)',...
'K0HCC40AT051 (Z2)','K0HCC40AT051 (Z3)'};
handles.tabelle = uitable ('parent',handles.fh,...
'ColumnName',columnname,...
'ColumnFormat',columnformat,...
'ColumnEditable',columneditable,...
'Rowname',rowname,...
'ColumnWidth',{63},...
'RearrangeableColumn','off',...
'Backgroundcolor',[237/255 247/255 251/255;211/255 235/255
247/255],...
'Units','normalized',...
'Visible','on',...
'Position',[0.695 0.02 0.296 0.707]);
 


Anschließend sollen die Checkboxen ausgefüllt werden, was aber nicht immer klappt, obwohl die Werte in Kv korrekt sind

Code:

%Tabellendaten
Daten = {Kv(1,1),Kv(1,2),Kv(1,3);Kv(2,1),Kv(2,2),Kv(2,3);
Kv(3,1),Kv(3,2),Kv(3,3);Kv(4,1),Kv(4,2),Kv(4,3);
Kv(5,1),Kv(5,2),Kv(5,3);Kv(6,1),Kv(6,2),Kv(6,3);
Kv(7,1),Kv(7,2),Kv(7,3);Kv(8,1),Kv(8,2),Kv(8,3);
Kv(9,1),Kv(9,2),Kv(9,3);Kv(10,1),Kv(10,2),Kv(10,3);
Kv(11,1),Kv(11,2),Kv(11,3);Kv(12,1),Kv(12,2),Kv(12,3);
Kv(13,1),Kv(13,2),Kv(13,3);Kv(14,1),Kv(14,2),Kv(14,3);
Kv(15,1),Kv(15,2),Kv(15,3);Kv(16,1),Kv(16,2),Kv(16,3);
Kv(17,1),Kv(17,2),Kv(17,3);Kv(18,1),Kv(18,2),Kv(18,3);
Kv(19,1),Kv(19,2),Kv(19,3);Kv(20,1),Kv(20,2),Kv(20,3);
Kv(21,1),Kv(21,2),Kv(21,3);Kv(22,1),Kv(22,2),Kv(22,3);
Kv(23,1),Kv(23,2),Kv(23,3);Kv(24,1),Kv(24,2),Kv(24,3);
Kv(25,1),Kv(25,2),Kv(25,3);Kv(26,1),Kv(26,2),Kv(26,3);
Kv(27,1),Kv(27,2),Kv(27,3);Kv(28,1),Kv(28,2),Kv(28,3);
Kv(29,1),Kv(29,2),Kv(29,3);Kv(30,1),Kv(30,2),Kv(30,3);
Kv(31,1),Kv(31,2),Kv(31,3);Kv(32,1),Kv(32,2),Kv(32,3);
Kv(33,1),Kv(33,2),Kv(33,3);Kv(34,1),Kv(34,2),Kv(34,3);
Kv(35,1),Kv(35,2),Kv(35,3);Kv(36,1),Kv(36,2),Kv(36,3);
Kv(37,1),Kv(37,2),Kv(37,3);Kv(38,1),Kv(38,2),Kv(38,3)};
%Tabelle ausfüllen
set(handles.tabelle,'Data',Daten);
 


Ich hab auch schon den Befehl drawnow direkt nach dem letzten Befehl angewendet, bringt aber keine Besserung

Danke schonmal im voraus
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: 14.10.2010, 12:07     Titel: Re: UiTable, Checkboxen werden nicht ausgefüllt
  Antworten mit Zitat      
Hallo Snowdog,

Zitat:
Anschließend sollen die Checkboxen ausgefüllt werden, was aber nicht immer klappt, obwohl die Werte in Kv korrekt sind

Bitte mehr Details: Was heißt "was nicht immer klappt" genau?
Gibt es eine Fehlermeldung, werden manche Checkboxen nit gesetzt, sind es immer die gleichen oder ist die Verteilung zufällig. Heißt "nicht immer", dass manchen Checkboxen nicht richtig gesetzt werden, oder das manchmal alle korrekt sind, aber manchmal auch nicht?
Was passiert, wenn Du die Checkbox-Werte wieder abfragst? Wie hast Du getestet, ob Kv korrekt ist? Der Fehler könnte ja auch in diesem Test liegen.

Anmerkung:
Code:

Daten = {Kv(1,1),Kv(1,2),Kv(1,3); ...
% Übersichtlicher:
Daten = num2cell(Kv);
 

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2010, 14:45     Titel:
  Antworten mit Zitat      
"Es klappt nicht immer" heißt das die Checkboxen entweder gar nicht ausgefüllt werden oder mit den richtigen Werten aus "Kv" ausgefüllt werden.

Es gibt keine Fehlermeldung

Ich hab "Kv" durch definition als globale Variable über den Befehl assignin.
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: 14.10.2010, 15:25     Titel:
  Antworten mit Zitat      
Hallo Snowdog,
Zitat:
Es klappt nicht immer" heißt das die Checkboxen entweder gar nicht ausgefüllt werden oder mit den richtigen Werten aus "Kv" ausgefüllt werden.

Das ist immer noch nicht klar.
Du hast also eine UITable mit unausgefüllten Checkboxen.
Dann versuchst Du diese entsprechend den Werten aus Kv mit Häkchen zu versehen. Richtig?
Nun startest Du ein Programm, dass dies ausführen soll, es werden aber manchmal gar keine Häkchen gesetzt --- manchmal aber werden auch alle Häkchen korrekt entsprechend Kv gesetzt.
Richtig?

Zitat:
Ich hab "Kv" durch definition als globale Variable über den Befehl assignin.

Das ist nun eine besonders fehleranfällige Methode der Variablen-Übergabe. Es ist dabei wie immer bei globalesn Variablen kaum nachzuvollziehen, welches Programm wann die Werte gesetzt hat. Wie bei einem nicht-verschlossenen Briefkasten, bei dem jeder mal etwas reinlegen oder rausholen kann, kann man nie sicher sein, ob der Inhalt auf dem neuesten Stand ist.

Wenn ich dann lese, dass es manchmal klappt, und manchmal nicht, empfehle ich als erstes eine ordentlich Parameter-Übergabe zwischen den verschiedenen Funktionen.
Stell Dir vor, Du hast zwei Buttons, von denen einer eine globale Variable per ASSIGNIN erzeugt, und der andere sie per EVALIN wieder einliest. Nun drückst Du zuerst auf den Erzeuger-Button und dann auf den Einlese-Button --- glaubst Du dass die beiden Button-Events auch in dieser Reihenfolge abgearbeitet werden?
Das werden sie nicht unbedingt.
Man kann das Verhalten zwar über die Properties "Interruptible" und "BusyAction" steuern, das fliegt einem aber gewaltig um die Ohren, falls irgendeine Matlab-Funktion aufgerufen wird, die PAUSE, DRAWNOW oder UIWAIT aufruft, auf ein ButtonPressEvent wartet oder der Handle des wartenden Buttons gelöscht oder neu belegt wird.

Debuggen ist eine schwierige Aufgabe. Es gibt keinen guten Grund das mit ASSIGNIN, EVALIN, EVAL und GLOBAL noch 10 mal schwerer zu machen!
Lass Dir doch einfach beim Erstellen des GUIs den Figure-Handle zurückliefern und wenn Du dann die Kv-Werte hast, rufe eine Funktion auf, die den Figure-Handle und die Kv-Werte als Input verwendet und die Werte direkt setzt. Dann kann Dir nur noch ein Meteorit dazwischen funken, falls er zufällig genau dann die Hauptplatine des Rechners durchschlägt.

Viel Erfolg, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Snowdog
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2010, 07:21     Titel:
  Antworten mit Zitat      
Hallo Jan

Ich glaube da ist etwas falsch angekommen.

Zitat:

Das ist immer noch nicht klar.
Du hast also eine UITable mit unausgefüllten Checkboxen.
Dann versuchst Du diese entsprechend den Werten aus Kv mit Häkchen zu versehen. Richtig?
Nun startest Du ein Programm, dass dies ausführen soll, es werden aber manchmal gar keine Häkchen gesetzt --- manchmal aber werden auch alle Häkchen korrekt entsprechend Kv gesetzt.
Richtig?


Das hast du genau richtig verstanden

Die Werte werden aber nicht mit dem Befehl assignin als globale Variable definiert und anschließend wieder eingelesen, sondern ich habe mit dem Befehl lediglich überprüft, ob die Variablen in Kv auch gesetzt waren.

Die uiTable mit den Checkboxen wird in meiner Funktion, die mein GUI + alle Callbacks enthalt, mit dem folgenden Code ausgefüllt, was aber nicht immer den entsprechenden Erfolg mit sich bringt. Die einzelnen Zellen sind entweder true oder false.

Code:

%Tabellendaten
Daten = {Kv(1,1),Kv(1,2),Kv(1,3);Kv(2,1),Kv(2,2),Kv(2,3);
Kv(3,1),Kv(3,2),Kv(3,3);Kv(4,1),Kv(4,2),Kv(4,3);
Kv(5,1),Kv(5,2),Kv(5,3);Kv(6,1),Kv(6,2),Kv(6,3);
Kv(7,1),Kv(7,2),Kv(7,3);Kv(8,1),Kv(8,2),Kv(8,3);
Kv(9,1),Kv(9,2),Kv(9,3);Kv(10,1),Kv(10,2),Kv(10,3);
Kv(11,1),Kv(11,2),Kv(11,3);Kv(12,1),Kv(12,2),Kv(12,3);
Kv(13,1),Kv(13,2),Kv(13,3);Kv(14,1),Kv(14,2),Kv(14,3);
Kv(15,1),Kv(15,2),Kv(15,3);Kv(16,1),Kv(16,2),Kv(16,3);
Kv(17,1),Kv(17,2),Kv(17,3);Kv(18,1),Kv(18,2),Kv(18,3);
Kv(19,1),Kv(19,2),Kv(19,3);Kv(20,1),Kv(20,2),Kv(20,3);
Kv(21,1),Kv(21,2),Kv(21,3);Kv(22,1),Kv(22,2),Kv(22,3);
Kv(23,1),Kv(23,2),Kv(23,3);Kv(24,1),Kv(24,2),Kv(24,3);
Kv(25,1),Kv(25,2),Kv(25,3);Kv(26,1),Kv(26,2),Kv(26,3);
Kv(27,1),Kv(27,2),Kv(27,3);Kv(28,1),Kv(28,2),Kv(28,3);
Kv(29,1),Kv(29,2),Kv(29,3);Kv(30,1),Kv(30,2),Kv(30,3);
Kv(31,1),Kv(31,2),Kv(31,3);Kv(32,1),Kv(32,2),Kv(32,3);
Kv(33,1),Kv(33,2),Kv(33,3);Kv(34,1),Kv(34,2),Kv(34,3);
Kv(35,1),Kv(35,2),Kv(35,3);Kv(36,1),Kv(36,2),Kv(36,3);
Kv(37,1),Kv(37,2),Kv(37,3);Kv(38,1),Kv(38,2),Kv(38,3)};
%Tabelle ausfüllen
set(handles.tabelle,'Data',Daten);
 


Gruß Snowdog
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: 19.10.2010, 10:41     Titel:
  Antworten mit Zitat      
Hallo Snowdog,

Zitat:
Ich glaube da ist etwas falsch angekommen.

Ja, stimmt.

Was erhälst Du, wenn Du den Wert der Checkboxen wieder ausliest? Werden also die Werte nicht gesetzt, oder gibt es nur Probleme mit der Darstellung am Bildschirm?
Hast Du eventuell mehere UITables und schreibst die Werte in die falsche, vielleicht unsichtbare oder verdeckte?

Funktioniert dies, um immer alle Häkchen zuverlässig zu setzen:
Code:

Daten = num2cell(true(38, 3));
set(handles.tabelle, 'Data', Daten);
 

Wenn das zuverlässig funktioniert sind Deine Kv-Werte falsch. Wenn es auch nicht immer die Häkchen richtig setzt, ist entweder "handles.tabelle" falsch oder Du hast Timing-Probleme in Java, welches für das Zecihnen der Tabelle verantwortlich ist. Dann wäre es hilfreich, wenn Du Matlab-Version, Java-Version, OS-Version postest.
Versuche es doch mal mit weniger Häkchen, z.B. 3x3 - klappt das "besser"?

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