Array
(
)

Procedure com TypeCast

Sistemald
   - 23 fev 2006

Oi tenho a seguinte procedimento:

#Código

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:
#Código
Procedure AbrirfrmIn(Vform:Tcomponent; frmpai:Tform; local:Tcomponent);
begin
with (Vform as Tform).Create(frmPai) do
begin
BorderStyle := bssingle;
Bordericons:= [];
FormStyle:= fsNormal;
Align := alClient;
Parent := local;
show;
end;
end;


Porém da o seguinte erro:

#Código
[Pascal Error] UnitFuncao.pas(67): E2382 Cannot call constructors using instance variables


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


Erro: #Código
[Pascal Error] UnitFuncao.pas(67): E2015 Operator not applicable to this operand type


Algém tem alguma dica?


Sistemald
   - 23 fev 2006

Galera consegui.

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

o resultado final é esse:

#Código

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


Com esta procedure eu crio um form de outro componente.