Procedure com TypeCast

23/02/2006

Oi tenho a seguinte procedimento:

  with TForm2.Create(nil) do 
  begin 
    BorderStyle := bsNone; 
    Align := alClient; // Sim, Align serve para alguma coisa em forms! 
    Parent := TabSheet1; 
    (Parent as TTabSheet).Caption := Caption; 
    Show; 
  end; 


Porém isto será usado várias vezes, então quero criar uma procedure

fiz:
Procedure AbrirfrmIn(Vform:Tcomponent; frmpai:Tform; local:Tcomponent);
begin
with (Vform as Tform).Create(frmPai) do
  begin
    BorderStyle := bssingle;
    Bordericons:= [&93;;
    FormStyle:= fsNormal;
    Align := alClient;
    Parent := local;
    show;
  end;
end;


Porém da o seguinte erro:

&91;Pascal Error&93; UnitFuncao.pas(67): E2382 Cannot call constructors using instance variables


também tentei usando:
Procedure AbrirfrmIn(Vform:TcomponentClass <-Aqui mudou; frmpai:Tform; local:Tcomponent);


Erro:
[Pascal Error&93; UnitFuncao.pas(67): E2015 Operator not applicable to this operand type


Algém tem alguma dica?


Sistemald

Respostas

23/02/2006

Sistemald

Galera consegui.

na verdade eu não precisa fazer um typecast, e sim saber a classe.

o resultado final é esse:

Procedure AbrirfrmIn(Vform:TFormClass; frmpai:Tform; local:TwinControl);
begin
with Vform.Create(frmPai) do
  begin
    BorderStyle := bssingle;
    Bordericons:= [&93;;
    FormStyle:= fsNormal;
    Align := alClient;
    Parent := local;
    show;
  end;
end;


Com esta procedure eu crio um form de outro componente.


Responder Citar