De ce proprietate tag-ul
De ce proprietate Tag
Multe componente au o proprietate de etichete. Ce este?
Pot să-l păstrați ca un pointer la obiectul sunt pline?
> AL1 # XA0; (23.11.04 21:14)
> Pot avea, de exemplu, pentru a păstra un pointer la obiectul sunt pline?
Can.
Și aici este un fragment din raport:
proprietate Tag (TComponent)
Tag are nici un sens predefinit. Proprietatea Eticheta este prevăzută pentru comoditatea de dezvoltatori. Acesta poate fi utilizat pentru stocarea unei valori suplimentare întreg sau poate fi typecast la orice valoare de 32 de biți, cum ar fi o referință componentă sau un pointer.
> Etichetă nu are nici un sens predefinit. Proprietatea de etichete este furnizat
> Pentru comoditatea de dezvoltatori
Este posibil pentru limba rusă? Mulțumesc.
Principiul a fost deja răspuns. Dar nu este clar dacă „nu am“, pot spune că proprietatea sabzhevoy nu este utilizat de obiectul în sine și este destinat exclusiv pentru utilizator să-l păstrați acolo datele, dacă este necesar.
„Eticheta nu are nici o destinație predefinită“
deoarece sensul original (și acesta este modul în care am înțeles „predeterminat“), pur și simplu este ca orice alt domeniu al obiectului - 0.
Despre indicii - trebuie să fii atent. Una dintre cele 2 glitches Delphi despre care știu că este conectat cu indicatorul de stocare în Saint-ve Tag
Creați butoane dinamice, făcând clic pe ele, era necesar să se facă ceva. Informații generale pentru acest lucru este ceva stocat undeva în memorie, a fost un indicator. El a scris în Saint-Tag în index, dar în tratare a evenimentului TMyType (etichete) a subliniat undeva în cazul în care este necesar să se complet greșit, și într-un loc complet diferit în memorie în cazul în care datele dorite în loc să-mi pună altceva. Sa dovedit AV.
Faptul că indicii am făcut totul bine - Pun pariu. În alte locuri, proiectul nu a avut nici o problemă atunci când se lucrează cu aceste date. Dacă indicatorul de scriere în tag-ul, și Indiciu: = inttostr (), atunci handler primește un pointer valid. Deci, ce este problema cu tag-ul „a fost mii.
Care este problema - a discutat aici, dar până la ce nedoobsuzhdalis. Am decis cazul scriind succesorul său dintr-un TButton, care a adaugat St-in - pointer, care trebuie să fie stocate. Acesta a câștigat.
În opinia mea, problema nu este cu etichete. Oricum, judecând după # XA0; # XA0;
Tag proprietate: Longint citește FTag scrie FTag default 0;
privat # XA0; # XA0; FTag: Longint;
și
mov [EBX + $ 0 ° C], given_tag_value,
care este difuzat
Tag: = given_tag_value;
Ar fi interesant de a găsi acel fir, încercați să caute.
> AL1 # XA0; (23.11.04 21:14) # XA0;
> Multe dintre componentele au proprietatea de etichete. Ce este?
> Pot avea, de exemplu, pentru a păstra un pointer la obiectul sunt pline?
> Creează un meniu sunt generate de execuție și elementele sale. Hehochetsya pentru fiecare
> Articol „un onClick crea handler. Deci, cum să facă acest lucru
> Când faceți clic pe orice element de meniu de control au trecut prin aceeași procedură
> Acolo și găsiți numărul elementului dat click.
TMainMenu și TPopupMenu au o proprietate Elementele care reprezintă o TMenuitem
care servește ca bază pentru toate celelalte TMenuitems pe acel meniu. folosind un
TMenuItems mamă proprietate vă puteți merge în sus lanțul de MENUITEM până când găsiți
acest TMenuitem.
Din păcate, modul de a descendentului TMenu care deține Elemente MENUITEM este
nu atât de ușor. Cea mai bună abordare este de a adăuga un pic de cod pentru formularele
OnCreate eveniment care stochează pur și simplu referința TMenus în proprietatea Tag
de articole sale.
// Acest handler este atribuit tuturor menuitems eveniment OnClick
Procedura TForm1.AllmenusClick (Expeditor: TObject);
var
# XA0; elemente: TMenuItem;
începe
# XA0; elemente: = Expeditor Ca TMenuitem;
# XA0, în timp ce items.Parent <> nil do
# XA0; # XA0; elemente: = items.Parent;
# XA0; În cazul în care items.Tag <> 0 apoi începe
# XA0; # XA0; label1.caption: = TMenu (items.tag) .name;
# XA0; # XA0; Dacă TObject (items.tag) este TPopupMenu Atunci
# XA0; # XA0; # XA0; label2.caption: = TPopupmenu (items.tag) .PopupComponent.Name
# XA0; # XA0; altcineva
# XA0; # XA0; # XA0; label2.caption: = "";
# XA0; end;
se încheie;
Procedura TForm1.FormCreate (Expeditor: TObject);
var
# XA0; i: integer;
începe
# XA0; pentru i: = 0 până la componentcount-1 do
# XA0; # XA0; dacă Componente [i] este apoi TMenu
# XA0; # XA0; # XA0; TMenu (Componente [i]) .Items.Tag: = Integer (Componente [i]);
se încheie;
--
Peter Below (TeamB)
> Ar fi interesant de a găsi acel fir, încerc să te uiți
A fost acum câteva luni. Acum a dispărut. Dar eu pot trimite codul, care a avut probleme.