Ce nume teribil are subiectul! De fapt, totul este mult mai simplu. Vreau să vă spun cum să faceți ca meniul principal din programul dvs. să fie personalizabil (adică unele elemente rare folosite pot fi ascunse sau adăugate elemente de meniu contextuale). Tot în acest articol, vom aborda întrebarea despre cum să sincronizăm ToolBar-ul cu meniul, făcându-l să-și schimbe aspectul, în funcție de contextul programului. Și, în sfârșit, să trecem peste acele componente care sunt proiectate pentru a face acest proces mai ușor pentru noi și nu pentru a face totul manual. Și bineînțeles, facem toate acestea cu un exemplu.
Deci, dăm clic pe Delphi sau pe Fișierul -> New-> VCL Formular de aplicații pentru formular. Deoarece mediul de programare Delphi este ceva mai comun în partea de limbă rusă din lume (și, de asemenea, în America Latină :)) decât C ++ Builder. atunci voi însoți exemplul în ea. Pentru Bilder, diferențele vor fi nesemnificative și vor fi exprimate doar în sintaxa limbii. Prin urmare, adaptarea unui exemplu de la Builder la orice programator mai mult sau mai puțin începător de muncă nu va fi.
Imediat redenumiți formularul nostru în inspectorul de obiecte din frmMain (Nume proprietate). În proprietatea Caption (titlul formularului), scrieți "aplicația de testare TACtionManager" sau ceva similar. Vă recomandăm să faceți acest lucru astfel încât mai târziu să fie mai convenabil să faceți distincția între proiecte, dacă dintr-o dată după o vreme vă veți întoarce la ele ca exemplu. Să salvăm proiectul ca (Save Project As ...), să-i dăm un nume, de exemplu: ActionManTest. și salvați fișierul din formularul principal sub numele simplu principal.
Adăugați încă o acțiune - ieșiți din program. Faceți clic din nou cu mouse-ul - meniul drop-down din meniul Adăugați acțiune standard - și din nou în ramura de fișier selectați TFileExit.
Se afișează fișierul de meniu Fișier. Dar noi, vorbitorii de limbă rusă, vrem să fie numit Dosar. Datorită faptului că este disponibil acum în inspectorul de obiecte, pur și simplu îl selectăm cu mouse-ul și îl redenumim.
Zapsukaem lucrările noastre și o aplicație pe deplin funcțional, capabil de a deschide fișierul (în teorie - cel puțin arată fișierul dialog deschis ... fizic orice fișier, care nu ne deschidem) și în afara programelor de clic în meniul principal sau bara de instrumente. Și asta nu are o singură linie de cod!
Dar în titlul înțelept al articolului, încă am primit TApplicationEvents. Ce este această fiară și ce este aici pentru: este componenta responsabilă de manipularea evenimentelor aplicațiilor de sistem, și anume: minimizarea ferestrelor, manipularea în așteptare, manipularea recuperării etc. Mai precis, în cazul nostru, va fi utilă pentru aceeași sincronizare, pe care am menționat-o în titlul articolului.
Să presupunem că nu vrem ca utilizatorul să poată deschide fișiere în orice moment. Pentru a face acest lucru, trebuie să facem ca elementele de meniu și butoanele din bara de instrumente care sunt responsabile pentru deschiderea fișierului să nu fie disponibile (Dezactivat sau mai degrabă Enabled: = false). Un exemplu de curs este tras de urechi. În practică, mai des, dimpotrivă, butoanele de salvare sunt interzise (dacă fișierul nu este deschis - nu există nimic de salvat) sau accesul la nimic (dacă versiunea este încercată) etc. Bine, înțelegerea principiilor mecanismului nu este importantă. Cel mai important lucru este că nu vom face toate aceste lucruri manual, dar vom instrui instructorul OnIdle al componentei TApplicationEvents. Deci, deschizând proprietățile și accesând fila Evenimente. creați un handler OnIdle (faceți dublu clic pe rândul corespunzător de lângă proprietatea de care avem nevoie). Acum, pentru scopuri demonstrative, vreau ca fișierul să se deschidă numai la câteva minute ale timpului curent, adică primul, al treilea, al cincilea, etc. dar pe o bază uniformă, utilizatorul a fost lipsit de o asemenea bucurie.
Se scrie următorul cod de procesare:
Funcția MinuteOf returnează numărul de minute la un moment dat, în cazul nostru Acum. Această funcție este declarată în modulul DateUtils, deci trebuie să fie conectat (scris foloseste DateUtils, imediat după punerea în aplicare a cuvintelor cheie în codul) funcția Odd returnează true. dacă argumentul său este ciudat. Astfel, elementele noastre de meniu și pictogramele din bara de instrumente vor fi activate sau dezactivate în funcție de faptul dacă sunt sau nu prezente merge acum minut chotnaya de timp a sistemului. Rețineți că nu se referă la proprietatea Enabled unei pictograme element de meniu sau bara de instrumente, și fă-o într-un singur loc - în acțiune FileOpen1 proprietate activat. Aceasta funcționează deoarece elementul de meniu și elementul din bara de instrumente au o acțiune comună = FileOpen1.
Rulați aplicația noastră de test și pentru câteva minute, apoi uita-te la ea (și anume, Open elementul de meniu și bara de instrumente), apoi ceasul de sistem (în mod implicit în colțul din dreapta jos al ecranului). Și vedem că imediat ce vine minutul, aceste elemente devin interzise și invers. Acest lucru este posibil datorită procesorului OnIdle al componentei TApplicationEvents.
Desigur, în practică, în acest manipulator sunt scrise mai multe lucruri reale. De exemplu, dacă fișierul este deschis și modificat, sunt disponibile elementele de meniu Salvare și Salvare ca ... și așa mai departe.