Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con un Wizard (https://www.clubdelphi.com/foros/showthread.php?t=91296)

xangiesaurx 23-12-2016 01:51:45

Ayuda con un Wizard
 
Estoy haciendo un Wizard de configuración pero me lo pidieron en Delphi, pero tengo una duda, tengo cada opción en formas separadas y me gustaría ver si hay una forma en que pueda hacer todo dentro de un mismo form, que vaya cambiando su diseño durante el tiempo de ejecución.
Les agradezco de antemano toda su ayuda :)

Casimiro Notevi 23-12-2016 01:59:57

Puedes poner paneles e ir ocultando y mostrando unos u otros, segun convenga.
También un TPageControl con distintas pestañas TTabSheet.

AgustinOrtu 23-12-2016 02:25:13

Lo que apunta Casimiro me parece adecuado. Lo que deberías hacer es empotrar o incrustar los form que ya tenés. Eso simplemente se hace asignando la propiedad Parent, podés asignar cualquier descendiente de TWinControl. El valor que asignes en el Parent se convierte en la "superficie" en donde se dibuja el control.

Probá a poner un panel y luego crea un form y asignale: form.Parent := panel

Neftali [Germán.Estévez] 23-12-2016 09:03:35

Si estás a tiempo de arreglarlo, yo recomiendo lo que cometa Casimiro. Crea un único form, con un PageControl y en cada página mueve lo que tienes en cada uno de los formularios.
Si no estás a tiempo de cambiar eso (por lo que sea) la forma de hacerlo TODO en un form, es lo que comenta Agustín. Creas igualmente un form con un TPanel y un par de botones (ANTERIOR, SIGUIENTE) y en ejecución vas "Dockando" los formularios al panel a medida que se van pulsando los botones.

pacopenin 23-12-2016 17:52:58

Buenas,

Las JVCL tienen un componente JvWizard que las veces que lo usé funcionó adecuadamente. Claro que hace años que no lo utilizo.

xangiesaurx 02-01-2017 19:12:34

Ok, muchas gracias a todos, intentare con todas las opciones que me dieron y ya les comento cual fue la mas adecuada y la forma en que lo realice.
Gracias de nuevo

xangiesaurx 03-01-2017 01:45:56

Que tal, paso a preguntarles de nuevo, estoy haciendo pruebas con Frames, tengo un solo form y todas las "ventanas" siguientes están en frames que se mandaran llamar desde el Form principal, creen que sea una opción factible?

Gracias por sus respuestas.

Neftali [Germán.Estévez] 03-01-2017 08:34:52

Cita:

Empezado por xangiesaurx (Mensaje 512157)
Que tal, paso a preguntarles de nuevo, estoy haciendo pruebas con Frames, tengo un solo form y todas las "ventanas" siguientes están en frames que se mandaran llamar desde el Form principal, creen que sea una opción factible?

Sí es una posibilidad.
Para hacerlo más cómodo, si no quieres crearlos en ejecución, puedes utilizar un TPageControl en diseño y colocar cada frame en una página.
Puedes ocultar las pestañas del control (la parte superior) al ejecutar.
De esta forma tal vez te sea más cómodo à la horade diseñar.

xangiesaurx 03-01-2017 20:16:30

Hola a todos, sigo trabajando con la idea de los Frames, pero ahora tengo otra duda (realmente no hace mucho que empece a trabajar con delphi), tengo varios procedimientos en una unidad (ya que se usaran en varias partes del programa), pero cuando trato de llamarlos en el frame, me marca que no esta declarado, saben a que se debe esto?
Ya que agrego la unidad en los uses del frame y mando llamar el procedimiento que necesito dentro del evento OnClick del botón que lo usará.
Gracias por toda su ayuda.

Casimiro Notevi 03-01-2017 20:32:27

Los frames aparecen en la zona de arriba, donde están el menú, paleta de componentes, etc. y los insertas eligiéndolos.

xangiesaurx 03-01-2017 20:49:47

Cita:

Empezado por Casimiro Notevi (Mensaje 512166)
Los frames aparecen en la zona de arriba, donde están el menú, paleta de componentes, etc. y los insertas eligiéndolos.

Gracias por contestar Casimiro, eso ya lo tengo, de hecho ya puedo cargar dinamicamente los frames en el form, lo que no puedo hacer es llamar un procedimiento en el frame, el procedimiento lo tengo en un unit externo. Lo estoy tratando de llamar de igualmanera que lo hago en un Form.

Agrego el Unit a los uses, y el procedimiento que se va a utilizar lo llamo en el evento onclick del boton que lo ejecutara, pero al hacer eso en el frame me marca un error de Undeclared identifier: 'BtnCancelAction'.

Asi que no se si estoy haciendo algo mal

dec 03-01-2017 21:12:05

Hola,

Cita:

Empezado por xangiesaurx (Mensaje 512168)
Gracias por contestar Casimiro, eso ya lo tengo, de hecho ya puedo cargar dinamicamente los frames en el form, lo que no puedo hacer es llamar un procedimiento en el frame, el procedimiento lo tengo en un unit externo. Lo estoy tratando de llamar de igualmanera que lo hago en un Form.

Agrego el Unit a los uses, y el procedimiento que se va a utilizar lo llamo en el evento onclick del boton que lo ejecutara, pero al hacer eso en el frame me marca un error de Undeclared identifier: 'BtnCancelAction'.

Asi que no se si estoy haciendo algo mal

No me queda muy claro lo que quieres decir con lo que resalto arriba en la cita de tu mensaje:

1º Si quieres ejecutar desde un formulario un procedimiento, función o método que se declara e implementa en un IFrame a su vez situado en dicho formulario, entonces debes asegurarte de declarar dicho procedimiento, función o método de modo que sea accesible desde fuera del IFrame. Dependiendo de si se trata de un procedimiento, función o método, la declaración habrá de hacerse de un modo u otro: especifica de qué se trata pues.

2º Si el procedimiento o función en cuestión se encuentran en una unidad distinta del formulario y del IFrame, si antes podías acceder desde el IFrame, entonces dicho procedimiento o función están ya declarados "públicos", de modo que no deberías tener problemas para hacer uso del mismo desde cualquier otro lugar, como, por ejemplo, desde un formulario que contenga (o no) IFrame.

3º La última frase resaltada me descoloca un poco, puesto que dices: "Lo estoy tratando de llamar de igualmanera que lo hago en un Form." Aquí se aplicaría el punto anterior o bien me equivoco...

¿Dónde tienes declarado e implementado el procedimiento o función en cuestión? ¿En un formulario? ¿En el IFrame? ¿En otra unidad? Disculpa tanta pregunta, pero, no veo otra forma de intentar ayudar.

xangiesaurx 03-01-2017 21:50:23

Pido una disculpa, ya encontré el problema y era un error mio (describire con imagenes para mejor entendimiento).
Lo que sucedía era lo siguiente, yo tengo mi Form principal (en el que se llamaran a los frames según el caso que se de).



Este es mi Frame en el que los textos e imágenes se cargaran en tiempo de ejecución



Y tengo este unit en el que se encuentra el procedimiento para cerrar la aplicación desde el botón cancelar.



Al llamar desde mi Frame a BtnCancelAction (dentro del unit NewWinStr) lo hacia con este código



Y me marcaba un error de que BtnCancelAction no estaba declarado, pero vi que era por que me hacia falta la declaración dentro de la unidad (ya que borre código que no usaba, borre sin querer la declaración), se la volvi a poner y quedo asi:



Y ya funciona



No se si con esto quedo un poquito más claro. (Soy muy mala para explicar, lo siento)


La franja horaria es GMT +2. Ahora son las 00:03:35.

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