MessageDlg como procedimiento. Nuevo en XE7. Como usarlo con C++Builder XE7.

En la versión XE7 tenemos una rutina nueva que como último parámetro recibe un método anónimo de delphi, he aqui la firma en C++Builder

extern DELPHI_PACKAGE void __fastcall MessageDlg(const System::UnicodeString AMessage, 
const System::Uitypes::TMsgDlgType ADialogType, 
const System::Uitypes::TMsgDlgButtons AButtons, 
const int AHelpContext, const _di_TInputCloseDialogProc ACloseDialogProc)/* overload */;

He aquí el código de como usarla e implementar el método anónimo en C++Builder.

/*
* Forma de Implementar en C++, el Método Anónimo.
* El truco está en el uso de la platilla TCppInterfacedObject, la cual
* ya tiene implementados los métodos de IUnknown.
*/
class TMyInputDialogProc : public TCppInterfacedObject< TInputCloseDialogProc >
{
private:
	TForm *FForm;
public:
	__fastcall TMyInputDialogProc(TForm * AForm) : FForm(AForm){}
 
	void __fastcall Invoke(const System::Uitypes::TModalResult AResult)
	{
		ShowMessage(String().sprintf(L"Se pulsó el Botton %i", AResult));
		if(AResult == mrYes) {
			FForm->Close();
		}
		else if (AResult == mrNo) {
			ShowMessage("Salida cancelada!");
		}
	}
};
//---------------------------------------------------------------------------
void __fastcall TForm11::Button1Click(TObject *Sender)
{
	_di_TInputCloseDialogProc ACloseDialogProc = new TMyInputDialogProc(this);
	MessageDlg("Desea salir de la Aplicación ?",
		TMsgDlgType::mtWarning,
		TMsgDlgButtons() < < TMsgDlgBtn::mbYes << TMsgDlgBtn::mbNo,
		0,
		ACloseDialogProc // Uso de la Implementación de TInputCloseDialogProc
	);
}
//---------------------------------------------------------------------------

 

Esta entrada fue publicada en C++Builder, FireMonkey, Sin categoría. Guarda el enlace permanente.

Deja una respuesta