[РЕШЕНО]Base. Установка фокуса на листбокс

Автор Ириминаге, 25 мая 2022, 09:24

0 Пользователи и 1 гость просматривают эту тему.

Ириминаге

Здравствуйте! Мне необходимо, чтобы фокус в определенный момент встал на листбокс. Курение интернета и Питоньяка результатов не дали... Листбокс находится на Форме, а не в Диалоге. Не подскажете ли, как это лучше сделать?
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

economist

Для успешного "выделения" контрола нужно получить View контрола. Помним что Model, View, Control - это три стороны одной медальки. Найти вью проще всего с помощью готовой LO-либы Tools, которую стоит подключить макросом при открытии документа:

If GlobalScope.BasicLibraries.hasByName("Tools") Then
     GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If


Ну а дальше просто:


sNameControl = "Имя моего контрола"
oForm = ThisComponent.drawpage.forms.GetByName("Имя Формы") ' для Writer/Calc, в Base - иначе!
cControl = oForm.GetByName(sNameControl) ' получили контрлл
oController = ThisComponent.CurrentController ' получили контрллер
oControlView = oController.GetControl(cControl) ' получили вью контрола
oControlView.SetFocus ' установили фокус


Фокус выглядит по разному для режима Разработки и Обычного. Чтобы код заработал в Base - нужно переписать строку с oForm = ... 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Ириминаге

Спасибо за ответ! Пока форум лежал в реанимации, удалось найти решение. Хватило пяти строк, для Base:

zForm = ThisComponent.Drawpage.Forms.getByName("ZapMain") 'доступ к Форме
ZapBoxDat = zForm.getByName("ZapDat") 'доступ к боксу даты
zControl =  ThisComponent.CurrentController
zLBC = zControl.getcontrol(ZapBoxDat)
zLBC.setfocus
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...