Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cargando Formulario en TPanel (https://www.clubdelphi.com/foros/showthread.php?t=91512)

ryanier 22-02-2017 14:49:08

Cargando Formulario en TPanel
 
Hola: Primeramente darles las gracias por permitirme ser parte de este foro, partiendo de mis pocos conocimientos de delphi me encuentro desarrollando una aplicacion en la cual tengo un Tform el cual cuenta con un TdxNavBar y un TPanel ahora bien cada vez que hago clic en un item del menu este me abre el formulario deseado ejemplo:
Código Delphi [-]
  
  FormAcreditacionPersonalizada := TFormAcreditacionPersonalizada.create(self);     
  FormAcreditacionPersonalizada.parent := pnlMain;     
  FormAcreditacionPersonalizada.Align := alClient;     
  FormAcreditacionPersonalizada.show;

ahora bien cual es mi prgunta, es posible crear alguna clase o procedimientos el cual ya tengo predefinido estas propiedades y al dar clic en el menu este abra el formulario deseado llamando a estas caracteristicas previamente creadas saludos

AgustinOrtu 22-02-2017 15:06:09

Hola ryanier

Podria ser algo como esto:

Código Delphi [-]

interface

uses
  Classes, 
  Controls,
  Unidad en donde esta definida el form TFormAcreditacionPersonalizada

procedure MostrarFormAcreditacionPersonalizada(Owner: TComponent; Parent: TWinControl);

implementation

procedure MostrarFormAcreditacionPersonalizada(Owner: TComponent; Parent: TWinControl);
var
  Form: TForm;
begin
  Form := TFormAcreditacionPersonalizada.Create(Owner);   
  Form.Parent := Parent:
  Form.Align := alClient; 
  Form.Show;
end;

Ejemplo de llamada:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  MostrarFormAcreditacionPersonalizada(Self, pnlMain);
end;

ryanier 22-02-2017 15:23:05

Gracias por la prontitud AgustinOrtu ...

Si mira el tema consiste en pasar el nombre del formulario que deseo mostrar para ahorrarme tener que crear uno por cada formulario que tengo haber perdona si no me se explicar haber con mis palabaras que a la hora de llamar el procedimiento solo pase el nombre del formulario y a su vez este tome todas las caracteristicas predefinidas, vaya que sea una cosa generica por cada formulario que llame gracias...

AgustinOrtu 22-02-2017 15:25:07

Simplemente pasas la clase del formulario como parametro y listo

Código Delphi [-]
procedure MostrarForm(FormClass: TFormClass; Owner: TComponent; Parent: TWinControl);
var
  Form: TForm;
begin
  Form := FormClass.Create(Owner);   
  Form.Parent := Parent:
  Form.Align := alClient; 
  Form.Show;
end;

Llamada:

Código Delphi [-]
procedure ...;
begin
  MostrarForm(TFormAcreditacionPersonalizada, Self, pnlMain);
end;

ryanier 22-02-2017 16:05:56

Muchas gracias AgustinOrtu me has solucionado un problema que llevo varios dias tratando de implementar GRACIAS MIL..!!!

ryanier 24-02-2017 22:12:58

Con la ayuda de AgustinOrtu y otros colegas el código lo implemente de la siguiente forma

Código Delphi [-]
procedure TFormMain.MostrarForm(FormClass: TFormClass; Owner: TComponent; Parent: TWinControl);
var
  Form: TForm;
  i: Integer;
begin
  for i := 0 to Parent.ControlCount - 1 do
    TForm(Parent.Controls[i]).Release;
  Form := FormClass.Create(Owner);
  Form.Parent := Parent;
  Form.BorderIcons := BorderIcons - [biSystemMenu, biMinimize, biMaximize, biHelp];
  Form.Align := alClient;
  Form.Show;
end;


La franja horaria es GMT +2. Ahora son las 16:46:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi