Expeditor

Expeditor: TObject

Cum se utilizează expeditorul: parametrul tobject, care este transferat operatorilor de evenimente în aproape toate componentele.
Înțeleg că este necesar să determinăm ce componentă a generat acest eveniment. (dacă este incorectă - corectă)







Am mai multe componente (gestionarea evenimentului este comună pentru ei).
De exemplu, există mai multe butoane cu un singur procesator de evenimente:

procedura TForm1.Button1Click (expeditor: TObject);
începe

Cum știu în această procedură ce buton a chemat acest handler?
În general, trebuie să atribui unui fir o variabilă valorii uneia dintre componentele care au generat acest eveniment.
Pur și simplu nu am putut găsi niciun exemplu ori de câte ori era folosit pentru a arăta.
Scrieți cum să faceți acest lucru.

procedura TForm1.Button1Click (expeditor: TObject);
var btButton. Tbutton
începe
dacă Sender este Tbutton atunci
începe
btButton: = Tbutton (Expeditor);
dacă btButton = Butonul 1 atunci
.
altfel
dacă btButton = Button2 atunci
.
altfel
.
capăt

Este posibil și mai ușor, pentru că într-adevăr știți ce va fi în mâner?

dacă Sender = Button1 atunci.

2 Real
Creez componentele în timpul rulării, astfel:






butoane: matrice [1..10] de buton;
.


Pot compara apoi astfel:
pentru i: = 1 până la 10 nu
începe
dacă expeditor = butoanele [i] atunci. ;
se încheie;
?

sau puteți să accesați în continuare proprietățile unei componente fără a utiliza numele acestora, dar folosind doar un expeditor, așa cum este cazul.
var z: întreg;
.

PS Știu că ultima linie este greșită și nu funcționează, ci doar a vrut să arate ce sa însemnat.


> butoane [i] .create (auto);

ciudat le creezi


> pot compara apoi:
> pentru i: = 1 la 10 nu
> începe
> dacă expeditor = butoane [i] atunci. ;
> sfârșit;
>.

poți


> z: = expeditor.tag;

1 z: = (Expeditor ca TButton1) .Tag
2 z: = TButton (Sender) .Tag // cu încredere deplină

Nu-mi amintesc exact cum l-am citit. Nu există text la îndemână.
În plus, am început să încerc să creez ceva în timpul rulării, așadar aș putea face o greșeală fără a avea textul la îndemână.
Da, și butoanele sunt, de exemplu, salut, de fapt este o altă componentă, dar esența nu se schimbă Dar ceva de genul asta.

> 1 z: = (Expeditor ca TButton1) .Tag
> 2 z: = TButton (Sender) .Tag // cu încredere deplină

Și despre asta, vă mulțumesc foarte mult. Am fost interesat de această opțiune.
Înseamnă doar "cu încredere deplină". Ie în ce?

în care Expeditorul este exact TButton
deja ați scris, printre altele, mai sus
dacă Sender este TButton, atunci altceva.

Situația este de așa natură încât manipulatorul poate fi atârnat de un eveniment la o grămadă de componente, în plus, componentele pot fi nu numai TButton
iar pentru cazuri speciale acest lucru va fi cazul
dacă Sender = TButton atunci

Și alte articole din secțiunea citire - sooo interesant remiză.

PS: Încă o dată vă voi întreba pentru același text și link-ul o dată pe săptămână. Dar voi continua să fac asta, pentru că Cred că este corect.







Trimiteți-le prietenilor: