Componentele delphi

Utilizarea componentelor

Componenta TCheckBox servește pentru a prezenta o selecție utilizatorului - o casetă de selectare care poate fi verificată sau neschimbată. Cea mai importantă proprietate a componentei TCheckBox este proprietatea Checked. care determină dacă este selectată caseta de selectare. Managerul de evenimente OnClick este cel mai potrivit pentru a pune codul în el, care trebuie executat când se schimbă starea casetei de control.







Acum vom vedea cum puteți utiliza componenta TCheckBox. Pentru a permite utilizatorului să afișeze / ascunde și să activeze / să blocheze toate butoanele din formular.

Componentele delphi

Pot fi implementate cel puțin trei moduri. Prima metodă este cea mai simplă, dar mai puțin perfectă, mai predispusă la erori și mai intensă pentru muncă. Este de a modifica proprietățile Enabled și Visible ale fiecărui buton din formular.

Al doilea mod mai potrivit de a lucra cu un număr mare de componente este să utilizați numele componentelor implicite și metoda FindComponent. Ca o regulă, fereastra Designer Surface generează astfel de nume de componente, care vor fi limitate doar pentru ele, dar nu și pentru noi; Dacă doriți ca codul dvs. să fie mai ușor de înțeles, aceste nume trebuie modificate. Cu toate acestea, stilul de denumire al componentelor adăugate în fereastra Designer Surface. care este definită ca ComponentName + Unique_Index. în acest caz va fi foarte util. Vă permite să trimiteți cu ușurință componentele necesare apelând metoda FindComponent în bucla.

Metoda FindComponent utilizează parametrul ANAME pentru a găsi proprietatea Componente și pentru a returna o componentă cu același nume. Dacă componenta nu este găsită, funcția va reveni la zero. Proprietatea Componente reprezintă o listă a tuturor componentelor care aparțin unei anumite componente.

Exemplul de cod de mai jos arată cum puteți afla că formularul are o componentă numită MyButton.

Pentru a afișa / ascunde sau a activa / bloca toate butoanele din formular, trebuie să apelați metoda FindComponent într-o buclă și să utilizați contorul buclă pentru a genera numele componentei necesare. Deoarece metoda FindComponent întoarce întotdeauna un tip TComponent. va trebui să aduceți componenta rezultantă la tipul TButton. Înainte de a se referi la proprietățile activate și dezactivate.

Operațiunea este în Delphi

Cea de a treia modalitate de a lucra cu un număr mare de componente în timpul execuției este să vizualizați manual proprietatea Componente și să aflați dacă componenta are un tip TButton sau orice alt tip cerut. Operația este utilizată pentru a afla tipul de componentă în timpul execuției. Sintaxa pentru funcționarea este prezentată mai jos:

Operația is returnă True. dacă obiectul este o instanță de tip Class. sau o instanță a unuia dintre moștenitorii clasei. De exemplu, următorul test va fi evaluat ca fiind True în orice caz. Deoarece forma principală este moștenitorul clasei TForm.

Componenta TRadioButton este utilizată în mod similar cu componenta TCheckBox. Proprietatea Checked determină dacă comutatorul este setat, iar proprietatea OnClick permite executarea codului imediat după setarea comutatorului.

Să folosim componenta TRadioButton atunci când creați o aplicație, cu care puteți schimba caseta de dialog a mesajului, formată din funcția MessageDlg. Funcția MessageDlg este de obicei utilizată pentru afișarea a patru ferestre standard de mesaje: o casetă de dialog de avertizare, o eroare, o fereastră de informații și o fereastră de confirmare.

Componentele delphi
Componentele delphi
Componentele delphi
Componentele delphi

Creați următoarea casetă de dialog

Componentele delphi

Tipul ferestrei de mesaj este determinat de enumerarea TMsgDlgType. care este anunțat în modulul Dialoguri:

Cea mai ușoară modalitate de modificare a tipului de fereastră a mesajului este definirea variabilei private TMsgDlgType și atribuirea valorii corespunzătoare evenimentului OnClick al fiecărui comutator, așa cum se arată în lista de mai jos.

De asemenea, puteți schimba tipul ferestrei mesajului combinând codul manipulatorilor de evenimente existenți într-un singur handler de evenimente. Într-un handler comun, putem folosi parametrul Sender pentru a identifica comutatorul care a cauzat de tratare a evenimentelor, precum și o modificare corespunzătoare a tipului de casetă de mesaj. Mai întâi, eliminați întreaga gestionare a evenimentelor OnClick pentru comutatoarele de eroare. Informații și confirmare și introduceți următorul cod în modulul de procesare a evenimentului OnClick al comutatorului de avertizare:

Acum trebuie să atribuim acest handler evenimentului OnClick al fiecăruia dintre cele patru comutatoare. Atribuirea unui handler pentru un eveniment la un număr mare de componente este cea mai rapidă posibilă dacă selectați mai întâi componentele din fereastra Designer Surface. și apoi alocați dispozitivul de manipulare evenimentului corespunzător în inspectorul de obiecte Inspector de obiecte.







O modalitate mai convenabilă de a schimba tipul unei ferestre de mesaj este prin utilizarea proprietății Tag. Această proprietate nu are un scop special, fără a număra faptul că vă permite să stocați o valoare întregă și să o utilizați când este necesar. În acest caz, putem folosi proprietatea Tag pentru a elimina complet constructul if-then de la handler-ul evenimentului.

Sarcina noastră este să alocăm proprietății Tag a comutatoarelor o valoare intregă care se va potrivi cu valorile enumerate ale constantelor mtWarning. mtError. mtInformation și mtConfirmation. Astfel, putem lăsa neschimbată proprietatea Tag a comutatorului Avertisment, deoarece valoarea Ord (mtWarning) este 0, deși va trebui să modificăm proprietatea Tag a celorlalte trei comutatoare. Deci, setați proprietatea Tag a comutatorului Error la 1, proprietatea Tag a comutatorului Information este setată la 2. Proprietatea Tag a comutatorului Confirmation este setată la 3.

Acum că proprietatea Tag a tuturor celor patru comutatoare conține tipul de mesaj corespunzător, nu este nevoie să folosim constructul if-then. pentru a determina tipul ferestrei de mesaje. Trebuie doar să aducem valoarea componentei Tag a expeditorului la tipul TMsgDlgType. De fapt, trebuie să efectuăm două turnări la tip. În primul rând, trebuie să aducem obiectul Sender la tipul TComponent. deoarece proprietatea Tag este definită în clasa TComponent. apoi aduceți proprietatea Tag la tipul TMsgDlgType.

După cum puteți vedea, utilizarea proprietății Tag reduce semnificativ numărul de linii de cod necesare pentru a schimba tipul ferestrei de mesaje. Dacă doriți, puteți să ștergeți și variabila SenderComp și să scrieți ambele semnături la tipul de pe aceeași linie pentru a reduce în continuare numărul de linii de cod.

Componenta TListBox afișează o listă de articole. Cea mai importantă proprietate a acestei componente este proprietatea Items. care este un obiect de tip TStrings. Clasa TStrings implementează o listă de șiruri și le permite să fie manipulate. Astfel, dacă doriți să manipulați elementele din caseta de listă, trebuie să apelați metodele proprietății elemente. De exemplu, pentru a adăuga un element nou în caseta listă, trebuie să apelați metoda de adăugare a elementelor. Metoda Adăugare ia un singur parametru, o valoare de șir care va fi adăugată la sfârșitul listei.

Componentele delphi

În această secțiune, vom folosi componenta TListBox pentru a crea o aplicație care vă va permite să vizualizați toate fonturile instalate pe computer. Lista de fonturi instalate este oferită de un alt obiect global - obiectul Ecran. O listă cu numele de fonturi este conținută în proprietatea Fonturi. care este de asemenea declarată ca proprietate a tipului TStrings.

Componentele delphi

Pentru a afișa lista de fonturi în caseta listă, trebuie să copiem întregul conținut al listei de fonturi în caseta listă. De asemenea, puteți copia manual articolele dintr-o listă în alta, dar este mai bine să utilizați metoda Atribuire. Această metodă este aproape peste tot prezentă în VCL și este utilizată pentru a copia conținutul obiectului sursă la obiectul cerut. În cazul unei liste de șiruri de caractere, metoda Assign este utilizată pentru a copia toate liniile din lista de surse de șiruri de caractere în lista de destinații.

1. Adăugați componenta TLabel în fereastra Designer Surface și denumiți-o PreviewLabel.
2. Adăugați un handler de evenimente TListBox pentru evenimentul OnClick.

Selectarea mai multor elemente

În mod prestabilit, componenta TListBox vă permite să selectați numai un singur element din listă. Dacă doriți să selectați mai multe elemente în caseta listă, trebuie să setați proprietatea MultiSelect la Adevărat. Când proprietatea MultiSelect este setată la True. nu puteți utiliza proprietatea ItemIndex. Pentru a afla ce elemente au fost selectate. În cazul casetei de listă MultiSelect, proprietatea ItemIndex identifică numai elementul care este în focalizare. Pentru a afla ce elemente din caseta de listă MultiSelect au fost selectate, puteți utiliza proprietatea selectată. Această proprietate este o proprietate indexată care vă permite să stabiliți dacă a fost selectat un element cu un index specificat. De exemplu, utilizând următorul cod, puteți determina dacă primul element a fost selectat din caseta listă:

Dacă doriți să lucrați cu toate elementele selectate, trebuie să scrie o buclă care verifică starea fiecărui element - este selectat sau nu.

Să creăm o aplicație simplă, cu care utilizatorul poate selecta mai multe elemente dintr-o listă și le poate muta într-o altă listă. Adăugați două componente TListBox în fereastra Designer Surface. Componenta ListBox1 va fi lista de surse, iar componenta ListBox2 va fi ținta.

Puteți să copiați elementele din fereastra listei sursă în lista de destinații utilizând standardul pentru buclă. Deoarece conținutul casetei de listă sursă nu se modifică. Cu toate acestea, pentru a elimina elementele selectate din caseta listă sursă, trebuie să folosim buclă downto. deoarece metoda Delphi modifică conținutul (ca și indexurile) din caseta listă sursă.

Dacă doriți să ștergeți numai elementele selectate, puteți utiliza și metoda DeleteSelected.

Metode BeginUpdate și EndUpdate

De obicei, de fiecare dată când adăugați un element nou în caseta listă sau modificați conținutul său, caseta cu lista este redesenată pentru a afișa elementul nou. Când adăugați elemente în caseta listă într-o buclă, ar trebui să utilizați metodele BeginUpdate și EndUpdate din proprietatea Items. Deoarece vă permit să opriți fereastra listei pentru o perioadă.

Metoda BeginUpdate dezactivează temporar redesenarea casetei din listă, iar metoda EndUpdate o reia. Metoda BeginUpdate este apelată, de obicei, înainte de bucla care modifică conținutul casetei de listă și metoda EndUpdate după terminarea buclă pentru a redrafli caseta listă și afișarea modificărilor la conținutul casetei din listă.

Metodele BeginUpdate și EndUpdate vă permit într-adevăr să simțiți diferența în viteza operațiilor cu caseta listă, mai ales atunci când vine vorba de cicluri mari. Deci, pentru a muta 5.000 de elemente selectate dintr-o fereastră de listă în alta, este nevoie de aproximativ 2 secunde. Dacă utilizați metodele BeginUpdate și EndUpdate. atunci durează aproximativ 0,2 secunde pentru a efectua același ciclu.

Metoda IndexOf vă permite să găsiți șiruri dintr-o listă de șiruri de caractere. Această metodă are un singur parametru șir și returnează indexul șirului dat, dacă se găsește unul. Dacă șirul trecut în lista de rânduri nu există, metoda IndexOf returnează -1.

Metoda IndexOf poate fi utilizată, de exemplu, pentru a da utilizatorului posibilitatea de a adăuga numai valori unice în caseta listă. Următorul exemplu demonstrează nu numai utilizarea metodei IndexOf. dar și funcția MessageDlg pentru emiterea unei cereri către utilizator. Funcția MessageDlg este utilizată pentru a interoga utilizatorul dacă dorește să adauge o valoare la listă, dacă există deja o astfel de valoare.

Dacă doriți, puteți profita și de evaluarea redusă.

Proprietățile numelor și valorilor

Clasa TStrings definește încă două proprietăți care pot fi utilizate pentru a accesa rândurile din lista de șiruri de caractere. Proprietățile de nume și valori sunt proprietăți indexate care vă permit să vă referiți la partea din șir care conține perechea de nume-valoare. Implicit, simbolul care separă partea din nume de partea de valoare din șir este semnul egal (=).

Utilizând proprietățile Nume și Valori, de exemplu, puteți crea cu ușurință un mic dicționar. Acum vom crea dictionare simple engleza-rusa si engleza-ucraineana folosind proprietatea Values.

Componentele delphi

Primul lucru pe care trebuie să-l facem este să umplem două fișiere text separate cu perechi de nume-valoare englezo-rusească și engleză-ucraineană.







Articole similare

Trimiteți-le prietenilor: