Urmărirea evenimentelor
Există trei tipuri de evenimente - nivel de aplicație, nivel de document și nivel de obiect. Evenimentele primului tip sunt asociate cu deschiderea, salvarea, închiderea și imprimarea unui document, încărcarea și descărcarea aplicațiilor, schimbarea variabilelor de sistem. Evenimentele de tipul al doilea sunt asociate cu adăugarea, ștergerea, schimbarea obiectelor, activarea meniului. modificarea mărimii ferestrei de desen, regenerarea, deschiderea, închiderea, tipărirea unui desen etc. Evenimentele la nivel de obiect apar numai atunci când obiectul sa schimbat.
Scrierea de manageri de evenimente
Soluții de gestionare a evenimentelor la nivel de aplicație
Datele evenimentelor nu devin automat disponibile atunci când încărcați VBA. prin urmare, ele trebuie rezolvate manual. După aceasta, vor fi disponibile următoarele evenimente:
- AppActivate - apare imediat înainte de activarea ferestrei principale a aplicației;
- AppDeactivate - apare imediat înainte de a dezactiva fereastra principală a aplicației;
- ARXLoaded - apare atunci când aplicația ARX este încărcată;
- ARXUnLoaded - apare când descărcați aplicația ARX;
- BeginCommand - apare de îndată ce comanda este pornită, dar nu este încă finalizată;
- BeginFileDrop - apare atunci când fișierul este "abandonat" în fereastra principală a aplicației;
- BeginLISP - apare atunci când AutoCAD primește o solicitare de a executa o expresie LISP;
- BeginModal - apare imediat înainte de apariția ferestrei modale;
- BeginOpen - apare imediat după ce AutoCAD primește o cerere de deschidere a fișierului;
- BeginPlot - apare imediat după ce AutoCAD primește o solicitare de tipărire;
- BeginQuit - apare imediat înainte ca sesiunea să se încheie;
- BeginSave - apare imediat după ce AutoCAD primește solicitarea de salvare;
- EndCommand - apare imediat când comanda este finalizată;
- EndLISP - apare imediat când este evaluată expresia LISP;
- EndModal - apare imediat după închiderea ferestrei de dialog modale;
- EndOpen - apare imediat după terminarea procesului de deschidere a desenului;
- EndPlot - apare imediat după terminarea trimiterii la imprimantă;
- EndSave - apare imediat după finalizarea salvării;
- LISPCancelled - apare atunci când expresia LISP este anulată;
- NewDrawing - apare imediat înainte de crearea desenului;
- SysVarChanged - apare când se modifică valoarea variabilei de sistem;
- WindowChanged - apare atunci când fereastra aplicației este schimbată;
- WindowMovedOrResized - apare când mutați sau redimensionați fereastra aplicației.
Cum se permit evenimentele la nivel de aplicație
Înainte de a începe să utilizați evenimente la nivel de aplicație, trebuie să creați un nou modul de clasă și să declarați un obiect de tip AcadApplication utilizând cuvântul cheie cu ThereEvents. Procedura este după cum urmează:
- În VBA IDE, introduceți un modul de clasă
- Selectați un nou modul de clasă în fereastra proiectului
- Schimbați numele pe EventClassModule
- În fereastra de cod pentru clasă, adăugați o linie:
După ce obiectul nou este declarat cu evenimente, acesta va apărea în lista de obiecte din modulul de clasă și puteți selecta procedurile de eveniment pentru noul obiect creat din lista derulantă. Cu toate acestea, înainte de a începe procedura, trebuie să conectați obiectul declarat la obiectul Application. acest lucru se face cu ajutorul unui astfel de cod în fereastra principală a modulului:
După ce procedura executată InitializeEvents obiectului aplicație modul clasă va indica obiectul de aplicare (Application) Exemplu de interceptare a procesului de boot, atunci când fișierul prin drag-and-drop transferate în fereastra AutoCAD. fereastra de mesaj de ieșire cu numele fișierului
Manipularea evenimentelor la nivel de document
Evenimente la nivel de document sunt în mod constant în timp ce rulează AutoCAD. Aceasta înseamnă că acestea sunt automat disponibile atunci când proiectul VBA este încărcat. dar nu sunt disponibile, de exemplu, pentru VB. Aceasta înseamnă că pentru alte aplicații ActiveX Automation acestea trebuie rezolvate manual. Următoarele evenimente sunt disponibile:
- Activare - apare când documentul este activat;
- BeginClose - apare înainte ca documentul să fie închis;
- BeginCommand - apare imediat după începerea comenzii, dar înainte de finalizare;
- BeginDoubleClick - apare atunci când mouse-ul este dublu-clic;
- BeginLISP - apare imediat după ce AutoCAD primește solicitarea de a calcula expresia LISP;
- BeginPlot - apare imediat după ce AutoCAD primește solicitarea de a imprima documentul;
- BeginRightClick - apare după mouse-ul "clic-dreapta" în fereastra documentului;
- BeginSave - apare imediat după ce AutoCAD primește o cerere de salvare a documentului;
- BeginShortcutMenuCommand - apare după mouse-ul "clic-dreapta", dar înainte ca meniul pop-up să apară în modul comandă;
- BeginShortcutMenuDefault - are loc după „click dreapta“ mouse-ul, dar meniul pop-up în modul implicit;
- BeginShortcutMenuEdit - apare după mouse-ul "clic-dreapta", dar înainte ca meniul pop-up să apară în modul de editare;
- BeginShortcutMenuGrip - are loc după „click dreapta“ mouse-ul, dar meniul pop-up în modul „stilou“;
- BeginShortcutMenuOsnap - are loc după „click dreapta“ mouse-ul, dar meniul pop-up în modul Snap obiect;
- Dezactivare - apare când fereastra documentului este dezactivată;
- EndCommand - apare imediat după terminarea comenzii;
- EndLISP - apare atunci când expresia LISP este evaluată;
- EndPlot - apare după ce documentul este trimis pentru imprimare;
- EndSave - apare atunci când documentul este salvat;
- EndShortcutMenu - apare după ce apare meniul pop-up;
- LayoutSwitched - apare după trecerea la un alt Layout;
- LISPCancelled - apare când calculul expresiei LISP este întrerupt;
- ObjectAdded - apare când se adaugă un obiect;
- ObjectErased - apare când un obiect este șters;
- ObjectModified - apare atunci când obiectul este schimbat;
- SelectionChanged - apare atunci cand alegerea este schimbata;
- WindowChanged - apare atunci când fereastra documentului este schimbată;
- WindowMovedOrResized - apare imediat după redimensionarea sau mutarea ferestrei pentru documente.
Exemplu de codificare a procesatorilor de evenimente la nivel de document
Pentru a face acest lucru, pur și simplu selectați obiectul AutocadDocument din meniul derulant din fereastra de cod VBA IDE. Evenimentele disponibile apar în fereastra de procedură, după ce ați selectat oricare dintre ele, se va introduce cadrul de procedură pentru evenimente. Aceste proceduri se vor ocupa doar de documentul activ. Exemplu de meniu pop-up de actualizare atunci când are loc evenimentul și BeginShortcutMenuDefault EndShortcutMenu prin adăugarea punctelor. Schimbarea nu afectează fișierele de meniu.
Manipularea evenimentelor la nivel de obiect
Obiectele la nivel de obiect nu sunt disponibile în momentul descărcării VBA. După ce sunt puse la dispoziție, evenimentul Modificat devine disponibil. Următorul exemplu creează o polilinie cu un handler de evenimente care arată noua zonă când se schimbă polilinia.