Verfasst am: 01.10.2015, 15:51
Titel: Uitable mit checkboxes, select-all und deselect-all box?!
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
ifstrcmp(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
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)
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 (line344) ifstrcmp(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_
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
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.
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)
Ich weiss Harald. Habe es jetzt aber loesen koennen! analog zu meinem Minimalbeispiel!
Schoenen Gruss, swizz-john
Einstellungen und Berechtigungen
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.