[Lazarus-es] variable publica en tun with ...

Christian xortix en gmail.com
Mar Ago 3 15:53:18 CEST 2010


simplemente genial tu respuesta, gracias.

El dom, 18-07-2010 a las 00:41 +0200, José Mejuto escribió:
> Hello christian,
> 
> Sunday, July 18, 2010, 12:05:41 AM, you wrote:
> 
> cO> *with* ElFormulario do *begin*
> cO>   bModificado*:=*false*;*
> cO>   ShowModal*;* *//Si pongo solo Show, no captura el cambio*
> cO>    ......
> cO> *end*;
> cO> las preguntas:
> cO> 1. Todo el with se repite varias veces, por lo que podria ponerlo en un
> cO> procedimiento enviando el form como parametro, el problema es que no existe
> cO> bModificado el los Tforms por lo que no me permite hacer eso.
> 
> Tienes un montón de formas de hacerlo, si la notificación es así de
> simple (vamos un valor sencillo) puedes usar el propiedad TAG de todos
> los formularios:
> 
> function comprueba(const AForm: TForm): boolean;
> begin
>   AForm.tag:=0;
>   AForm.ShowModal;
>   if AForm.tag=0 then Result:=false else Result:=true;
> end;
> 
> ---------
> 
> Si la cosa se complica más, esto es tienes que devolver una
> estructura, o varios eventos posibles tendrás que diseñar un form base
> para esos forms, de modo que todos los forms que necesiten ese
> comportamiento puedan heredar de este nuevo en vez de TForm. Algo así:
> 
> type
>   TEventoEspecial=procedure(Sender: TObject; UnaString: string;
>   UnInteger: Integer) of object;
> 
> type TFormConEventos=class(TForm)
> public
>   property OnEventoEspecial: TEventoEspecial;
> end;
> 
> procedure TFormConEventos.Modificado();
> begin
>   if Assigned(OnEventosEspecial) then
>      OnEventoEspecial(Self,'Hola',53);
> end;
> 
> Y luego en tus formularios, donde pone:
> 
> TFormCambios1=class(TForm)
> 
> Lo cambias por:
> 
> TFormCambios1=class(TFormConEventos)
> 
> y cuando llames al formulario:
> 
> .......
> FormCambios:=TFormCambios1.Create;
> FormCambios.OnEventoEspecial:=@MyFuncionEvento;
> FormCambios.Show;
> 
> Y habrás montado un sistema de eventos parecido al "OnKeyPress",
> "OnShow", "FormCreation", etc...
> 
> Hay más formas de montarlo, usando mensajes por ejemplo, pero quizá
> este último sea el más versátil.
> 






More information about the Lazarus-es mailing list