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

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

25 Ноябрь 2017, 12:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Изменение обрамления элемента управления в диалоге (Model.Border) программой ?  (Прочитано 816 раз)
0 Пользователей и 1 Гость смотрят эту тему.
idro
Новичок
*
Offline Offline

Сообщений: 24


« Стартовое сообщение: 30 Декабрь 2016, 20:11 »

Доброе время суток !
Пытаюсь сменить обрамление элемента управления. По хелпу это  Model.Border ( 0 - нет границы, 1 - 3D граница, 2 - Плоская граница)
В рабочем проекте контролы создаются программно, хочется что-бы они были с границами.

На этом простом примере хочу разобраться в чем проблема.
В диалоге есть просто надпись (Label1) без границы, нужно что-бы появилась границы.
Код:
Sub test
 DialogLibraries.LoadLibrary("Standard")
 Dlg =CreateUnoDialog(DialogLibraries.Standard.Dialog)
 oControl = Dlg.getControl("Label1")
 oControl.model.border=2
 Dlg.execute()
End Sub
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 30 Декабрь 2016, 21:48 »

В диалоге есть просто надпись (Label1) без границы, нужно что-бы появилась границы.
Так не получится, если границы нет, то и суда нет (каламбур), а если граница есть, то её можно изменить.
Записан

rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #2: 31 Декабрь 2016, 10:12 »

Практическое решение: создать элемент с границей (не важно, вручную или программно), а затем менять цвет рамки с 0 (чёрная рамка) на -1 (прозрачная, невидимая рамка)
Код:
Sub test
DialogLibraries.LoadLibrary("Standard")
Dlg =CreateUnoDialog(DialogLibraries.Standard.Dialog1)
oControl = Dlg.getControl("Label1")
'oControl.model.border=2
oControl.model.BorderColor=-1   'граница есть, но она невидимая
Dlg.execute()
End Sub
Записан

idro
Новичок
*
Offline Offline

Сообщений: 24


« Ответ #3: 31 Декабрь 2016, 14:08 »

Спасибо за ответ.
А как тогда создать программно элемент с границей ?

Код:
Sub Test
           DialogLibraries.LoadLibrary("Standard")
           Dlg =CreateUnoDialog(DialogLibraries.Standard.Dialog1)
  NewLater = createUnoService("com.sun.star.awt.UnoControlFixedText")
     NewModel = Dlg.Model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
       NewLater.setModel(NewModel)
    Dlg.addControl("Label1",NewLater)
           oControl = Dlg.getControl("Label1")
           oControl.text = "TEST"
           oControl.Model.Name="NewBox"
           oControl.Model.PositionX=4
           oControl.Model.PositionY=20
           oControl.Model.Height=10
           oControl.Model.Width=100
           oControl.Model.BackgroundColor=16777062
           oControl.Model.Border=2
           oControl.Model.BorderColor=0
           Dlg.execute()
End Sub
« Последнее редактирование: 31 Декабрь 2016, 14:18 от idro » Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #4: 31 Декабрь 2016, 14:50 »

В рабочем проекте контролы создаются программно, хочется что-бы они были с границами.
Так создаются или "хотим создать, но не знаем как"?

У вас есть "рисованный" диалог, он пустой или в нём что-то есть? Если элементы управления заданы в диалоге, то там же задайте им "плоскую" границу, останется только менять ей цвет с чёрного на прозрачный и обратно.

Если хотите вставлять в диалог новый элемент, нужно задать ему как минимум размеры, и если надо некоторые другие параметры.
Код:
Sub main
DialogLibraries.LoadLibrary("Standard")
Dlg=CreateUnoDialog(DialogLibraries.Standard.Dialog1)
NewLater=Dlg.Model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
NewLater.Height=10
NewLater.Width=100
NewLater.PositionX=4
NewLater.PositionY=20
NewLater.Label="TEST"
NewLater.Border=2
NewLater.BorderColor=0
NewLater.BackgroundColor=16777062
Dlg.Model.insertByName("Label1",NewLater)
Dlg.execute()
End Sub
Записан

idro
Новичок
*
Offline Offline

Сообщений: 24


« Ответ #5: 31 Декабрь 2016, 16:14 »

Большое спасибо, работает!
Моя ошибка была, что я сначала создавал контрол и в нём менял модель, а надо было на основании изменённой модели создавать контрол ?
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #6: 31 Декабрь 2016, 16:33 »

Моя ошибка была, что я сначала создавал контрол и в нём менял модель, а надо было на основании изменённой модели создавать контрол ?
Вы сначала создали элемент (а потом модель) с параметрами по умолчанию, а они не имеют границы, следовательно и менять нечего. Вообще, сначала надо создавать модель элемента с параметрами, а затем вставлять модель элемента в модель диалога. Сам элемент управления создаётся по факту вставки его модели и в соответствии с параметрами модели.
Записан

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

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