Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Interfaz de usuario "moderna" (https://www.clubdelphi.com/foros/showthread.php?t=95343)

ArtPortEsp 17-08-2021 19:27:39

Interfaz de usuario "moderna"
 
1 Archivos Adjunto(s)
Hola;

Aun estoy con mis primeros pasos en RS (debo confesar que me siento abrumado con el cambio -vengo de D7-)...

Una de las cosas que quiero hacer es darle una vista mas moderna a mis aplicaciones y he estado viendo opciones y ejemplos aquí y allá, creo que la tendencia (perdonen si sueno anticuado) va hacia las pantallas tipo "windows 10", donde un menú deslizante y cambiante esta a la izquierda y la pantalla se presenta a la derecha en un panel.

Queriendo replicar ese comportamiento me enfrento al problema que mis aplicaciones seguían el modelo SDI, es decir tenia un menú con las opciones del sistema y se iban desplegando las formas que el usuario necesitaba (cuantas quisiera tener abiertas).

Por lo que he visto, necesitaría desplegar las pantallas del sistema en un panel o en un pagecontrol o como en un ejemplo que acabo de encontrar (y que aun no entiendo) en el libro DELPHI COOKBOOK, usar una especie de subclase de Tform y tener incorporadas "embeded" las formas en un TabControl (link del código https://drive.google.com/file/d/1REa...ew?usp=sharing)

Ustedes que recomiendan?;

que tal funciona poner todas las pantallas en (Paneles/PageControl)?, parecería que un solo .PAS seria complicado de manejar, sin contar con que el retrabajo de convertir mis aplicaciones a ese modelo es mas complicado.

El ejemplo de Delphi CookBook parece bueno, solo que aun no comprendo su funcionamiento.

(dejo una imagen de como va el desarrollo del nuevo menú de una aplicación pequeña)

cloayza 19-08-2021 01:36:30

Lo de tener varios TForm dentro de un TPageControl u otro Form es sencillo.

El wndForm principal tendrá un TPageControl

Código Delphi [-]

Procedure TwndForm.CreateForm(FormClass:TFormClass; AParent:TWinControl; AColor:TColor; AFont:TFont);
Begin
     With FormClass.Create(Application) Do
     Begin
          Color      := AColor;   {Color del Form}
          Font       := AFont;   {Fuente del Form}
          BorderIcons:= [];     {Form sin bordes}
          BorderStyle:= bsNone; {Bordes del Form si estilo}
          Align      := alClient; {Form alineado al cliente}
          Parent     := AParent; { Padre del Form}
     End;
End;

procedure TwndForm.PageControlOnChange(Sender:TObject)
begin
        {Si la página activa ya tiene un form creado no debe crear otro}
        if (PageControl.ActivePage.ControlCount<>0) then
           Exit;


       case PageControl.TabIndex of
          0:Begin 
                    CreateForm( TForm1, PageControl.ActivePage, Self.Color, Self.Font);

                    TForm1(PageControl.ActivePage.Controls[0]).Show;
            End;
          1:Begin 
                 CreateForm( TForm2, PageControl.ActivePage, Self.Color, Self.Font);

                 TForm2(PageControl.ActivePage.Controls[0]).Show;
            End;
       end;

end;

Espero te oriente en lo que deseas realizar.

Saludos cordiales

ArtPortEsp 19-08-2021 16:27:09

Cita:

Empezado por cloayza (Mensaje 542396)
Lo de tener varios TForm dentro de un TPageControl u otro Form es sencillo.

El wndForm principal tendrá un TPageControl

Código Delphi [-]

Procedure TwndForm.CreateForm(FormClass:TFormClass; AParent:TWinControl; AColor:TColor; AFont:TFont);
Begin
     With FormClass.Create(Application) Do
     Begin
          Color      := AColor;   {Color del Form}
          Font       := AFont;   {Fuente del Form}
          BorderIcons:= [];     {Form sin bordes}
          BorderStyle:= bsNone; {Bordes del Form si estilo}
          Align      := alClient; {Form alineado al cliente}
          Parent     := AParent; { Padre del Form}
     End;
End;

procedure TwndForm.PageControlOnChange(Sender:TObject)
begin
        {Si la página activa ya tiene un form creado no debe crear otro}
        if (PageControl.ActivePage.ControlCount<>0) then
           Exit;


       case PageControl.TabIndex of
          0:Begin 
                    CreateForm( TForm1, PageControl.ActivePage, Self.Color, Self.Font);

                    TForm1(PageControl.ActivePage.Controls[0]).Show;
            End;
          1:Begin 
                 CreateForm( TForm2, PageControl.ActivePage, Self.Color, Self.Font);

                 TForm2(PageControl.ActivePage.Controls[0]).Show;
            End;
       end;

end;

Espero te oriente en lo que deseas realizar.

Saludos cordiales

Muchas gracias cloayza!, (aunque supongo es una pregunta obvia) cual seria la diferencia en hacerlo con un TTabcontrol?, cual opción es mejor?


La franja horaria es GMT +2. Ahora son las 18:13:48.

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