PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Sobrecarga aninhada com procedure (Form dentro de Layout) #580522

25/04/2017

0

Seguinte galera, estou querendo fazer uma classe no qual eu passe o Form, LayoutContainer ou Form, LayoutContainer e MultiView por parâmetro e dentro dessa classe tenha o método abrir form com os dois tipos de parâmetros.

type
  TFormComp = class
public
  class procedure AbrirForm(AFormClass: TComponentClass; LayoutContainer: TLayout); overload;
  class procedure AbrirForm(AFormClass: TComponentClass; LayoutContainer: TLayout; mvMainMenu: TMultiView); overload;
end;


Procedure 1

class procedure TFormComp.AbrirForm(AFormClass: TComponentClass; LayoutContainer: TLayout);
var
  layoutClient, botaoMainMenu: TComponent;
  fActiveForm                : TForm;
begin

  Application.CreateForm(AFormClass, FActiveForm);
  //encontra o LayoutBase no form a ser exibido para adicionar ao frmPrincipal
  layoutClient := fActiveForm.FindComponent('LayoutClient');
  //if Assigned(layoutClient) then
  LayoutContainer.AddObject(TLayout(layoutClient));

end;


Procedure 2

class procedure TFormComp.AbrirForm(AFormClass: TComponentClass; LayoutContainer: TLayout;
   mvMainMenu: TMultiView);
var
  layoutClient, botaoMainMenu: TComponent;
  fActiveForm                : TForm;
begin
try
  AbrirForm(ComponentClass, Layout);
// Encontra o botão de controle de Menu no form a ser exibido para
// associálo ao multiview do formPrincipal
  botaoMainMenu           := FActiveForm.FindComponent('buttMainMenu');
    //  if Assigned(botaoMainMenu) then
// Associa o BotaMainMenu ao MasterButton botão que inibe o MultiView
  mvMainMenu.MasterButton := TControl(botaoMainMenu);

except on E: Exception do
end;
end;


Como posso resolver dessa forma fornecendo duas opções? Há uma maneira melhor de fazer isso? O objetivo da classe é colocar um form dentro de um layout de outro form anteriormente tava no próprio form mas agora precisa ficar em classe separado esse método.
Filipe Lobato

Filipe Lobato

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar