Риба 1Спестявам примера с "Hello world!", който е вечен като любовта, пролетта и т.н.Предлагам на вниманието Ви една по-едра "риба". Да си направим потребителска форма /UserForm/, която да се отваря с клавишите F2 и F12 /налага се да има два клавиша за активиране на формата /form.show, защото докато работим не е ясно коя от двете ни ръце ще бъде свободна за да активираме с нея формата. Ако дясната ръка е свободна - ще натиснем F12, ако лявата е свободна - ще натиснем F2 и готово.
Важно е тази форма да е достъпна независимо кой файл е отворен, т.е. да е достъпна във всеки отворен файл. За да е възможно това, тя трябва да бъде създадена в проекта GlobalMacros.gms
И за да не си помисли някой, че така само си приказвам, попреписвал малко от https://community.coreldraw.com/ или от https://forum.oberonplace.com/, веднага демонстрирам как изглежда една от моите работни форми.
От този screen shot веднага стават ясни две неща:
1. Че формата се казва ufCommands и е в проекта Globalmacros.gms. Характерно за този проект е, че записаното в него е достъпно във всички файлове на CorelDRAW - стари и нови. Този файл е важен, защото може да съдържа резултата от много години къртовски труд.
2. Че тази форма съдържа адски много контроли. Бързам да кажа, че те могат да бъдат още повече.Специално внимание обръщам на зеления бутон в горния ляв ъгъл с caption VBE THIS FORM SHOW. Това е велик бутон, бутон който буквално Ви телепортира във VBE /Visual Basic Editor/ и Ви дава възможност да творите - да добавяте нови контроли, да премахвате ненужни, да редактирате стари контроли и пр. С други думи казано по време на работа с Corel можете да отворите тази форма и да натиснете някой от клавишите и. Съответно ще стане нещо, което искате. Примерно, ако искам да добавя 10 страници в активния документ ще натисна бутона ADD 10 PAGES. Познах ли? Веднага Ви хрумва идеята "Защо да са 10? Защо да не са толкова, колкото е посочено в една текстова кутия /TextBox/ след натискане на друг бутон ADD PAGES. В този момент нито кутията, нито бутонът съществуват. Но те могат да бъдат лесно създадени чрез натискане на VBE THIS FORM SHOW при което ufCommands вече се отваря чрез VBE в режим на редакция. Така, в заключение ето го и кодът на VBE THIS FORM SHOW:Оставям го без редакция, така, както съм го направил в конкретния случай.
'from excel'Application.VBE.VBProjects(Application.VBE.SelectedVBComponent.VBE.ActiveVBProject.Name).VBComponents(mycontrol.Parent.Name).Activate
'UNSELECT ALLDim BHBP_shape_range As ShapeRangeSet BHBP_shape_range = ActiveSelectionRangeDim s As Shape For Each s In ActiveSelection.Shapes 'If s.Type = cdrRectangleShape Then s.Selected = False s.Selected = False Next s'UNSELECT ALL
Application.GlobalUserData("meTopLeft", 1) = Me.TopApplication.GlobalUserData("meTopLeft", 2) = Me.Left
Dim vbeditor As VBIDE.VBEApplication.VBE.MainWindow.Visible = TrueSet vbeditor = Application.VBE''''''''''''''''MsgBox vbeditor.VBProjects("GlobalMacros").VBComponents.Count'''''''''''''''''''''''''''''''vbeditor.VBProjects("GlobalMacros").VBComponents("ufCommands").Activate'''''''''''''''''''''''''''''''vbeditor.VBProjects("GlobalMacros").VBComponents(Me.Name).Activate
vbeditor.ActiveVBProject.VBComponents(Me.Name).Activate
BHBP_shape_range.CreateSelection
'vbeditor.ActiveVBProject.VBComponents("ufCommands").Activate
Най-важните редове са на жълт фон. Благодарение на тях, ако този бутон с този код се постави на коя да е форма, натискането му ще води до отваряне на формата в режим за редакция. Това много облегчава автоматизацията на процесите. И не само. Стремежът трябва да бъде програмният код да е изцяло във формата. Така тя лесно може да бъде споделена /shared/ с други потребители. Формата е нещо като раничка с инструменти. Но раничка, към съдържанието на която лесно можеш да добавиш нов инструмент или да редактираш стар.
И накрая /съмнявам се дали chat Bot или AI може да измисли това, но може да запомни цялата българска, пък и световна литература и да я цитира "по памет", да я миксира, компилира и представя за своя/Драги ми Смехурко, поздрав най-сърдечен!Твой приятел вечен: Весел Патиланчо.