Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

8 Август 2022, 00:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Base. Установка фокуса на листбокс  (Прочитано 510 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ириминаге
Всем бобра!
Форумчанин
***
Offline Offline

Сообщений: 63


« Стартовое сообщение: 25 Май 2022, 09:24 »

Здравствуйте! Мне необходимо, чтобы фокус в определенный момент встал на листбокс. Курение интернета и Питоньяка результатов не дали... Листбокс находится на Форме, а не в Диалоге. Не подскажете ли, как это лучше сделать?
« Последнее редактирование: 27 Май 2022, 08:50 от Ириминаге » Записан

Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...
economist
Форумчанин
***
Offline Offline

Сообщений: 1 714


« Ответ #1: 25 Май 2022, 12:06 »

Для успешного "выделения" контрола нужно получить 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 = ... 
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Ириминаге
Всем бобра!
Форумчанин
***
Offline Offline

Сообщений: 63


« Ответ #2: 27 Май 2022, 08:50 »

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

Код:
zForm = ThisComponent.Drawpage.Forms.getByName("ZapMain") 'доступ к Форме
ZapBoxDat = zForm.getByName("ZapDat") 'доступ к боксу даты
zControl =  ThisComponent.CurrentController
zLBC = zControl.getcontrol(ZapBoxDat)
zLBC.setfocus
Записан

Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!