[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