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 mit checkboxes, select-all und deselect-all box?!

 

swizz-john
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 01.10.2015, 15:51     Titel: Uitable mit checkboxes, select-all und deselect-all box?!
  Antworten mit Zitat      
Hi Leute,

ich habe eine GUI mit Hilfe von GUIDE erstellt. Zentral ist hierbei die uitable funktion.

Um die checkboxen in meinem Uitable stets zu aktualisieren, nutze ich die folgende Callback Funktion.

Code:
function uitable__CellEditCallback(hObject, eventdata, handles)
% hObject    handle to uitable_ (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)

data=get(hObject,'Data');                                       % get the data cell array of the table
cols=get(hObject,'ColumnFormat');                               % get the column formats

if strcmp(cols(eventdata.Indices(2)),'logical')                 % if the column of the edited cell is logical
    if eventdata.EditData                                       % if the checkbox was set to true
        data{eventdata.Indices(1),eventdata.Indices(2)}=true;   % set the data value to true
    else                                                        % if the checkbox was set to false
        data{eventdata.Indices(1),eventdata.Indices(2)}=false;  % set the data value to false
    end
end
set(hObject,'Data',data); % now set the table's data to the updated data cell array

eventdata.EditData
data=get(hObject,'Data')  
length(data)

%Find indices of cells that are marked 'true'
indices=[];
for i=1:length(data)
    if data{i,1}==1
        indices=[indices,i]
    end
end


Das klappt soweit wunderbar. Jetzt moechte ich aber gerne zusaetzlich eine Selectall checkbox haben, welche, sofern aktiviert, alle anderen checkboxes in meinem uitable aktiviert.

Die Frage ist nun, wie ich das schaffen kann?
Ich habe versucht in meinem Callback zur SelectAll Checkbox die Funktion
Code:
function uitable__CellEditCallback(hObject, eventdata, handles)


auszufuehren. Leider hat das nicht funktioniert.

Kann mir jemand einen Tipp geben wie ich das hinbekommen kann?

Vielen Dank fuer eure Hilfe!

Schoenen Gruss, swizz-john
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 01.10.2015, 16:58     Titel:
  Antworten mit Zitat      
http://www.gomatlab.de/select-all-b.....t38227,highlight,set.html
da ging es schon mal um was ähnliches glaube ich. hilft das weiter?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 05.10.2015, 12:33     Titel:
  Antworten mit Zitat      
Hi Winkow,

danke fuer den Hinweis aber
leider bekomme ich das nicht ganz hin:(

ich habe versucht, es so umzusetzen wie es in dem Thread erklaert wurde, aber die Checkboxes in meinem UItable werden einfach nicht aktualisiert. Wenn ich versuche zur aktualisierung den oben auskommentierten code zu waehlen, kommt ein error :

Code:
Attempt to reference field of non-structure array.

Error in Try1_bus>select_all__Callback (line 344)
    if strcmp(cols(eventdata.Indices(2)),'logical')                 % if the column of the edited cell is logical


Dies ist klar da ich nicht auf eventdata aus dem direkten Edit_callback vom uitalbe zugreifen kann. Dann habe ich versucht alle daten von diesem direkten Callback an meinen Select_all Pushbutton Callback zu geben via setappdata und getappdata./ Dies hat aber auch nicht funktioniert.

So sieht mein Callback fuer den Select_all Pushbutton aus:

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

% Hint: get(hObject,'Value') returns toggle state of select_all_

hBus_ui_Gui = findobj('Tag','uitable_')         %get the GUI figure

data=get(hBus_ui_Gui,'Data')                                       % get the data cell array of the table
[m,n]=size(data);

if get(hObject,'Value')==1

    for i=1:m
        data{i,1}=1;
    end

    set(hBus_ui_Gui,'Data',data)

    data=get(hBus_ui_Gui,'Data')                                       % get the data cell array of the table
    cols=get(hBus_ui_Gui,'ColumnFormat')                               % get the column formats

%     if strcmp(cols(eventdata.Indices(2)),'logical')                 % if the column of the edited cell is logical
%         if eventdata.EditData                                       % if the checkbox was set to true
%             data{eventdata.Indices(1),eventdata.Indices(2)}=true;   % set the data value to true
%         else                                                        % if the checkbox was set to false
%             data{eventdata.Indices(1),eventdata.Indices(2)}=false;  % set the data value to false
%         end
%     end

else
    for i=1:m
        data{i,1}=0;
    end

    set(hBus_ui_Gui,'Data',data)
end


Ich wuerde mich sehr ueber Unterstuetzung freuen!

Schoenen Gruss!Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.10.2015, 12:47     Titel:
  Antworten mit Zitat      
Hallo,

bitte ein komplett reproduzierbares Beispiel zur Verfügung stellen.
Das macht es deutlich leichter als wenn man sich alles zusammenstückeln und noch was dazu schreiben muss.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
sj

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2015, 15:50     Titel: Minimalbeispiel
  Antworten mit Zitat      
Hi Harald,

ich habe nun ein Minimalbeispiel konstruiert, welches komischerweise so funktioniert wie gewuenscht:D

ich werde nun versuchen, dieses auf mein grosses GUI anzuwenden.

Anbei die Dateien, welche funktionieren.

Schoene Gruesse

checkbox.m
 Beschreibung:
programmcode

Download
 Dateiname:  checkbox.m
 Dateigröße:  6.26 KB
 Heruntergeladen:  538 mal
checkbox.fig
 Beschreibung:
mit GUIDE erstellte figure

Download
 Dateiname:  checkbox.fig
 Dateigröße:  2.46 KB
 Heruntergeladen:  541 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.10.2015, 16:19     Titel:
  Antworten mit Zitat      
Hallo,

um dir bei deinem Problem helfen zu können, bräuchten wir ein Beispiel, in dem es nicht funktioniert... (und vorzugsweise in der selben Form wie das tatsächliche Projekt)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 06.10.2015, 09:33     Titel:
  Antworten mit Zitat      
Ich weiss Harald. Habe es jetzt aber loesen koennen!Smile analog zu meinem Minimalbeispiel!

Schoenen Gruss, swizz-john
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.