Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2012
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Question 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?
Responder Con Cita
  #2  
Antiguo 02-05-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 02-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Y no olvides incluir la unidad del formulario modal en la unidad del formulario que llama.

// Saludos
Responder Con Cita
  #4  
Antiguo 02-05-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.

Responder Con Cita
  #5  
Antiguo 02-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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: 02-05-2012 a las 23:03:03.
Responder Con Cita
  #6  
Antiguo 02-05-2012
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
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...
Responder Con Cita
  #7  
Antiguo 03-05-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por sierraja Ver Mensaje
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.
Responder Con Cita
  #8  
Antiguo 03-05-2012
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Talking Bastante Claro Parte II

Nuevamente muchas gracias, excelente. Muchas gracias....
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
como acceder a los controles de un formulario desde otro _CALI Varios 14 20-11-2010 02:23:28
Llamar Formulario Builder C++ 6 , no se como llamar un Formulario. Angelex C++ Builder 2 03-07-2010 02:02:42
Como controlar Componentes desde otro Formularios rgstuamigo .NET 5 21-12-2008 16:54:53
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 04:05:35
llamar a otro programa desde el mio sergionr Lazarus, FreePascal, Kylix, etc. 1 15-05-2003 18:35:06


La franja horaria es GMT +2. Ahora son las 22:32:43.


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