Best way to handle work log listbox output in GUI?

3 ビュー (過去 30 日間)
Brian
Brian 2014 年 5 月 14 日
編集済み: per isakson 2014 年 5 月 14 日
Hello, thanks for reading this,
What I want to do is set up a listbox that outputs a work log of what I do in the GUI. What I do is output strings to the listbox whenever I do a certain task. My problem is whenever I output a string, it overrides what was already there.
What I do is set the handle for the listbox to a string value whenever I output a new string using set(handles.listbox, ...), and I know this is the problem because I'm continually setting the listbox to a new value. My issue is I don't know how to dynamically add to it without deleting what was already there, it seems wasteful to continually delete and populate it.
What I was thinking of doing is adding to a continually existing string, or concatenate several strings into a longer one using cells. I would still be continuously deleting and populating it, but I wouldn't know how else to do it. Is this the best way, or is there something better to do I'm not understanding?

採用された回答

per isakson
per isakson 2014 年 5 月 14 日
編集済み: per isakson 2014 年 5 月 14 日
"it overrides what was already there" that's the way Matlab works. You need to
  • get what's in the listbox
  • add the new entry to the list
  • set the entire list
Example:
figure
lbh = uicontrol( 'Style', 'Listbox', 'String', {'line1','line2'} );
str = get( lbh, 'String' );
str = cat( 1, {'new line'}, str );
set( lbh, 'String', str )
str{end+1} = 'bottom line';
set( lbh, 'String', str )
  3 件のコメント
per isakson
per isakson 2014 年 5 月 14 日
編集済み: per isakson 2014 年 5 月 14 日
I find it most convenient to use a cell array of strings as in the example I added to my answer.
Brian
Brian 2014 年 5 月 14 日
Thanks, I got it to work!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMigrate GUIDE Apps についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by