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

GUI Tabelle wird nicht aktualisiert!

 

Lloyd Blankfein
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 10:11     Titel: GUI Tabelle wird nicht aktualisiert!
  Antworten mit Zitat      
Hallo,

ich habe ein Fenster welches u. a. eine GUI Tabelle enthält. Dieses Fenster baue ich mit folgender Funktion auf:

Code:

%Initalisieren der Daten und Aufbau des Fensters    
function WComposite_OpeningFcn(hObject, eventdata, handles, varargin)
    global selectedModel;
    import Delphi.Util.*;
    import Delphi.Data.DataAccessObjects.*;
    headline = strcat('Tabellen Übersicht');
    set(handles.st_headline_bt,'String',headline);
    colnames = {'Table', 'Field','Master TimeSeries'};
    colfmt = {'char','char','logical'};
    coledit = [true true true];
    colwdt = {120 120 120};
    data=cell(size(selectedModel.tables,2),length(colnames));
    for i=1:size(data,1)
        data(i,1)=selectedModel.tables(1,i).table_name;
        data(i,2)=selectedModel.tables(1,i).field_name;
        data(i,3)=selectedModel.tables(1,i).master;
    end
       
    if max(cell2mat(data(:,3)))==0
        set(handles.Intersection,'Value',1);%activate intersection button
    else
        set(handles.Intersection,'Value',0);
        set(handles.Union,'Value',0);
        set(handles.MasterTS,'Value',1);
    end
    handles.htable = uitable('Units', 'normalized',...
                         'Position', [0.225 0.4 0.4 0.4],...
                         'Data',  data,...
                         'ColumnName', colnames,...
                         'ColumnFormat', colfmt,...
                         'ColumnWidth', colwdt,...
                         'ColumnEditable', coledit,...
                         'CellSelectionCallback',{@select_callback});
    set(handles.htable,'BackgroundColor',Util.getUiColor('ListBackground'));
    set(handles.htable,'ForegroundColor',Util.getUiColor('ListText'));
    contextSort = uicontextmenu;
         
    %Kontextmenu zum Sortieren der Spalten erzeugen
    uimenu(contextSort,'Label','Sortieren ...','Callback',{@mn_sort,handles});

    %UI-Farben setzten
    handles = Util.setUiColors(handles);
    handles.output = hObject;
    guidata(hObject, handles);
 


Die GUI Tabelle enthält u. a. ein Logical Attribut welches mittels dieser Funktion manipuliert werden kann:

Code:

%Selection Event der Zeitreihentabelle. Die ausgewaehlte Spalte wird an die
%anderen Oberflaechenelemente kommuniziert.
function select_callback(hObject, eventdata)
    global selectedModel;
    import Delphi.Util.*;
    sel = eventdata.Indices;
    sel=sel(:,1);
    handles  = guidata(hObject);
    data=get(handles.htable,'Data');
    for i=1:size(data)
        data(i,3)={'false'};
        selectedModel.tables(1,i).master=num2cell(0);
    end
    data(sel,3)={'true'};
    selectedModel.tables(1,sel).master=num2cell(1);    
    set(handles.htable, 'CellSelectionCallback', []);
    set(handles.htable,'Data',data);
    set(handles.Intersection,'Value',0);
    set(handles.Union,'Value',0);
    set(handles.MasterTS,'Value',1);
    drawnow;
    set(handles.htable, 'CellSelectionCallback', {@select_callback});
    drawnow;
    guidata(hObject, handles);
 


Soweit funktioniert das auch. Die Änderungen werden in der GUI Tabelle handles.htable, als auch im Objekt selectedModel.tables übernommen und korrekt in der GUI ausgegeben.
Wenn ich nun das Fenster verlasse und erneut aufrufe, werden die Änderungen nicht in der GUI Tabelle angezeigt. In handles.htable und selectedModel.tables wurden die Daten korrekt abgespeichert.

Was mache ich falsch???

Vielen Dank für eure Hilfe,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen


Micha85

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 10:39     Titel:
  Antworten mit Zitat      
Hi,

was bedeutet Fenster verlassen?
Schließt Du das Fenster und kehrst praktisch zu Deiner Hauptoberfläche zurück oder etwas ähnliches?
Wenn ja musst Du die Daten (handles) an diese Hauptoberfläche übergeben.

Schließt Du das Fenster komplett werden die handles dieses Fensters gelöscht und beim erneuten Öffnen neu angelegt.
Deine zusätzlichen Daten sind dann natürlich weg. Wenn ich Dich richtig verstanden habe ist das der Fall.

Ich hoffe das ist richtig so und hilft Dir etwas weiter.
Grüße
Micha
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 10:52     Titel:
  Antworten mit Zitat      
Hallo Micha,

ich schließe das Fenster und kehre zur Hauptoberfläche zurück. Das handle übergebe ich ebenfalls. Mittels debugging habe ich auch kontrolliert ob das korrekt funktioniert, was der Fall ist.
Die Daten sind also im handle gespeichert, werden aber trotzdem nicht in der GUI angezeigt.

Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Micha85

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 11:23     Titel:
  Antworten mit Zitat      
Hi,

ich habe mir gerade mal die Hilfe zu uitable angeschaut.
In dem Cell-Array data müssen in der logischen Spalte auch tatsächlich logische Werte (true/false) rein. Einfach 0 oder 1 als double Wert reicht nicht aus.

Ergänze doch mal in Deinem Code diese Zeile wie folgt:
Code:

data(i,3)=logical(selectedModel.tables(1,i).master);
 


Wenn Deine Daten also tatsächlich korrekt übergeben werden könnte ich mir das als Fehler vorstellen, da Du in Deinem Cell-Selection Callback ja den Wert 0 bzw. 1 mit num2cell in das Array schreibst.

Vielleicht wars das.
Grüße
Micha
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 14:29     Titel:
  Antworten mit Zitat      
Hallo Micha,

obiger Befehl führt zu dieser Fehlermeldung:

??? Error using ==> logical
Conversion to logical from cell is not possible.


Ich habe das Problem jetzt gelöst, indem ich alle betroffenen Attribute auf typ logical umgestellt habe. Eine Konvertierung entfällt somit.

Code:

selectedModel.tables(1,i).master{1,1}=logical(0);
 


Trotzdem vielen Dank für deine Unterstützung!!!
Lloyd
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.