PDA

Ver la Versión Completa : ¿Cómo se llama el objeto?


Angel.Matilla
20-01-2015, 18:41:05
Estoy usando BCB6 y QR3.
En un QuickReport defino en tiempo de ejecución un TQRExpr de la siguiente forma:
TQRExpr *ExpInf;
ExpInf = new TQRExpr(fIndBln->QRBand3);
ExpInf->AutoSize = false;
ExpInf->Expression = "IF(Query.Situacion < 1, Query.Iban, '')";
ExpInf->Left = nLeft;
ExpInf->Name = "xIban";
ExpInf->Parent = fIndBln->QRBand3;
ExpInf->ParentFont = true;
ExpInf->Top = 1;
ExpInf->Transparent = true;
ExpInf->Width = 210;
ExpInf->OnPrint = fIndBln->QRExpr1Print;Por otra parte, en el QR tengo definido esto:
void __fastcall TfIndBln::QRExpr1Print(TObject *sender, AnsiString &Value)
{
TEdit *Cuenta = new TEdit(this);
Cuenta->Visible = false;

Cuenta->Text = Value;
Value = MuestraCuenta(Value, Cuenta, false);
}MuestraCuenta es una función externa que funciona a la perfección. Mi pregunta es: ¿Cómo sé cómo se llama el objeto que invoca al evento OnPrint? Evidentemente no se llama QRExpr1.

Al González
20-01-2015, 20:17:52
Afortunadamente no tengo demasiada necesidad de programar en C/C++ (un lenguaje que ya deberíamos dejar en los museos), pero me parece que tendrías que aplicar un molde de tipo al caótico estilo de C:
((TQRExpr*) Sender)->Name
(o algo parecido).

Nótese la diferencia con la sana sintaxis de Pascal/Delphi:
TQRExpr (Sender).Name

Angel.Matilla
21-01-2015, 09:59:47
((TQRExpr*) Sender)->Name
Perfecto. Muchas gracias.