Hola.
No entiendo cual es el motivo de crear una instancia de
TMenuItem en el evento
RecLisClick ¿ es para resguardar el objeto original ?
Por que cuando haces,
Código PHP:
mOpcMenu = mOpcionLis;
ambos punteros están igualados, de manera que cualquier cambio en uno de ellos se reflejará en el otro.
Un ejemplo de lo que me refiero:
Código PHP:
// ( Button1 fue presionado )
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
TButton *bt = new TButton(this);
bt = static_cast<TButton*>(Sender); // bt == Button1
bt->Caption = "OTRA COSA"; // ahora el caption de Button1 es "OTRA COSA"
...
Hubiera sido lo mismo hacer:
Código PHP:
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
TButton *bt = static_cast<TButton*>(Sender);
bt->Caption = "OTRA COSA"; // ahora el caption de Button1 es "OTRA COSA"
...
O simplemente:
Código PHP:
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
(static_cast<TButton*>(Sender))->Caption = "OTRA COSA";
Es por eso que pienso que la forma de salvaguardar el valor de la propiedad
Tag se reduce a,
Código PHP:
void __fastcall TfPersona::RecLisClick(TObject *Sender)
{
TMenuItem *aux = static_cast<TMenuItem*>(Sender);
int oTag = aux->Tag; // salvar el valor de la propiedad Tag en oTag
try {
/*
Hacer todas las operaciones que puedan modificar
el valor de la propiedad Tag, enviarlo como parámetro, etc, etc...
*/
}
__finally {
aux->Tag = oTag; // restaurar el valor previo en la propiedad Tag
}
}
ese código preservará el valor con que ingresa la propiedad
Tag del
TMenuItem enviado como parámetro .
Pero, como ya te comenté, no sé si entiendo bien la funcionalidad de tu código y la problemática que te está acarreando.
Saludos