Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2008
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Un formulario principal y varios secundarios en una aplicación

Tengo una aplicación con un formulario principal que tiene un menú principal que tiene tres items: Ver Form1, Ver Form2 y Ver Form3

Cuando yo pulso en "Ver Form1" quiero que aparezca un formulario en modo modal que he hecho a parte, y así con los demás items del menú principal.

No se si la forma correcta de hacerlo es la que he hecho. Os pongo mi code a ver qué os parece:

Código Delphi [-]
program Project1;
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in '..\..\..\..\Archivos de programa\Borland\Delphi6\Projects\Unit2.pas' {Form2},
  Unit3 in '..\..\..\..\Archivos de programa\Borland\Delphi6\Projects\Unit3.pas' {Form3},
  Unit4 in '..\..\..\..\Archivos de programa\Borland\Delphi6\Projects\Unit4.pas' {Form4};
{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
  Application.Run;
end.

Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus;
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    VerForm11: TMenuItem;
    VerForm21: TMenuItem;
    VerForm31: TMenuItem;
    procedure VerForm11Click(Sender: TObject);
    procedure VerForm21Click(Sender: TObject);
    procedure VerForm31Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
procedure TForm1.VerForm11Click(Sender: TObject);
var
 Modal: TForm2;
begin
 Modal := TForm2.Create (Application);
 try
  Modal.ShowModal;
 finally
  Modal.Free;
 end;
end;
procedure TForm1.VerForm21Click(Sender: TObject);
var
 Modal: TForm3;
begin
 Modal := TForm3.Create (Application);
 try
  Modal.ShowModal;
 finally
  Modal.Free;
 end;
end;
procedure TForm1.VerForm31Click(Sender: TObject);
var
 Modal: TForm4;
begin
 Modal := TForm4.Create (Application);
 try
  Modal.ShowModal;
 finally
  Modal.Free;
 end;
end;
end.

El código de Unit2, Unit3 y Unit4 no lo pongo porque son simplemente formularios vacíos.

Digo que si es así porque no entiendo por qué en el archivo dpr tenemos las líneas:

Código:
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
ya que no quiero que se creen nada más arrancar el programa sino cuando yo pulse en los diferentes items de los submenús.

Thanks!
Responder Con Cita
  #2  
Antiguo 25-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, debes mirar en project->options->forms->autocreateforms, y desactivarlas de alla.
Responder Con Cita
  #3  
Antiguo 25-09-2008
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Entonces la forma correcta de crear un formulario principal con unos cuantos secundarios que aparecen en tiempo de ejecución es como lo puse arriba pero quitando los CreateForm asociados a los formularios secundarios del dpr, ¿verdad?
Responder Con Cita
  #4  
Antiguo 25-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
si, pero si quitas las lineas pero no los sacas de autocreate forms, delphi te las pondra de nuevo.
Responder Con Cita
  #5  
Antiguo 25-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por noob Ver Mensaje
Entonces la forma correcta de crear un formulario principal con unos cuantos secundarios que aparecen en tiempo de ejecución es como lo puse arriba pero quitando los CreateForm asociados a los formularios secundarios del dpr, ¿verdad?
Hola, como te dice el amigo coso puedes quitarlas desde project->options->forms lo quitas de autocreateforms y lo colocas en avalailable forms, pero también vale que lo quites directamente del dpr, pero solo las lineas donde se crea cada formulario, despues de quitar y grabar puedes entrar nuevamente a project->options->forms y veraz que ya no estan en el autocreate.

Sobre la creación en vez de usar una variable, podrías usar el mismo nombre del formulario así te evitas de crear variables.

Código Delphi [-]
procedure TForm1.VerForm11Click(Sender: TObject);
begin
  Form2 := TForm2.Create (Application);
  try
   Form2.ShowModal;
  finally
   Form2.Free;
  end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 25-09-2008 a las 14:29:06.
Responder Con Cita
  #6  
Antiguo 25-09-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Hola!! Yo creo los formularios secundarios asi:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TForm2.create(Application) do
    try
      ShowModal;
    finally
      Free;
    end;
end;

Por otro lado creo que habria que explicarle a noob que al colocar un nuevo formulario en una aplicacion Delphi este automaticamente lo coloca para crearlo al iniciar la aplicacion, con el consecuente uso de recursos de la maquina.

Código Delphi [-]
 Application.CreateForm(TForm2, Form2);
 Application.CreateForm(TForm3, Form3);
 Application.CreateForm(TForm4, Form4);

y si queremos evitar eso entonces habria que evitar que se autocreen y crearlos y destruirlos cuando lo necesitemos tal como se lo han explicado.

¡¡Si me equivoco corrijanme!

¡¡Un saludo autocreado!!


¿parodiando a quien....?
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
Responder Con Cita
  #7  
Antiguo 25-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
????? ??????
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Timage en formulario principal Loviedo Gráficos 5 22-05-2015 23:10:14
Mover formulario principal en ejecución Guillermo80 Varios 4 12-05-2008 22:18:04
¿formularios secundarios que se comporten como el principal? pvizcay Varios 1 27-07-2007 17:16:07
ChildWindows del formulario principal raguerorodas API de Windows 2 14-12-2006 16:51:23
Un prog.arranca con un formulario que no es el principal Javier_A OOP 3 08-03-2004 23:06:31


La franja horaria es GMT +2. Ahora son las 12:42:17.


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
Copyright 1996-2007 Club Delphi