Să mergem la afaceri. Să presupunem că proiectul pentru care am creat butonul este deja deschis. Mai întâi, creați un nou modul (File \ New \ Unit). Să salvăm imediat modulul (apăsând pe Ctrl + Shift + S) sub numele MyButtonUnit. În modul, vedem două secțiuni: interfața și implementarea. În prima secțiune vom descrie pluginurile, tipurile de date, procedurile, constantele și variabilele, iar al doilea va conține codul în sine.
După interfață, vom descrie modulele de care avem nevoie. Se pare ca aceasta:
interfață
utilizează clasele, comenzile, ferestrele, graficele, mesajele;
După aceea, trebuie să descriem noua clasă (TMyButton) pe care o creăm, pe baza clasei TCustomControl.
Vedeți trei secțiuni ale clasei noastre: private, protejate și publice. Prima descrie variabilele și procedurile care vor fi disponibile pentru utilizare numai în cadrul acestei clase. Secțiunea protejată descrie metodele implementate în clasa părinte. În cele din urmă, a treia secțiune descrie proprietățile și procedurile care vor fi disponibile în afara acestei clase.
Să începem cu secțiunea publică.
Să descriem constructorul: constructor Creator (AOwner: TComponent);
Să intrăm în secțiunea de implementare și să scriem codul care va fi executat atunci când este creat butonul.
Am dat partea obligatorie a codului. Puteți adăuga, dacă este necesar.
Acum este momentul să vă gândiți cum va funcționa butonul. Butonul nostru ar trebui să schimbe imaginea atunci când trece peste el. Trebuie să conțină o inscripție. Acesta este minimul! Odată ce butonul își schimbă aspectul când treceți peste el, atunci în secțiunea privată, descriem variabila FSelected. boolean; pentru a stoca starea butonului. Vom arunca o privire la buton mai târziu. În aceeași secțiune, vom descrie variabila FCaption. String; care stochează inscripția pe buton. Pentru ca legenda să fie schimbată cu descrierea proprietății Caption: String citit FCaption scrie SetCaption; în secțiunea publică. După cum ați observat, încă nu am creat procedura SetCaption. Să o descriem în secțiunea privată:
procedura SetCaption (Val: String);
și bineînțeles că vom crea codul în sine:
Procedura pentru vopsea este redarea butonului, pe care o vom face acum. O vom descrie în secțiunea protejată Procedură Vopsea; suprascrie;
Scrieți imediat codul:
Acordați atenție condiției. Oferim diferite opțiuni pentru înregistrare cu un buton dedicat și neselectat. Cum să lucrați cu grafica pe care, cred eu, știți, astfel încât să puteți personaliza foarte ușor aspectul în felul dvs.
Și acum cel mai interesant lucru: cum de a face butonul schimba aspectul în timp ce plutesc?
Descriim două proceduri în secțiunea privată:
procedura MEnter (var Mes: TMessage); mesaj CM_MOUSEENTER;
procedura MLeave (var Mes: TMessage); mesajul CM_MOUSELEAVE;
Procedurile răspund la mesajele de intrare și ieșire ale mouse-ului în zona butonului. Primul este pentru mesajul de intrare, iar al doilea pentru mesajul de ieșire. Dar, de fapt, codul pe care îl provoacă.
După cum puteți vedea, specificăm dacă butonul este selectat sau nu și îl redrafim.
Bine, am finalizat sarcina, dar cum să implementăm butonul în aplicație? Este foarte simplu! Ai nevoie pentru a descrie modul am creat în locația dorită și faceți clic pentru a crea și descrie-o ca o variabilă (var B. TMyButton;), creați (B: = TMyButton.Create (auto)), și reglați câmpul (B.Caption: = ' Button ';
În general:
Acum știți cum să creați propriile controale și puteți lucra la proiectarea programului dvs. Mult noroc!
Codul sursă al modulului: