Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Form interactivo (https://www.clubdelphi.com/foros/showthread.php?t=92396)

The Cid James 19-10-2017 00:51:40

Form interactivo
 
Buenas, tengo una duda y no se ni por donde empezar, básicamente casi estoy terminado un pequeño soft (mas allá que aun le faltan arreglar detalles y algunas funciones :confused: ) y a la hora de operarlo me he dado cuenta de que en algunos momentos es bastante tedioso y poco estético la apertura de nuevas ventanas en el soft por lo cual ahora me llego cierta inquietud para poder mejorar el soft, como no tengo mucha experiencia con delphi acudo a la consulta.
Quisiera saber si es posible crear un form mas interactivo el cual posea un menú estático y el resto del form se actualice a modo de iframe en vez de abrir otro form. Ahora mi consulta seria la siguiente:
1- Que componentes o como se llama este tema para buscar información para saber donde comenzar.
2- Cuales son las desventajas y ventajas de hacerlo.

Aprovechando esto y con afán de no abrir otro post (no se si es lo mas recomendado) también quisiera trabajar con estadísticas gráfica de venta y stock. Es decir algo así como comparación de ventas por día/semana/horario/vendedor stock disponible en gráficos etc.

Saludos :)

Casimiro Notevi 19-10-2017 09:52:42

Para contestar a tu primera pregunta hace falta saber qué quieres hacer, porque no creo que esté claro para nosotros.
Tu segunda pregunta no tiene nada que ver, por lo que tienes que abrir otro hilo.

Neftali [Germán.Estévez] 19-10-2017 17:06:39

Cita:

Empezado por The Cid James (Mensaje 521819)
también quisiera trabajar con estadísticas gráfica de venta y stock. Es decir algo así como comparación de ventas por día/semana/horario/vendedor stock disponible en gráficos etc.

Para ello puedes hacer pruebas con los componentes TChart que vienen con Delphi.

The Cid James 19-10-2017 22:54:13

Cita:

Empezado por Casimiro Notevi (Mensaje 521824)
Para contestar a tu primera pregunta hace falta saber qué quieres hacer, porque no creo que esté claro para nosotros.
Tu segunda pregunta no tiene nada que ver, por lo que tienes que abrir otro hilo.

Para hacerlo mas claro... quiero hacer algo como podes hacer en una pagina web con los menús, que por ejemplo tenes inicio y otra sección por ejemplo el blog. Cuando presionas inicio el menú queda igual (ya se que carga todo los componentes de nuevo) y cambiaría el cuerpo, lo mismo si vas a blog que el menú es el mismo y cambia el cuerpo todo en una sola pestaña sin necesidad de abrir otra pestaña. "Pongo el ejemplo de la pagina web solo para que se entienda la idea". Es decir que quiero un menú estático, que el resto del cuerpo cambie según el botón, sin abrir otro form u otra ventana. Por ejemplo tengo el dos botones que serian el menú en uno tengo productos y el otro venta, y que el cuerpo del form cambie según que presione para que quede mas claro dejo esta imagen que es mas o menos lo que quiero




Cita:

Empezado por Neftali
Para ello puedes hacer pruebas con los componentes TChart que vienen con Delphi.

Gracias, voy a ver como me las arreglo con el componente :D

Casimiro Notevi 19-10-2017 23:10:09

Tienes montones de opciones y posibilidades, una barra de menús, paneles, etc. todo a tu gusto.

Neftali [Germán.Estévez] 20-10-2017 08:35:26

Cita:

Empezado por Casimiro Notevi (Mensaje 521853)
Tienes montones de opciones y posibilidades, una barra de menús, paneles, etc. todo a tu gusto.

También puedes diseñar los formularios de forma independiente y en ejecución "dockarlos" en un panel central.
El formulario principal tendría el menú y las zonas fijas que quieras y en el centro (por ejemplo) un panel que será donde vayan apareciendo los formularios que abras.

The Cid James 20-10-2017 16:01:18

Cita:

Empezado por Neftali (Mensaje 521860)
También puedes diseñar los formularios de forma independiente y en ejecución "dockarlos" en un panel central.
El formulario principal tendría el menú y las zonas fijas que quieras y en el centro (por ejemplo) un panel que será donde vayan apareciendo los formularios que abras.

alguna guía o material al respecto, no se que queres decir con dockarlos y aunque quise buscarlo no encontré nada

Neftali [Germán.Estévez] 20-10-2017 20:18:51

Cita:

Empezado por The Cid James (Mensaje 521873)
alguna guía o material al respecto, no se que queres decir con dockarlos y aunque quise buscarlo no encontré nada

Dockar vendría a ser algo así como incrustar. De forma que puedes incrustar uno o varios formularios dentro de otro, en un tpanel o en otro control que sea de tipo contenedor.
Puedes tener (como en el ejemplo que hay a continuación) un formulario principal con una zona donde dockar otros formularios que puedes ir abrirendo, cerrando e incrustando a tu gusto.



Te pongo el link al proyecto de prueba.

http://terawiki.clubdelphi.com/Delph...ckar_forms.zip

Neftali [Germán.Estévez] 20-10-2017 20:20:09

Si busca en los foros sobre la palabra ManualDock, seguro que te salen algunos hilos al respecto.

The Cid James 24-10-2017 22:59:06

Gracias gente ahora me pongo con eso, ya estare preguntando mas xD

The Cid James 25-10-2017 00:41:16

Guiándome por el ejemplo que me pasaste hice el siguiente código ahora el problema es que me crea la ventana y después la incrusta

Código Delphi [-]
procedure TfPrincipal.Button1Click(Sender: TObject);
begin
  fmodulo.tVenta.Active := true;
  fmodulo.tVenta.Insert;
  fmodulo.tVenta.Post;
  fmodulo.tVenta.Edit;
  fmodulo.tVentadetalle.Active :=true;
  fventa :=tfVenta.Create(self);
  fventa.Show;
  fVenta.ManualDock(dp1);
  fVenta.Align := alclient;
  fmodulo.tVenta.Active := false;
  fmodulo.tVentadetalle.Active := false;
end;

Hay posibilidad de evitar esto?
y se puede tener el botón de cerrar en el tpanel?. También quisiera saber si hay la posibilidad de que un form cargue apenas inicie el programa y cuando se cierre el form que se este ejecutando este quede por defecto

Neftali [Germán.Estévez] 25-10-2017 09:58:11

Cita:

Empezado por The Cid James (Mensaje 521986)
Hay posibilidad de evitar esto?

Pon el Show después del ManualDock, en lugar de antes.

Cita:

Empezado por The Cid James (Mensaje 521986)
y se puede tener el botón de cerrar en el tpanel?.

Pon un botón donde quieras y según el código del ejemplo que puse, coloca lo siguiente:
Código Delphi [-]
procedure TForm3.Button4Click(Sender: TObject);
begin
  if Assigned(Form1) then
    FreeAndNil(Form1);
end;
(o fVenta en tu caso)

Cita:

Empezado por The Cid James (Mensaje 521986)
También quisiera saber si hay la posibilidad de que un form cargue apenas inicie el programa y cuando se cierre el form que se este ejecutando este quede por defecto

Eso tendrá que ser una configuración tuya personal.
Crea una variable para saber cual es el formulario que tienes activo al cerrar la aplicación y al abrirla de nuevo, según esa variable, tendrás que abrir ese form de forma automática.

The Cid James 25-10-2017 23:06:54

Cita:

Empezado por Neftali (Mensaje 521993)
Pon un botón donde quieras y según el código del ejemplo que puse, coloca lo siguiente:
Código Delphi [-]
procedure TForm3.Button4Click(Sender: TObject);
begin
  if Assigned(Form1) then
    FreeAndNil(Form1);
end;
(o fVenta en tu caso)

En este caso solo cerraria el for, tventa, estoy trabajando como con 10 hay posibilidad de algo mas general?


Cita:

Empezado por Neftali (Mensaje 521993)
Eso tendrá que ser una configuración tuya personal.
Crea una variable para saber cual es el formulario que tienes activo al cerrar la aplicación y al abrirla de nuevo, según esa variable, tendrás que abrir ese form de forma automática.

Aquí creo que no me exprese con claridad, lo que quiere hacer es algo así como una pantalla de inicio, y que cada vez que cierre el form que estoy trabajando aparezca el por defecto.

También me surgido otra duda mientras lo hacia, que es el tema del tamaño de los forms que se incrustan, quisiera que se auto ajusten al tamaño del tpanel

Neftali [Germán.Estévez] 26-10-2017 08:55:22

Cita:

Empezado por The Cid James (Mensaje 522019)
En este caso solo cerraria el for, tventa, estoy trabajando como con 10 hay posibilidad de algo mas general?

Te he puesto el código para que veas la operación a realizar. Está claro que si trabajas con varios frames diferentes, no te vale usar:
Código Delphi [-]
FreeAndNil(fVenta);

Tendrás que utilizar una variable, que almacene el formulario actual.
Al dockar un form tendrás que guardar ese form:

Código Delphi [-]
...
public
  FormAbierto:TForm;
...

Al abrir un form, lo guardar en la variable y al cerrar utilizas la variable para cerrarlo.

Cita:

Empezado por The Cid James (Mensaje 522019)
También me surgido otra duda mientras lo hacia, que es el tema del tamaño de los forms que se incrustan, quisiera que se auto ajusten al tamaño del tpanel

Se supone que esta línea hace que el formulario se ajuste al tamaño del panel:
Código Delphi [-]
fVenta.Align := alclient;

Lo que te queda es diseñar el formulario para que se autoajuste correctamente a los diferentes tamaños.

The Cid James 26-10-2017 10:17:22

1- Si entiendo bien lo que me decis seria algo asi como asignar una variable, por ejemplo en formcreate a todos los los form con los que trabajo y el boton cierre eso? - Por otro lado lo que queria era mas como el boton de las ventanas de los so de cerrar cosa que no aparece cuando lo dokeas, si es que no hice algo mal yo.

2- Estoy trabajando solo con un panel para el dokeo pero queda del tamaño que es, no cambia de ninguna forma con
Código Delphi [-]
fVenta.Align := alclient;
De echo cambie manualmente los tamaños a la medida para que entraran :confused: , bueno en este caso solo tventa que es el que quiero terminar bien para empezar con los otros.

3- Con respecto a la pantalla de inicio podria ser una forma en formcreate que dokee un form principal y al hacer que abra otro este cierre mas o menos siguiendo la lógica del primer punto

maeyanes 26-10-2017 16:34:28

Hola...

Cita:

De echo cambie manualmente los tamaños a la medida para que entraran , bueno en este caso solo tventa que es el que quiero terminar bien para empezar con los otros.
Asigna al TPanel a la propiedad Parent de fVenta.

Código:

fVenta.Parent := PanelPadre;

Saludos...

The Cid James 27-10-2017 06:06:20

En las propiedades del form tengo solo esto

maeyanes 27-10-2017 16:08:10

Hola...

La propiedad Parent es pública (public), no publicada (published), por lo que no la verás en el inspector de objetos. Tienes que asignar la propiedad por código, de la forma en la que te indiqué...



Saludos...

The Cid James 28-10-2017 01:58:41

Cita:

Empezado por maeyanes (Mensaje 522077)
Hola...

La propiedad Parent es pública (public), no publicada (published), por lo que no la verás en el inspector de objetos. Tienes que asignar la propiedad por código, de la forma en la que te indiqué...



Saludos...

Si supiera como no estaría preguntando, no sabia que había published, pensé que eran publicas o privadas nada mas. Tendré que buscar sobre el tema :confused. Entonces iria dentro de? o directamente lo pongo en la sección de publica en el form?

The Cid James 28-10-2017 04:10:00

Lo puse aqui en el boton que llama al form pero no veo ningun cambio o entendi mal?
Código Delphi [-]
procedure TfPrincipal.BvnuevaClick(Sender: TObject);
begin
  fmodulo.tVenta.Active := true;
  fmodulo.tVenta.Insert;
  fmodulo.tVentadetalle.Active :=true;
  fventa :=tfVenta.Create(self);
  fVenta.ManualDock(dp1);
  fventa.Show;
  fventa.Parent := Dp1;
end;


La franja horaria es GMT +2. Ahora son las 04:30:23.

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