Как создать кнопку и ассоциировать с ней процедуру ?

Статус
Закрыто для дальнейших ответов.

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Создал пустой gms-файл в папке Program Files\Corel\CorelDRAW Graphics Suite 13\Draw\GMS, открыл Corel, затем редактор VB, написал процедуру, сохранил. Создал пустую панель.
Теперь в наличии имеется:
- процедура
- собственная пустая панель

Как мне теперь создать свою кнопку на пустой панели и назначить ей указанную процедуру ?
Пока можно только создавать кнопку с одновременным назначением её существующей команды. Причём в настройках невозможно создать свою команду...
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Вам программно или вручную?
вручную - Tools\Customization\Commands\Macros - вытаскиваете свою процедуру на созданную Вами панель. Редактируете иконку и отображаемую подпись, назначаете клавиатурное сокращение.
полуавтомат - ищите макрос wx_MacroInstaller...
программно - см. код макроса

зы. Последнее предложение практически не понял, что такое "её существующая команда" для кнопки? В каких настройках невозможно её создать?
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Вам программно или вручную?
вручную - Tools\Customization\Commands\Macros - вытаскиваете свою процедуру на созданную Вами панель. Редактируете иконку и отображаемую подпись, назначаете клавиатурное сокращение.
Вручную. Только что означает фрагмент "ThisMacroStorage." перед именем процедуры в списке макросов ?

Здесь возникает 2 вопроса:
1. Почему при закрытии документа все инструменты становятся неактивными, а мой инструмент (кнопка) остаётся активной ?
2. Можно ли сделать так, чтобы процедура (макрос) в истории изменений была представлена одной командой ? т.е. чтобы для отмены всех изменений, выполненных процедурой (макросом) достаточно было сделать одну отмену.

зы. Последнее предложение практически не понял, что такое "её существующая команда" для кнопки? В каких настройках невозможно её создать?
Описка. Не "её", а "ей", т.е. "...с одновременным назначением ей существующей команды".
 

Sanchos

Sancho
15 лет на форуме
Сообщения
806
Реакции
158
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Потому что ваша процедура находится в "ThisMacroStorage"... вот поэтому и подписано в начале )))

1. Ну это логично ибо многие макросы работают без открытых документов. Если вас это напрягает, то озодачте свою голову сим вопросом... хелп и F2 вам в помощь)))

2. ищите на форуме или в макросах от wOxxOmа "boostStart" и "boostFinish"
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Потому что ваша процедура находится в "ThisMacroStorage"... вот поэтому и подписано в начале )))
Это модуль, который создаётся по умолчанию при создании gms-проекта ?
Тогда почему невозможно изменить его имя ?

1. Ну это логично ибо многие макросы работают без открытых документов. Если вас это напрягает, то озодачте свою голову сим вопросом... хелп и F2 вам в помощь)))
Мои макросы тоже не работают без открытых документов, только об этом кроме меня никто не знает...
В каком Help'е освещается данный вопрос - в Corel Draw X3 help или в Microsoft Visual Basic Help ?
 

Sanchos

Sancho
15 лет на форуме
Сообщения
806
Реакции
158
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

ThisMacroStorage создаётся по умолчанию и имеет своё значение немаловажное. Переименовать можно!!!

draw_vba.chm, dvba_pg.pdf

И совет небольшой - Прежде чем задать здесь вопрос, задайте его сначало самому себе. Помогает найти ответы на большинство вопросов ))))
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Так и заставили в help лезть...)
CorelDRAW X3 Objects or Corel PHOTO-PAINT X3 Objects — used mostly for event handling, contains a single item (ThisMacroStorage or ThisDocument, respectively) and should not be used for normal code
Значит ли это, что я не смогу использовать события в модулях, находящихся за пределами группы CorelDRAW X3 Objects ?
И что означает normal code во втором выделении ? Если имеется ввиду код, не использующий события, то у меня там такой код (не использующий события) нормально работает...

To rename a project
1 In the Project Explorer, select the project you want to rename.
2 In the Properties window, edit the (Name) value.
Names must follow normal variable-naming conventions, so they must begin with an alphabetic character,
and they must not contain spaces nor special characters other than underscores ( _ ).
3 Press Enter to commit your changes.
Логично было реализовать возможность изменения имени и в контектном меню. Это многим бы облегчило жизнь...

з.ы. "To rename a project" следовало бы назвать как "To rename a project or module" (с соответствующими поправками далее), поскольку отдельного раздела "To rename a module" в документе dvba_pg.pdf нет...

И как получить доступ к документу "CorelDraw Graphics Suite X3 Programming Guide for VBA" (dvba_pg.pdf) из самого Corel'а ?

До "Corel draw X3 VBA Help" (draw_vba.chm) кое-как добрался:
To access the CorelDRAW X3 VBA Help
1. Click Tools Visual Basic Visual Basic Editor.
2. Press F2.
The Object browser displays.
3. Choose CorelDRAW from the Library list box.
4. Press F1.
Ну а эти действия по открытию "Corel draw X3 VBA Help" интуитивно сложновоспроизводимы. Логичен выбор соответствующего пункта в меню Help редактора Visual Basic Editor...
Единственное оправдание - то, что редактор VB Microsoft'овский и встроить свои пункты меню было бы довольно затруднительно (хотя, думаю, и возможно)...
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

1. Почему при закрытии документа все инструменты становятся неактивными, а мой инструмент (кнопка) остаётся активной ?
1. Ну это логично ибо многие макросы работают без открытых документов. Если вас это напрягает, то озодачте свою голову сим вопросом... хелп и F2 вам в помощь)))
Ну а этого я нигде не нашёл...
 

Sanchos

Sancho
15 лет на форуме
Сообщения
806
Реакции
158
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Копайте)))) информации вам предостаточно дали... а если хотите чтоб вам расжевали и в рот положили... ;-)
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Копайте)))) информации вам предостаточно дали... а если хотите чтоб вам расжевали и в рот положили... ;-)
Сердито...

Ответьте, пожалуйста, на вопросы, приведённые в постах 7 и 8.
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Cyrax сказал(а):
... действия по открытию "Corel draw X3 VBA Help" интуитивно сложновоспроизводимы. Логичен выбор соответствующего пункта в меню Help редактора Visual Basic Editor...
Поставьте курсор на Кореловский оператор и нажмите F1.
Вместо простого открытия Object browser по F2, можете сделать правый клик по объекту/оператору и в появившемся меню выбрать - Definition (или нажать Shift+F2 на операторе).
Почему при закрытии документа все инструменты становятся неактивными, а мой инструмент (кнопка) остаётся активной?
Потому, что вы не прописали соответствующий код по управлению активностью кнопки. Кнопку можно делать активной-неактивной и т.п. не только в зависимости от наличия открытых документов, но и от наличия выделенных объектов, их типа, цвета и т.д. и т.п.
см. в сторону Application.FrameWork
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Ответ: Как создать кнопку и ассоциировать с ней процедуру ?

Вот теперь с активностью понятно, спасибо.

И как получить доступ к документу "CorelDraw Graphics Suite X3 Programming Guide for VBA" (dvba_pg.pdf) из самого Corel'а ?
А здесь сам себе отвечу :)
Из самого Corel'а можно получить доступ только к следующим help'ам:
1. CorelDRAW Help (даётся "ссылка" на Corel draw X3 VBA Help)
2. Visual Basic Reference
3. Corel draw X3 VBA Help (draw_vba.chm)
А к "CorelDraw Graphics Suite X3 Programming Guide for VBA" (dvba_pg.pdf) и другим pdf-guide'ам и tutorial'ам - только через Программы\CorelDRAW Graphics Suite X3\Documentation
 
Статус
Закрыто для дальнейших ответов.