Adăugarea de metode și evenimente în componenta

Creat în exemplul component 1 PrinterList diferit de prototipul său numai suprareglare una dintre metodele componentei părinte. Acest mod de a schimba comportamentul componentei standard și punerea în aplicare a funcțiilor suplimentare ale noului component este un clar și destul de simplu. O altă metodă este comportamentul unei componente standard, este îmbunătățită prin adăugarea la aceasta tehnici proprii și (sau) implicit suprascrie manipulare eveniment.
Să considerăm prima metodă în exemplul următor.
Exemplul 2. Creați o componentă care va converti conținutul curent al câmpurilor de intrare cu majuscule și numărarea numărului de apariții ale unui caracter specificat de conținutul câmpului de intrare.
Din exemplul condiție pe care o implică faptul că noua componentă ca fiind cea mai potrivită părinte este o componentă Editare standard de clasă tEditează. Să o nouă componentă numită NewEdit. Pentru a pune în aplicare funcțiile care îi sunt atribuite în modulul componentă se va adăuga două metode:
• Procedura de toupper care va converti conținutul curent al câmpurilor de intrare cu litere majuscule;
• funcție numită GetThisCharCount, care va returna numărul de intrări specificate de conținutul de caractere din câmpul de introducere.
Efectuați pasul 3 din Exemplul 1, a crea un modul component nou gol și adăugați-l la partea de interfață a descrierii de noi metode și toupper GetThisCharCount:

Secțiunea de implementare include coduri de program de noi tehnici care pot fi după cum urmează:

Procedura TNewEdit.ToUpper;
începe
Text: = Majuscule (Text);
se încheie;
Funcția TNewEdit.GetThisCharCount (C: char): Integer;
var
i. integer;
începe
Rezultat: = 0;
pentru i: = 1 la Lungime (text) do
dacă Text [i] = C atunci Inc (Rezultat)
se încheie;

Instalați fila paletei componente componente NewEdit New Delphi. Perform etapa 4 din Exemplul 1.
Testați noua componenta, care creează o nouă aplicație, puneți componenta pe formularul NewEdit, Editare componenta de intrare pentru a defini simbolul și trei butoane. câmpuri de intrare cu ajutorul componentelor de etichete furnizează titluri, cum ar fi:. „Șirul original“ „Set un caracter“ Butoanele pot da, de asemenea, un nume, de exemplu: „Transfer la capital“, „numărul de apariții“, „Exit“. Pentru primele două butoane pentru a pregăti de tratare a evenimentelor OnClick, astfel încât fiecare dintre ele a provocat una dintre metoda add:

Procedura TForm1.Button1Click (Expeditor: TObject);
începe
NewEdit1.ToUpper;
se încheie;

Procedura TForm1.Button2Click (Expeditor: TObject);
începe
ShowMessage ( 'numărul de apariții a unui caracter' + Edit1.Text [1] + = „+
IntToStr (NewEdit1.GetThisCharCount (Edit1.Text [1])));
NewEdit1.Text: = ''; Edit1.Text: = ''
se încheie;

Lansarea aplicației și a verifica afară noua componentă NewEdit îndeplini în mod corect funcțiile.
Se efectuează etapa 6 (Exemplul 1), se prepară și se înregistreze în Delphi component icon NewEdit.
Când creați o componentă personalizată, cel mai adesea este necesar să aibă aceeași reacție la evenimentele, precum și din componenta pe care este proiectat. În cazul în care clasa componentei părinte selectată o clasă care implementează, de exemplu, una dintre componentele standard (Editare clasă în exemplul 2), grija deosebită a evenimentelor nu trebuie să: toate evenimentele componente Editare disponibile, va fi disponibil și componenta NewEdit.
Sarcina este complicată în următoarele cazuri:
1. În cazul în care o clasă care implementează o nouă componentă este succesorul unei clase abstracte (de exemplu, ar putea fi clasa TNewEdit din TCustomEdit - tEditează strămoș).
2. Dacă doriți ca noua componentă de a reacționa la un eveniment nu ca strămoșul său și reacția va fi pusă în aplicare de către componenta în sine, mai degrabă decât prin intermediul aplicației în care va fi utilizat.
În primul caz, ordinea noii clase nu sunt evenimente care nu va implicit. Dacă doriți ca noua componentă a dobândit acces la evenimente, de exemplu, onclick și onkeydown, trebuie să le declare ca proprietăți în secțiunea publicate:

După acest eveniment OnClick și onkeydown apar în fila Evenimente din Object Inspector, și pot fi programate în maniera obișnuită de prelucrare a acestora în modulul componentei.
În al doilea caz, trebuie doar să suprascrie modul de componente metoda de tratare a evenimentelor necesare. Luați în considerare cazul exemplului următor.
Exemplul 3. Crearea unei componente care va fi prezentat butonul contorizează numărul de clicuri pe și o afișează pe eticheta. Restul butonului noi ar trebui să răspundă la presarea la fel ca de obicei.
Ca o nouă componentă trebuie să fie butonul prezentat, este recomandabil să se aleagă o clasă de TButton clasă de bază. Componenta generată va fi utilizată de către constructor și tratare a evenimentului OnClick. Asociați noul nume componentă New1Button.
Completați toate etapele pentru a crea o nouă componentă modul necompletat și adăugați o descriere a unei noi clase TNew1Button următoarele linii:
• Secțiunea Fcount privat intra în domeniu: Integer pentru a stoca numărul de clicuri pe buton;
• Secțiunea antete precizează suprareglările publice - constructorul clasei de bază și Creați o tratare a evenimentului OnClick:

constructor Creare (AOwner TComponent.); trece peste;
Procedura de clic; suprascrie;

Secțiunea de implementare include coduri de program de noi metode:

Instalați New1Button fila paletei componente noi componente Delphi. Perform etapa 4 din Exemplul 1.
Testați noua componenta. pentru a crea apoi o nouă aplicație, amplasați componenta pe formularul New1Button și alte componente standard (buton, etichete și așa mai departe. d.) pentru a realiza o interfață aplicație acceptabilă. Verificați dacă noul buton este apăsat de fapt, se consideră ea însăși.
Se efectuează etapa 6 (Exemplul 1), se prepară și se înregistreze în Delphi icon componenta New1Button.
Modificați aplicația de probă, creând acolo proprii de tratare a evenimentului OnClick pentru butonul New1Button (de exemplu, în handler, puteți retrage orice procedură mesaj ShowMessage sau în alt mod). Check out cererea de locuri de muncă și de a face concluzii adecvate.

Link-uri conexe