Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Delphi - Richiamare il Tag di un oggetto
Forum - Delphi - Richiamare il Tag di un oggetto

Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 11:27
Venerdì, 06/04/2012
Salve,

ho un piccolo problema, in pratica creo una serie di oggetti tipo TRectangle e poi gli associo un PopupMenu che dovrebbe semplicemente richiamarne il Tag associato all'oggetto. Per fare ciò, nel PopupMenu uso

Codice sorgente - presumibilmente Delphi

  1. [CODE]ShowMessage(IntToStr((Sender as TRectangle).Tag));[/CODE]



Ma, invece di restituirmi i dati relativi al TRectangle, mi restituisce quelli del PopupMenu. Come faccio a richiamare quelli dell'oggetto da cui è partita l'apertura del Menu.

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 12:32
Venerdì, 06/04/2012
L'unico modo che mi viene in mente è quello di risale a ritroso le chiamte dei vari oggetti, dunque tenuto conto che a te serve il tag del TRectangle, che è legato al popup, che a sua volta è legato al MenuItem la dinastia dovrebbe essere:
ShowMessage(IntToStr(TRectangle(TPopupMenu(TMenuItem(Sender).GetParentMenu).PopupComponent).Tag);

NB: lascio a te il cast in manienra ordinata :asd:


Ibis redibis non morieris in bello
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 14:38
Venerdì, 06/04/2012
mi da errore sulla proprietà:

Codice sorgente - presumibilmente Plain Text

  1. .GetParentMenu



io uso FireMokey e non le VCL

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 16:42
Venerdì, 06/04/2012
Per giocare ho aperto XE2 ...
e l'ho risolto così:

devi ricordarti di assegnare all'item la proprietà PopUpMenu per poi ritirarla fuori


Codice sorgente - presumibilmente Delphi

  1. procedure TForm19.MenuItem1Click(Sender: TObject);
  2. Var oItem: TMenuItem;
  3.     oPopUp: TCustomPopupMenu;
  4. begin
  5.   oItem := (Sender as TMenuItem);
  6.   oPopUp := oItem.PopupMenu;
  7.   ShowMessage('Show '+IntToStr(oPopUp.PopupComponent.Tag));
  8. end;



Ibis redibis non morieris in bello
PM Quote
Avatar
systemgvp (Normal User)
Expert


Messaggi: 296
Iscritto: 14/04/2008

Segnala al moderatore
Postato alle 11:16
Sabato, 07/04/2012
grazie tante,

Codice sorgente - presumibilmente Delphi

  1. ShowMessage(IntToStr(TRectangle(TPopupMenu((Sender as TMenuItem).PopupMenu).PopupComponent).Tag));


PM Quote