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

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

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

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

Сообщений: 10


« Стартовое сообщение: 17 Апрель 2020, 11:52 »

Добрый день!

Не могу нигде найти как получить доступ к кнопке, которая расположена на листе.

Есть кнопка Button1 на листе Sheet1. При нажатии на эту кнопку выполняется макрос, из которого нужно сделать ее Enabled = false.

Подскажите, пожалуйста, куда копать?
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 17 Апрель 2020, 12:05 »

Образец документа с кнопкой и макросом покажите?
Записан

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

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #2: 17 Апрель 2020, 12:21 »

В общем так:
Код:
Sub Main(event)       'макрос назначенный кнопке
event.Source.Model.Enabled = false
End Sub
Записан

quarantine85
Участник
**
Offline Offline

Сообщений: 10


« Ответ #3: 17 Апрель 2020, 12:28 »

В общем так:
Код:
Sub Main(event)       'макрос назначенный кнопке
event.Source.Model.Enabled = false
End Sub

Спасибо сработало.
А как получить доступ к другой кнопки?

Скажем есть Button1 и Button2
Нажал Button1 а в макросе управляем доступностью button2.
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #4: 17 Апрель 2020, 12:39 »

Тогда так:
Код:
Sub Main
ThisComponent.DrawPages.getByIndex(0).getByIndex(0).Control.Enabled = false
End Sub

но нужно будет проверить что получен нужный объект.
Записан

quarantine85
Участник
**
Offline Offline

Сообщений: 10


« Ответ #5: 17 Апрель 2020, 12:45 »

Спасибо!

Работает. То, что нужно!
Записан
eeigor
Ubuntu 18.04 LTS
Форумчанин
***
Offline Offline

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


« Ответ #6: 17 Апрель 2020, 19:32 »

Как проверить кнопку?
oShape = oSheet.DrawPage.getByIndex(i)
      If oShape.supportsService("com.sun.star.drawing.ControlShape") Then
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 17 Апрель 2020, 20:20 »

Я имел в виду, что когда получают элемент по индексу нужно проверять то ли мы получили что хотели, если будут удалены элементы перед искомым, то его индекс изменится и мы получим по индексу другой элемент или ошибку индекса. Проверять нужно по имени, т.к. по сервису можем получить другой объект того же типа.

Можно также получить доступ по имени:
Код:
Sub Main
Dim oDrawPage, oForm, oButt
oDrawPage = ThisComponent.DrawPages.getByIndex(0)
oForm = oDrawPage.Forms.getByName("Форма")
oButt = oForm.getByName("Кнопка 1")
End Sub

Как видно, вариантов несколько, выбирать нужно подходящий.
Записан

Tillevion
Участник
**
Offline Offline

Сообщений: 37


« Ответ #8: 17 Май 2020, 14:22 »

Подскажите, а как можно изменить размеры и положение кнопки на листе? Например, PositionY.
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 17 Май 2020, 19:15 »

Пробуйте:
Код:
Sub Main
Dim oDrawPages, oPage, oShape
Dim oSize As New com.sun.star.awt.Size
Dim oPos As New com.sun.star.awt.Point
oDrawPages = ThisComponent.DrawPages
oPage = oDrawPages.getByIndex(0)
oShape = oPage.getByIndex(0)

oSize.Width = 4500
oSize.Height = 2250
oShape.setSize(oSize)

oPos.X = 1500
oPos.Y = 2500
oShape.setPosition(oPos)

End Sub
Записан

Tillevion
Участник
**
Offline Offline

Сообщений: 37


« Ответ #10: 18 Май 2020, 19:16 »

Пробуйте:
Благодарю! Работает.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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