Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2005
jam888 jam888 is offline
Miembro
 
Registrado: sep 2004
Posts: 115
Poder: 20
jam888 Va por buen camino
Question Como se llama?

El tema es el siguiente tengo dos formularios form1 y form2 (no de la forma mdi), es decir cuando se inicia la aplicacion aparece el form1 y en un boton de este al hacer click aparece el form2 encima del form1,el form1 ahora tiene el borde decolorado(por que no esta activo), cuando cierro el form2 se activa el form1, ¿como se llama la accion en donde el form2 pierde el control y lo toma el form1? Por que quiero que al cerrar el form2 se cambien algunos caption en el form1.
Se que es una soncera pero no puedo descubrir el evento.
Responder Con Cita
  #2  
Antiguo 12-03-2005
alfredosg19 alfredosg19 is offline
Miembro
 
Registrado: ene 2005
Ubicación: Barcelona
Posts: 91
Poder: 20
alfredosg19 Va por buen camino
Showmodal.

Form2.ShowModal;
Form1.Close;

O puedes poner en el evento ONClose del Form1 el SHowmodal del form2. Bueno espero que esto te sirva.
__________________
"La perseverancia es el camino del éxito"
Responder Con Cita
  #3  
Antiguo 12-03-2005
jam888 jam888 is offline
Miembro
 
Registrado: sep 2004
Posts: 115
Poder: 20
jam888 Va por buen camino
Eso ya lo se

Lo que yo quiero es que cuando cierro el form2, se ejecute un procedimiento por EJ arreglos(nombre del procedimiento) y este realise varias operaciones en el form1 por EJ active o deactive un edit o le cambie el nombre a un caption he probado en el onclose del form2 pero lo ejecuta en algunas ocaciones, no siempre.
En el onclose del form2 puse action:=cafree; y form2=nil;digamos que seria algo parecido a cuando el form1 toma el foco nuevamente.
Responder Con Cita
  #4  
Antiguo 13-03-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola jam888!

Te pongo el siguiente código de ejemplo para manejar eventos, espero que resuelva el problema.

Este código corresponde al Form2 esta forma es invocada desde Form1.

Código Delphi [-]
type
  TForm2 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FMiEvento:TNotifyEvent;
  public
     {Declaras un evento como propiedad del Form2}
     property MiEvento:TNotifyEvent read FMievento write FMiEvento;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //Si se asignó el evento, entonces se invoca
  if Assigned(FMiEvento) then FMiEvento(Self);
end;

Este código corresponde al Form1 desde aquí vas a invocar al Form2

Código Delphi [-]
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 with TForm2.Create(Self) do
 try
  {Asignas un procedimiento a la propiedad MiEvento en Form2}
  MiEvento:=EventoEnForm1;
  ShowModal;
 finally
   Free;
 end;
end;

procedure TForm1.EventoEnForm1(Sender: TObject);
begin
  ShowMessage('Este evento ocurre cuando cierras el Form2,'+#10#13+
              'Pero lo manejas en el Form1'+#10#13#13+
              'Ejemplo: este es el caption de la forma '+Caption);
end;




Espero que te sea útil, un saludo.
Responder Con Cita
  #5  
Antiguo 15-03-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Corrección

Hola nuevamente!

Después de leer el código que coloqué anteriormente me doy cuenta que es más simple de este otra forma.

Esto lo colocas en el Form1 para capturar el evento OnClose del Form2.

Código Delphi [-]

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure Miprocedimiento(Sender: TObject; var Action :TCloseAction);
  public
  end;

var

  Form1: TForm1;

implementation

uses
 Unit2;

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
  with TForm2.Create(Self) do
  try
    OnClose:=Miprocedimiento;
    ShowModal
  finally
    Free;
  end;
end;

procedure TForm1.Miprocedimiento(Sender: TObject; var Action: TCloseAction);
begin
  {Aquí capturas el evento OnClose del Form2}
  ShowMessage('Este mensaje aparecerá justo al momento de cerrar el Form2');
end;

Las dos formas son válidas pero esta es más simple.

Un saludo.
Responder Con Cita
  #6  
Antiguo 15-03-2005
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Cita:
Empezado por HECTOR RANDOLPH
Las dos formas son válidas pero esta es más simple.
Sí, pero la primera es mejor. Con la segunda inhabilitas lo que el propio Form2 haya podido implementar en el evento OnClose.

Por otra parte pienso que este método es necesario únicamente cuando se usa Show, pues con ShowModal se sabe con toda precisión en qué momento se cierra Form2: en la línea que sigue a ShowModal.

Bye
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


La franja horaria es GMT +2. Ahora son las 17:46:00.


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