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

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

5 Июль 2020, 16:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Программируемый Диалог  (Прочитано 1596 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 953


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #15: 13 Июнь 2020, 16:28 »

Так будет проще:
Код:
Sub Dlg_Display()
Dim oWindow, oDlg, oDlgModel, WW&, WH&
oWindow = CreateUnoService("com.sun.star.awt.Toolkit")
WW = oWindow.ActiveTopWindow.Info.Width
WH = oWindow.ActiveTopWindow.Info.Height
oDlgModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
oDlgModel.setPropertyValue("Title", "Диалог - Большое Окно Большого Брата")
oDlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDlg.setPosSize(0, 0, WW, WH, 15)                '<—— так
oDlg.setModel(oDlgModel)
oDlg.createPeer(oWindow, null)
oDlg.execute()
End Sub
Записан

Tigrik
Форумчанин
***
Offline Offline

Сообщений: 94


« Ответ #16: 13 Июнь 2020, 17:56 »

Так будет проще:
Спасибо.
Разные методы по разному размеры считают?
С setPropertyValue, у меня, без коэффициентов получался больший размер окна.

Главное я понял, что ActiveTopWindow.Info подходит для таких задач.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 953


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #17: 13 Июнь 2020, 19:01 »

Разные методы по разному размеры считают?
На то они и разные.

Ещё можно сконвертировать размеры, проверьте такой вариант:
Код:
Sub DlgDisplay
Dim oWindow, winSize, oDlg, oDlgModel, newSize, w%, h%, bt
oWindow = CreateUnoService("com.sun.star.awt.Toolkit")
winSize = oWindow.ActiveTopWindow.Size
oDlgModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
oDlgModel.setPropertyValue("Title", "Диалог - Большое Окно")
oDlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDlg.setModel(oDlgModel)
oDlg.createPeer(oWindow, null)

newSize = oDlg.convertSizeToLogic(winSize, 17)   '17 или 18
w = newSize.Width
h = newSize.Height

oDlgModel.setPropertyValue("Width", w)
oDlgModel.setPropertyValue("Height", h)

bt = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
bt.setPropertyValues(Array("Height","PositionX","PositionY","PushButtonType","Label","Width"),Array(15, w-50, h-20, 1, "Step", 40))
oDlgModel.insertByName("StepButton",bt)
oDlg.execute()
End Sub
Записан

Tigrik
Форумчанин
***
Offline Offline

Сообщений: 94


« Ответ #18: 13 Июнь 2020, 20:05 »

Разные методы по разному размеры считают?
На то они и разные.

Ещё можно сконвертировать размеры, проверьте такой вариант:
Rami, вот это класс!
Спасибо большое!

У этого метода convertSizeToLogic второй параметр (TargetUnit) имеет очень интересные константы.
17 и 18 дают одинаковые конвертации, а 16 - как раз показывает пиксели у моего монитора (аналогично от метода ActiveTopWindow.Info).
Понравилась константа KM (11) - размеры в километрах. Смеющийся
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 953


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #19: 13 Июнь 2020, 20:31 »

Понравилась константа KM (11) - размеры в километрах. Смеющийся
Не отъезжайте далеко от города в поисках кнопок и окошек от вашего диалога Смеющийся
Записан

Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

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