フィルターのクリア

uitable CellSelectionCallback on mouse RELEASE not click

3 ビュー (過去 30 日間)
Gregory Smith
Gregory Smith 2020 年 2 月 13 日
コメント済み: Adam Danz 2021 年 9 月 15 日
Hi,
I'm having trouble with the uitable callback in my Matlab GUI.
I'm having the user load in some data to a backend strucutre, then I take some info from that data and place it in a uitable in the GUI. Then when the user selects some of the data in the table I want to automatically plot the corresponding data from the database.
When the user selects just 1 row everything works fine.
However when the user drags the mouse to select multiple rows in the uitable, the plot function is running at every change to the selection. I dont want that, I want to code to run only when the user relased their mouse button and completes their selection.
The data is fairly large so it takes 0.5s or so to plot each dataset. So imagine the user wants to plot 5 dataset. They click on the table and drag their mouse across 5 rows, as they select 1 it plots 1 dataset, then a fraction of a second later their curser reaches the 2nd row and it plots the first dataset again and adds the second. Then when their mouse reaches the 3rd row, the plot is cleared and datasets 1, 2 and 3 are all plotted. Its very ugly to see and it's slowing the code down.
Is there anyway to only run the code on the release of the mouse button?
Something like:
function uitable_Database_CellSelectionCallback(hObject, eventdata, handles)
if ~mouseclick()
PlotData
end
or is there a way I can triggar a callback only once the users selection from the uitable is complete, not while they're still making a selection?
  3 件のコメント
Richard Genik
Richard Genik 2021 年 9 月 15 日
Yeah, this is a problem... have the same issue.
Adam Danz
Adam Danz 2021 年 9 月 15 日
I agree it would be nice to have a mouse button-up callback response.
If the callback function is short/fast, just allow it to update as the user drags the mouse and selects more cells. If the callback function is slow, perhaps you could add a button to start the process after selection is complete.
Another idea is to use a CellSelectionCallback function to merely store the most recent selection as a property in the app and then use a KeyReleaseFunction to evoke the callback function. You can select a key (e.g. 's', shift, alt, etc) that the user woulud hold down to make the selection and upon release, the callback function accesses the most recent cell selection. It's not idea, but it's a workaround.

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeApp Building についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by