Fórum Problemas para acessar Property de uma form #381161
12/07/2010
0
não tenho acesso direto a class Tfrmbpl, não consigo acessar as suas propertys.
segue abaixo o codigo utilizado, as property tem que receber os dados antes do showmodal.
var
H: HMODULE;
PForm: TFormClass;
Form: Tform;
begin
if FileExists(C_DPKESTOQUE) then
begin
H := LoadPackage(C_DPKESTOQUE);
if H > 0 then
begin
PForm := TFormClass(GetClass('Tfrmbpl'));
if Assigned(PForm) then
begin
Form := TFormClass(Pform).Create(self);
Form.ShowModal;
FreeAndNil(Form);
UnloadPackage(H);
end
else
ShowMessage('Erro ao carregar classe');
end
else
ShowMessage('Erro ao carregar pacote');
end
else
begin
MessageDlg('Para usar este recurso você precisa do adquirir o module.' #13
'Entre em contato com o fabricante',mtWarning,[mbOK],0);
end;
Igo Oliveira
Curtir tópico
+ 0Posts
12/07/2010
Marco Salles
não tenho acesso direto a class Tfrmbpl, não consigo acessar as suas propertys.
//referencia a um método
TMinhaProcedure = procedure of object;
var
H: HMODULE;
PForm: TFormClass;
Form: Tform;
//RTTI
Classe: TFormClass;
Ct:TRttiContext;
Tipo:TRttiType;
Met:TRttiMethod;
begin
if FileExists(C_DPKESTOQUE) then
begin
H := LoadPackage(C_DPKESTOQUE);
if H > 0 then
begin
PForm := TFormClass(GetClass('Tfrmbpl'));
if Assigned(PForm) then
begin
Form := TFormClass(Pform).Create(self);
Classe := TFormClass(FindClass('Tfrmbpl'));
Tipo:=CT.GetType(Classe);
for Met in Tipo.GetMethods do
if Met.Name = 'Nome do Methodo que vc quer acessar' then //declarado no Published
begin
DadosMetodo.Data := Pointer(form);
DadosMetodo.Code := objeto.MethodAddress(Met.Name);
if not Assigned(DadosMetodo.Code) then
Exit;
CorpoMetodo := TMinhaProcedure(DadosMetodo);
CorpoMetodo;
end;
Form.ShowModal;
FreeAndNil(Form);
UnloadPackage(H);
end
else
ShowMessage('Erro ao carregar classe');
end
else
ShowMessage('Erro ao carregar pacote');
end
else
begin
MessageDlg('Para usar este recurso você precisa do adquirir o module.' #13
'Entre em contato com o fabricante',mtWarning,[mbOK],0);
end;
Gostei + 0
12/07/2010
Marco Salles
não tenho acesso direto a class Tfrmbpl, não consigo acessar as suas propertys.
var
H: HMODULE;
PForm: TFormClass;
Form: Tform;
//RTTI
Classe: TFormClass;
Ct:TRttiContext;
Tipo:TRttiType;
Prop:TRttiProperty;
begin
if FileExists(C_DPKESTOQUE) then
begin
H := LoadPackage(C_DPKESTOQUE);
if H > 0 then
begin
PForm := TFormClass(GetClass('Tfrmbpl'));
if Assigned(PForm) then
begin
Form := TFormClass(Pform).Create(self);
Classe := TFormClass(FindClass('Tfrmbpl'));
Tipo:=CT.GetType(Classe);
for Prop in Tipo.GetProperties do
if Prop.Name = 'Nome da propriedade' then //declarado no Published
begin
Prop.SetValue(form,'Setando a Propriedade'); ****Aqui Hooooooooo
end;
Form.ShowModal;
FreeAndNil(Form);
UnloadPackage(H);
end
else
ShowMessage('Erro ao carregar classe');
end
else
ShowMessage('Erro ao carregar pacote');
end
else
begin
MessageDlg('Para usar este recurso você precisa do adquirir o module.' #13
'Entre em contato com o fabricante',mtWarning,[mbOK],0);
end;
Gostei + 0
12/07/2010
Igo Oliveira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)