Tengo una aplicación que carga un BPL que como dentro de un formulario simple.Acceso a métodos y propiedades públicos dentro de un Delphi BPL
Este formulario es una opción opcional de la aplicación principal.
El BPL se carga correctamente, el formulario se muestra correctamente, pero no sé cómo acceder a los métodos y propiedades públicos del formulario dentro del bpl.
¿Alguien puede dar un ejemplo simple?
mi código:
// Load the BPL on aplication Load
LoadPackage('About.bpl');
// CAll for TForm1 inside the About.BPL
var
AClass: TClass;
AForm: TForm;
begin
AClass := GetClass('TForm1');
if AClass <> nil then
begin
Application.CreateForm(TComponentClass(AClass), AForm);
AForm.Show;
end;
// The unit TForm1 inside the BPL package
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
PublicMthd;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Procedure TForm1.PublicMthd;
Begin
ShowMessage('Inside call');
End;
initialization
RegisterClass(TForm1);
finalization
UnRegisterClass(TForm1);
end.
¿Cómo puedo acceder "PublicMthd" en TForm1?
Muéstranos cómo es tu código. Hay una variedad de formas de cargar archivos BPL y la respuesta dependerá de cómo lo haga. –
Vea también esta pregunta SO: [execute-a-method-from-a-form-created-by-class-reference-delphi] (http://stackoverflow.com/questions/2991934/execute-a-method-from -a-form-created-by-class-reference-delphi) –
¿Escribió este BPL? ¿Por qué no exporta una función llamada GetMainForm y luego llama a 'function GetMainForm: TForm' y luego puede acceder a ella?¿Hay alguna razón por la que no puedas usar un enfoque de sentido común? ¿Qué piensas hacer una vez que conoces las clases y puedes enumerarlas, y quizás incluso crear instancias de ellas? ¿Hay alguna razón por la que no especifique una IPluginInterface que se ajuste a su dominio problemático, en lugar de ir directamente a los tipos de clases subyacentes, desde su aplicación principal? –