Removing uitable cell selection highlight
    11 views (last 30 days)
  
       Show older comments
    
Hi,
I have a uitable that includes a checkboxes in column 1 and string-valued entries in column 2. Some of the entries may be "ghosted", which is faked by prepending HTML tags to change their font color to gray. A corresponding bitvector keeps track of the ghosted rows. Clicking in either column on a ghosted row is ignored, with an immediate return from the CellSelectionCallback routine.
This works OK except for one annoyance: When a ghosted string (column 2 of a ghosted row) is clicked, the blue cell selection highlight remains on after the return from the callback. A subsequent click in column 1 of the same row, will remove it, but that's not a good solution. Can anyone suggest a way to programmatically remove it ("deselect" the clicked cell)?
BTW, I just purchased Yair Altman's excellent book Undocumented Secrets of MATLAB-Java Programming, but this doesn't seem to be a covered topic.
0 Comments
Accepted Answer
  Yair Altman
      
 on 18 May 2013
        This is covered (briefly) at the bottom of page 169 of my book...
3 Comments
  telmo egues
 on 30 Jul 2018
				Hi, I've tried this solution and didn't work, how would you write the code of this?
Thanks in advance
More Answers (2)
  Walter Roberson
      
      
 on 14 May 2013
        You could try setting the uitable to 'enable' 'off', drawnow(), then 'enable' 'on' and drawnow()
2 Comments
  Jim Hokanson
      
 on 1 Nov 2021
				This accomplishes what I want, which is unlinking the keyboard from the cell. Now the up and down arrows don't navigate cells, which for my particular program was causing other problems. Note, you still have a visual indication of the cell being selected (gray box instead of blue), which in my case is OK. Ideally TMW would just provide a method to implement the actual desired feature! :/
  Jonghoon Kim
 on 7 Jan 2022
        function [] = DeselectCellinUItable()
  %---------------------------------------------------------------
  uif           = uifigure();
  uif.Units     = 'normalized';
  uif.Position  = [0.10, 0.50, 0.80, 0.40];
  %---------------------------------------------------------------
  uit                      = uitable(uif);
  uit.Units                = 'normalized';
  uit.Position             = [0.10, 0.50, 0.80, 0.40];
  uit.Data                 = cell2table(num2cell(rand(10,7)));
  uit.RowName              = 'numbered';
  uit.ColumnEditable       = true;
  uit.SelectionType        = 'cell';
  uit.Multiselect          = 'off';
  uit.SelectionChangedFcn  = @(src,event) DeselectUItable;
  %---------------------------------------------------------------
  function DeselectUItable
    uit.Selection          = [];
  end
  %---------------------------------------------------------------
end
0 Comments
See Also
Categories
				Find more on Develop Apps Using App Designer in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




