Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Devolver valor al cerrar formulario (https://www.clubdelphi.com/foros/showthread.php?t=67333)

Kandorf 12-04-2010 17:03:37

Devolver valor al cerrar formulario
 
Buenas, supongo que es una duda que han planteado varias veces, pero no he conseguido encontrar respuesta de ninguna manera, sorry.

Tengo un formulario padre que llama a un formulario hijo, en este introduzco una cadena de texto en un edit. Lo que me gustaría es que al pulsar el botón de aceptar en el hijo devuelva el valor introducido como String. He estado mirando la propiedad ModalResult, pero creo que es para devolver valores del tipo Yes, No, Cancel, etc.
Se me ha ocurrido crear una variable pública en el padre, pero me parece una solución cutre, además me gustaría llamar al hijo desde diferentes formulario.

Un saludo y gracias por leerme.

roman 12-04-2010 18:34:34

Crea una propiedad pública en el formulario hijo a la que le asignas el valor del edit en el evento OnClose (verificas que ModalResult sea mrOk). No permitas que el formulario hijo se autodestruya, es decir, no pongas Action := caFree en el evento OnClose.

En el código que llama al formulario hijo, después de que termina ShowModal pero antes de destruir el formulario hijo, lees la propiedad mencionada arriba.

// Saludos

cloayza 12-04-2010 19:38:54

Yo utilizo esta forma:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    Edit1:TEdit;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Function Execute(Parametros:String):String;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Function Execute(AParametros:String):String;
Begin
      With TForm1.Create(Application) Do
      Begin
             Edit1.Text:=AParametros;
             Result:='';
             If ShowModal=mrOk Then 
                Result:=Edit1.Text

             Free;
      End;
End;
end.

Desde el Form Padre llamo:
Código Delphi [-]
Var    
    sValor:String;
Begin
     sValor:=Unit1.Execute('Parametros');
end;

Saludos...

Kandorf 12-04-2010 21:13:50

Muchas gracias a los dos por vuestra ayuda, ya puedo seguir con ese tema :)

Saludos.


La franja horaria es GMT +2. Ahora son las 15:56:53.

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