0% encontró este documento útil (0 votos)
111 vistas

Formulario en Delphi

Este documento explica dos formas de llamar a un formulario modal desde otro formulario en Delphi. La primera opción es cuando los formularios se encuentran en 'Auto-create forms' y la segunda cuando están en 'Available forms'. En ambos casos se debe incluir la unidad del formulario modal y usar ShowModal o crear e invocar el formulario con Free.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
111 vistas

Formulario en Delphi

Este documento explica dos formas de llamar a un formulario modal desde otro formulario en Delphi. La primera opción es cuando los formularios se encuentran en 'Auto-create forms' y la segunda cuando están en 'Available forms'. En ambos casos se debe incluir la unidad del formulario modal y usar ShowModal o crear e invocar el formulario con Free.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Hay un par de formas de hacer esto dependiendo de como creas tus formularios, te explico

Si vas al menú project - options en la ventana que se abre, vas la sección "forms" hay dos apartados: "Auto-create forms" y "Available forms". dependiendo de en donde se

encuentre tu formulario desbes de seguir los siguientes pasos para cada uno

1. Primera opcion si tu formularios se encuentra en "Auto-create forms", dedes de ir a tu unidad de codigo del primer formulario, en la seccion "uses" debes de agregar la

unidad de codigo de tu segundo formulario, que si no le has cambiado de nombre debe ser Unit2, quedando algo como esto

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Unit2;

ahora, vas a la vista de tu formulario, seleccionas el boton, vas al inspector de objetos (F11), seleecionas la pestaña "events", en el evento "OnClick", das doble click para que

te cree la seccion de codigo que se va a ejecutar al presionar el boton y pones lo siguiente

Form2.ShowModal;

es Form2, en caso de que no le hayas cambiado de nombre a tu formulario

2. Si tu formulario se encuentra en "Available forms", debes de hacer lo mismo de agregar tu unidad al uses del punto anterior, además de lo del evento del boton, lo que

cambia es el codigo, que es el siguiente

with TForm2.Create(self) do
try
ShowModal;
finally
Free;
end;

Cada una de estas opciones tiene sus ventajas y desventajas, una de las principales es que si tu aplicacion tiene muchos formularios, la segunda opcion hace que tu programa
cargue más rápido, pues los formularios se crean solo cuando los necesitas.

NOTAS: para ver el numbre de una unidad de codigo, entras en ella, te mueves hasta arriba de la unidad y ahi está su nombre, que cuando la creas está por defecto: "unit
Unit1;"

Si te fijas bien he utilizado Form2 y TForm2, que son dos cosas muy diferentes
Form2, es una variable, del tipo TForm2, y esta última es la clase de tu segundo formulario

No se si seas la misma persona a quien le recomendé estas paginas, pero aqui estan de nuevo

Lo basico, Como llamar formularios desde otro formulario ?

Buenas tardes a todos, realmente lo basico es como dice el titulo pero no logro conseguir
llamar a un formulario modal desde otro formulario. De que manera se puede hacer?

sierraja

Ver Perfil

Encontrar Todos los Mensajes de sierraja

#2
02-05-2012

Registrado: May 2003


Ubicación: Campeche, México
[maeyanes] Posts: 2.679
Capo de los Capos

Hola...

Código Delphi [-]


with TMyModalForm.Create(nil) do
try
ShowModal
finally
Free
end

Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter

maeyanes

Ver Perfil

Encontrar Todos los Mensajes de maeyanes

#3
02-05-2012

Registrado: May 2003


Ubicación: Ciudad de México
Posts: 19.254
roman
Moderador

Y no olvides incluir la unidad del formulario modal en la unidad del formulario que llama.

// Saludos
roman

Ver Perfil

¡Visita mi Sitio!

Encontrar Todos los Mensajes de roman

#4
02-05-2012

Registrado: Dec 2004


Ubicación: Alcobendas, Madrid, España
Posts: 12.047
dec
Moderador

Hola,

Y recuerda que lo puedes "complicar" y/o "adornar" de no pocas formas diferentes, por
ejemplo, aquí un par de unidades, una correspondiente a un "formulario principal" y otra a
un formulario "modal" cuya clase implementa una función "estática" que puede usarse para
mostrar el formulario tal como quieres. Es sólo para ver que se pueden seguir cantidad de
caminos para llegar al mismo sitio, aunque igual la solución propuesta por el compañero
más arriba sea la idónea aquí por su sencillez.

Código Delphi [-]


unit UMainForm;

interface

uses
Forms, Classes, Controls, StdCtrls;

type
TMainForm = class(TForm)
ShowMyModalFormButton: TButton;
procedure ShowMyModalFormButtonClick(Sender: TObject);
end;

var
MainForm: TMainForm;

implementation

{$R *.dfm}

uses
Windows, Dialogs, UMyModalForm;

procedure TMainForm.ShowMyModalFormButtonClick(Sender: TObject);


begin
if TMyModalForm.ShowMeModal() = IDOK then
begin
ShowMessage( 'Accepted! ');
end
else
begin
ShowMessage( 'Canceled!' );
end;
end;

end.

Código Delphi [-]


unit UMyModalForm;

interface

uses
Forms, Controls;

type
TMyModalForm = class(TForm)
public
class function ShowMeModal() : TModalResult;
end;

var
MyModalForm: TMyModalForm;

implementation

{$R *.dfm}

{ TMyModalForm }

class function TMyModalForm.ShowMeModal() : TModalResult;


begin
with TMyModalForm.Create( nil ) do
try
result := ShowModal();
finally
Free();
end;
end;

end.

dec

Ver Perfil

¡Visita mi Sitio!

Encontrar Todos los Mensajes de dec

#5
02-05-2012

Registrado: Dec 2005


Ubicación: Tres Arroyos, Argentina
ecfisa Posts: 9.032
Moderador
Hola.

Modal: (Estando en Auto-create forms)


Código Delphi [-]
implementation

uses Unit2; // unidad del form a llamar

procedure TForm1.btnLlamarOtroFormClick(Sender: TObject);


begin
Form2.ShowModal;
end;

(Sin auto-create)
Código Delphi [-]
implementation

uses Unit2; // unidad del form a llamar

procedure TForm1.btnLlamarOtroFormClick(Sender: TObject);


begin
with TForm2.Create(Self) do
try
ShowModal
finally
Free
end
end;

No modal: (Estando en Auto-create forms)


Código Delphi [-]
implementation
uses Unit2; // unidad del form a llamar

procedure TForm1.btnLlamarOtroFormClick(Sender: TObject);


begin
Form2.Show;
end;

No modal: (Sin auto-create)


Código Delphi [-]
implementation

uses Unit2; // unidad del form a llamar

procedure TForm1.btnLlamarOtroFormClick(Sender: TObject);


begin
Form2:= TForm2.Create(Self);
Form2.Show;
// Liberar despues de usarlo (Form2.Free), hacerlo aquí lo cerraría
end;
Si mal no recuerdo en un capítulo de La cara oculta de Delphi 4 se trata la creación y
destrucción de formularios SDI y MDI con detalle.
Saludos.

Edito: De echo el último modo que sugiere Dec es el que mayormente uso.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-05-2012 a las 00:03:03.

ecfisa

Ver Perfil

Encontrar Todos los Mensajes de ecfisa

#6
03-05-2012

Registrado: Sep 2004


Posts: 280

sierraja
Miembro

Bastante claro

Hola a todos, ok me quedo bastante claro. Gracias por aclararme este episodio. Solo una
pregunta mas: Para liberarlo totalmente de la memoria usando sin auto-create y modal,
como dice el amigo ecfisa, tan solo utilizar Free y mas nada? para asegurarme...

sierraja

Ver Perfil

Encontrar Todos los Mensajes de sierraja

#7
03-05-2012

Registrado: Dec 2004


Ubicación: Alcobendas, Madrid, España
Posts: 12.047
dec
Moderador

Cita:

Empezado por sierraja


Hola a todos, ok me quedo bastante claro. Gracias por aclararme este episodio. Solo una
pregunta mas: Para liberarlo totalmente de la memoria usando sin auto-create y modal,
como dice el amigo ecfisa, tan solo utilizar Free y mas nada? para asegurarme...
Así es. Básicamente, cuando tú creas un objeto, tú eres el responsable de destruirlo.
¿Cuándo? Generalmente, cuando ya no te sea necesario. De todas formas, al crear un
objeto, normalmente, su constructor te permite asignarle un "padre", y, si así haces, el
propio "padre" se encargará de eliminar el objeto en cuestión, si tú no lo haces antes. Por
ejemplo:

Código Delphi [-]


Form2 := TForm2.Create(Form1);
Arriba "Form2" es creado y después se le asigna como padre a "Form1". Desde ese
momento "Form1" se encargará de destruir el objeto cuando ya no sea necesario, insisto, si
tú no lo haces antes. Por el contrario, cuando escribes algo como lo siguiente:

Código Delphi [-]


Form2 := TForm2.Create( nil );

... no estás asignando ningún "responsable" ("padre") a "Form2", de manera que tú eres el
encargado de destruir a "Form2". ¿Cuándo? Como dijimos antes, generalmente, cuando ya
no te sea necesario.

dec

Ver Perfil

¡Visita mi Sitio!

Encontrar Todos los Mensajes de dec

#8
03-05-2012

Registrado: Sep 2004


Posts: 280

sierraja
Miembro

Bastante Claro Parte II

Nuevamente muchas gracias, excelente. Muchas gracias....


Vincular formularios

Hola
1- Creaste es form2 ?. (file-new-form) ???.
2- Project-Options-(pestaña form)-main form. (ahi se define el primer form que iniciara).
Saludos
__________________
Siempre Novato
formulario abrir, cerrar

Hola cuales son los codigos para abrir un form, para cerrar un form, para mostrarlo, dejarlo
oculta pero sin cerrarlo

en caso de visual 6.0 es asi:


formulario.Close(); y para ocultar un formulario sin cerrarlo es: formulario.Hide(); y
para volver a mostrarlo: formulario.Show();
para cerrar un form: unload me, end

form.hide
form.show
form.close

como se usa en delphi 7? saludos

Cita:

Empezado por arespremium


Hola cuales son los codigos para abrir un form, para cerrar un form, para mostrarlo,
dejarlo oculta pero sin cerrarlo

en caso de visual 6.0 es asi:


formulario.Close(); y para ocultar un formulario sin cerrarlo es: formulario.Hide(); y
para volver a mostrarlo: formulario.Show();
para cerrar un form: unload me, end

form.hide
form.show
form.close

como se usa en delphi 7? saludos


Pues así como lo pones, sin los (), solo debes de asignar el nombre del form
correctamente

Código Delphi [-]


Form1.Show; //Para mostrarlo, hay una opción que es ShowModal
Form1.Close; //Para Cerrarlo
Form1.Hide; //A veces no entiendo para que hacer esto, pero existe y veo
que algunos la usan

Salud OS

egostar
Ver Perfil

Encontrar Todos los Mensajes de egostar

#3
13-08-2007

Registrado: Oct 2006


[cHackAll] Posts: 2.159
Baneado?

Form1.Hide oculta el formulario


Form1.Show lo muestra
Form1.ShowModal lo muestra en forma modal
Form1.Close

Llama al evento OnCloseQuery para preguntar si se puede realizar la orden, si es MDI y


tiene el icono de minimizar, lo mimimiza si no no hace nada.

Si es el formulario principal lo cierra si no llama al evento OnClose, dependiendo del


resultado del mismo (CloseAction), no hace nada, oculta, minimiza o destruye el formulario
dependiendo del valor que el usuario le dé.

Application.Terminate Finaliza la aplicación

Última edición por cHackAll fecha: 13-08-2007 a las 20:03:10.

cHackAll

Ver Perfil

Encontrar Todos los Mensajes de cHackAll

#4
14-08-2007

Registrado: Jul 2004


Ubicación: Barcelona - España
Neftali Posts: 14.295
Aporreador de teclados

También puedes usar el evento OnClose para "cerrar y liberar" o "cerrar y ocultar"
dependiendo de lo que añadas al parámetro Action; Revisa la ayuda, los valores del
parémetro son bastante claros: caHide, caFree, caNone;
__________________
Neftalí -web - MyDropBox-
Guía de estilo, Guía alternativa, TAG's.
*Añade tu foto al Club*

(UPDATE) TrackInfo v.1.7b

Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.


Cerrar formulario en uso

hola. Estoy haciendo una aplicacion que tiene varios formularios. en algun momento se abre
uno de los formularios que no es el principal y tiene un par de procedimientos y bucles. el
usuario puede cerrar esta ventana para cancelar lo que esta haciendo pero a pesar de que se
cierra el formulario sigue procesando y funcioando el bucle. como puedo hacer para que
cuando se cierre deje de funcionar todo en el form.

gracias.

locojoan

Ver Perfil

Encontrar Todos los Mensajes de locojoan

#2
21-06-2006

Registrado: Jul 2004


Ubicación: Barcelona - España
Neftali Posts: 14.295
Aporreador de teclados

Debes estar ocultándolo en lugar de cerrandolo (liberándolo), por lo tanto se oculta, pero
sigue el proceso.

¿Cómo creas el formulario (con qué código)?


¿Qué tienes puesto en el evento OnClose del formulario (IMPORTANTE)?
__________________
Neftalí -web - MyDropBox-
Guía de estilo, Guía alternativa, TAG's.
*Añade tu foto al Club*

(UPDATE) TrackInfo v.1.7b

Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Neftali

Ver Perfil

¡Visita mi Sitio!

Encontrar Todos los Mensajes de Neftali

« Tema Anterior | Próximo Tema »

Herramientas Buscar en Tema

Mostrar Versión Imprimible

Enviar por Correo

También podría gustarte