Delphi - Abrir un formulario desde otro

   
Vista:

Abrir un formulario desde otro

Publicado por Juan (11 intervenciones) el 15/11/2011 18:39:32
Buenas tardes, tengo un formulario en Delphi 7 y un botón de buscar, lo que quiero es que cuando pulse ese botón se me abra el segundo formulario y luego una vez realizada la busqueda poder cerrarlo.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Abrir un formulario desde otro

Publicado por E.T. (1108 intervenciones) el 15/11/2011 19:03:16
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

1
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

1
2
3
4
5
6
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

http://www.delphibasics.co.uk/

http://delphi.about.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Abrir un formulario desde otro

Publicado por Juan (11 intervenciones) el 16/11/2011 08:48:45
Muchas gracias, me ha servido de mucha ayuda.

Tengo otra pregunta que seguro me sabes resolver, yo desde un formulario quiero llamar a otro pero quiero pasarle un parametro (una variable) y después de cerrar el segundo formulario quiero saber que botón se ha pulsado por ejemplo, o que opción se ha seleccionado, o sea devolver algo tambinén desde el segundo.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Abrir un formulario desde otro

Publicado por E.T. (1108 intervenciones) el 16/11/2011 20:29:35
Es simple, solo busca la sección Public en tu unidad de codigo, y ahi puedes poner variables que pueden ser vistas desde otra unidad, siguiendo el ejemplo anterior sería algo así:

Caso 1:

1
2
3
4
5
//dar un valor a la variable de la unidad 2 desde la unidad1
Form2.ParametroEntrada := algunvalor;
Form2.ShowModal;
//cuando se muestre el formulario 2, hacer el trabajo necesario y actualizar el paramertro de salida
variableUnidad1 := Form2.ParametroSalida;


Caso 2:

1
2
3
4
5
6
7
8
with TForm2.Create(self) do
  try
    ParametroEntrada := algunvalor;
    ShowModal;
    variableUnidad1 := parametroSalida;
  finally
    Free;
  end;


parametroEntrada y parametroSalida, las definirias en la seccion public de la unidad 2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar