Прокрутите список вниз автоматически - PullRequest
0 голосов
/ 29 марта 2019

Я использую Matlab R2018a, где нет функции scroll. Мне просто нужно прокрутить список вниз при добавлении элементов (динамически).

Я нашел это решение в Google, но у меня не работает.

handles.slider.Max = length(handles.listbox.String);
handles.slider.Value = handles.slider.Max;

Есть ли другое решение?

1 Ответ

1 голос
/ 29 марта 2019

Чтобы свойство ListboxTop имело эффект, пользовательский интерфейс должен быть перерисован (с использованием drawnow) после добавления элементов в список.

Пример, использование GUIDE с одним тегом списка.как listbox1:

В графическом интерфейсе OpeningFcn напишите

handles.t = timer('BusyMode', 'drop', 'ExecutionMode',...
'fixedRate', 'StartDelay', 4, 'Period', 4.0, 'TimerFcn', {@addItem, hObject});
handles.ctr = 0;
handles.t.start();
guidata(hObject, handles);

В конце добавьте

function addItem(hObject, EventData, parentO)

handles = guidata(parentO);
handles.ctr = handles.ctr + 1;
handles.listbox1.String{end+1} = sprintf('Item %i', handles.ctr);
drawnow
handles.listbox1.ListboxTop = numel(handles.listbox1.String) ;
guidata(parentO, handles);

Обратите внимание, что при раскомментировании drawnowстрока, список всегда будет переходить к выбранному элементу (первый по умолчанию).

...