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

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

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

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

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 580


« Ответ #15: 23 Ноябрь 2016, 14:09 »

Тогда получается мой вопрос переменной не решить?

Вам ведь rami дал решение: в Вашем исходном примере поменять Public на Global - и всё. Да, инкапсуляции не будет, так это и не C++
Записан

С уважением,
Михаил Каганский
Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #16: 23 Ноябрь 2016, 15:09 »

А можно просто каждый раз заглядывать в тот же самый ListBox и читать его значение.
В общем то можно. Найти какое-то не используемое его свойство и в него писать последний ИтемИндекс.... Ну типа свойства Tag у TComponent(по моему) в Делфи.
Любое из этих решений может быть реализовано и, скорее всего, будет работать годами.
Улыбка Нет ничего постоянней временного)

Тогда получается мой вопрос переменной не решить?

Вам ведь rami дал решение: в Вашем исходном примере поменять Public на Global - и всё.
Виноват, не верно принял его ответ. Спасибо за то, что ткнули меня носом Улыбка И за ссылку спасибо.
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #17: 23 Ноябрь 2016, 15:16 »

Найти какое-то не используемое его свойство и в него писать последний ИтемИндекс.... Ну типа свойства Tag у TComponent(по моему) в Делфи.
Так этот самый Tag есть у всех элементов управления.
Записан

Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #18: 23 Ноябрь 2016, 15:22 »

И всеж, как лучше/правильнее сделать:
так
Код:
      Option Explicit
       Global shtSystem as Object, shtReport as Object.....


Sub MainInit
shtSystem = ThisComponent.Sheets(0)
shtReport = ThisComponent.Sheets(1)
shtData   = ThisComponent.Sheets(2)
...........
End Sub

Sub Namesub
dim oCell
       oCell = shtSystem.getcellbyposition()
....
end sub
или так:
Код:
      Option Explicit
       Public shtSystem as Object, shtReport as Object.....


Sub NameSub1
dim oCell
shtSystem = ThisComponent.Sheets(0)
       oCell = shtSystem.getcellbyposition()
...........
End Sub

Sub NameSub2
dim oRange
shtSystem = ThisComponent.Sheets(0)
       oRange = shtSystem.getRangebyname()
...........
End Sub
« Последнее редактирование: 23 Ноябрь 2016, 15:37 от Alex16 » Записан
Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #19: 23 Ноябрь 2016, 15:35 »

По-моему, Вы несколько небрежно составили пример.
Исправил.
Так этот самый Tag есть у всех элементов управления.
Хм... в свойствах Tag - нету. Есть Дополнительная информация - оно?


* Property.jpg (132.46 Кб, 578x828 - просмотрено 8 раз.)
« Последнее редактирование: 23 Ноябрь 2016, 15:41 от Alex16 » Записан
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 580


« Ответ #20: 23 Ноябрь 2016, 15:38 »

Не стоит делать глобальные ссылки на объекты
Вы непринуждённо переключились с чисел на объекты
А объекты, ссылки на которые Вы собрались хранить, управляются программой и могут измениться. Лист может удалиться, к примеру.
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #21: 23 Ноябрь 2016, 15:44 »

И всеж, как лучше/правильнее сделать:
Лучше так, как будет работать, но я никогда не назначаю переменные листа вне макроса. Только переменные документа oDoc и подобные (если нужно работать с несколькими документами одновременно) или или переменную диалога oDlg (но не всегда, а когда нужно). Составные части документа (листы, диапазоны и т.д.) или диалога (элементы) легко получить из соответствующих переменных.
Записан

Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #22: 23 Ноябрь 2016, 15:52 »

Вы непринуждённо переключились с чисел на объекты
Дело в том, что первый вариант был, только вместо глобал был паблик. И среди объявленных переменных объектов, объявил числовую. У которой и заметил что в ней не сохраняется значение, но в тоже время с объектными переменными проблем не возникло, а у меня возник вопрос.
А объекты, ссылки на которые Вы собрались хранить, управляются программой и могут измениться. Лист может удалиться, к примеру.
Ну в моем случае этого не должно произойти по определению книги, которую делаю. В ней будут три фиксированных листа, два из них будут скрыты, доступ к которым будет из макросов.
А на одном листе, практически все ячейки ридонли, только в некоторые вносятся данные.
Но мысль понял правильно. Спасибо за помощь и разъяснения.
Записан
Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #23: 23 Ноябрь 2016, 15:55 »

И всеж, как лучше/правильнее сделать:
Составные части документа (листы, диапазоны и т.д.) или диалога (элементы) легко получить из соответствующих переменных.
Ну в общем-то понятно. Спасибо
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #24: 23 Ноябрь 2016, 15:55 »

Хм... в свойствах Tag - нету. Есть Дополнительная информация - оно?
Оно, это перевод в интерфейсе, а в макросе есть свойство объекта элемента управления .tag
Записан

JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 313


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #25: 23 Ноябрь 2016, 16:07 »

Все-таки не понимаю... Насколько я понял предполагаемый сценарий работы, в комбобоксе выбирается какое-то значение, которое считывается в переменную и будет многократно использоваться в макросах... Зачем писать в .tag это значение (текст, потом обратно в число преобразовывать), если в любой момент можно опять получить само значение?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 580


« Ответ #26: 23 Ноябрь 2016, 16:10 »

Зачем писать в .tag это значение (текст, потом обратно в число преобразовывать), если в любой момент можно опять получить само значение?

+
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #27: 23 Ноябрь 2016, 16:19 »

Все-таки не понимаю... Насколько я понял предполагаемый сценарий работы, в комбобоксе выбирается какое-то значение, которое считывается в переменную и будет многократно использоваться в макросах... Зачем писать в .tag это значение (текст, потом обратно в число преобразовывать), если в любой момент можно опять получить само значение?
Ты такой непонятливый, ну, точно как я Смеющийся Смеющийся Смеющийся , я думал, что речь идёт о диалоге, но если элемент "список" на самом листе, то можно назначить связанную ячейку и вообще забыть о макросах: выбранная запись или её позиция будут отображаться в связанной ячейке — эту ячейку обрабатывать формулами. Или я в очередной раз не понял Непонимающий
Записан

Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #28: 23 Ноябрь 2016, 16:30 »

Все-таки не понимаю... Насколько я понял предполагаемый сценарий работы, в комбобоксе выбирается какое-то значение, которое считывается в переменную и будет многократно использоваться в макросах..
Не верно. Эту переменную проверяю в момент выбора в списке. После выбора в списке, мне нужен индекс предыдущего выбора. Нужно это, что бы не выполнять повторно некоторые действия, для определенных пунктов. Т.е. один раз выполняем и далее если выбор в списке в этих определенных пунктах, то не выполняем код пока не будет выбран "другой пункт" у которого тоже нужно выполнить похожий код один раз. Ну как-то так)
Записан
Alex16
Постоялец
***
Offline Offline

Сообщений: 114


« Ответ #29: 23 Ноябрь 2016, 16:32 »

А то о чем вы говорите - я бы сообразил, не совсем пустоголовый)
Но моя вина в том, что не смог понятно объяснить
Записан
Страниц: « 1 2 3 4 »   Вверх
  Печать  
 
Перейти в:  

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