Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 29-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Hola noob,
Como dice Al, sería oportuno que nos dieras más detalle.
Formalmente un evento se hace aplicando punteros a métodos. Por ejemplo:

Código Delphi [-]
type
  TCambiaCadenaEvent = procedure (Cadena: string) of object;

Luego tu clase debe definir un atributo de dicho de evento:

Código Delphi [-]
TMiClase = class
...
  private
    FCadena: string; 
    FOnCambiaCadenaEvent: TCambiaCadenaEvent;
...
end;

Ahora viene lo interesante. Tenemos el tipo, más no cuando salta. Dices que se produce al cambiar una cadena. Formalmente, un método hace disparar el evento.

Pero he aquí que en realidad el evento está incompleto. Necesitamos darle una respuesta, en otro caso no debería suceder. Lo de esperar es que uno pueda implementar su rutina, pero tranquilamente uno puede definir un método que tenga la misma declaración que el tipo del evento como respuesta al mismo.

Supongamos que hacemos uso de propiedades para cambiar el texto de la cadena:
Código Delphi [-]
property Cadena: string read FCadena write SetCadena;

SetCadena es un método privado, y en el hacemos que se dispare el evento:

Código Delphi [-]
procedure TMiClase.SetCadena(Value: string);
begin
  if Value <> FCadena
     then  begin
               FCadena := Value;
               if Assigned(FOnCambiaCadenaEvent) // comprobamos que haya Rta
                  then FCambiaCadenaEvent(Value); // disparamos evento
             end;
end;

Ahora si estamos en condiciones de darte Rta al evento y asociarlo.

1) Disparará un método propio de la clase:

Para ello se necesita definir un método que tenga la misma declaración del puntero a método en la clase:

Código Delphi [-]
TMiClase = class
  private
  ...
  procedure EventoCambiarCadena(Cadena: string);
...

procedure TMiClase.EventoCambiarCadena(Cadena: string);
begin
  ShowMeesage(Cadena); // o lo que quieras que haga.
end;


Asociamos el evento a la clase, (tal vez en el constructor):

Código Delphi [-]
FOnCambiaCadenaEvent := EventoCambiarCadena;


2) Y como dije, lo normal es que la clase no sea la "dueña" de la respuesta. Por tanto el método formalmente se define fuera. Necesitamos asignarle el método de alguna manera. Por ejemplo, propiedades:

Código Delphi [-]
property OnCambiaCadenaEvent: TCambiaCadenaEvent read FOnCambiaCadenaEvent ....

Y en base a eso, podemos hacer esto:

Código Delphi [-]
MiClase.OnCambiaCadenaEvent := MiRutina;
MiClase.Cadena := 'Hola, mira como cambio';

En este caso,

La clase solita dispará el evento y aplicará las sentencias definidas en MiRutina.

MiRutina puede ser un método ajeno a la clase TMiClase, necesita ser un método, con la misma declaración más puede ser declarado en otro lado. Por ejemplo:

Código Delphi [-]
procedure TForm1.MiRutina(Cadena: string);
begin
  Label1.Caption := Cadena;
end;

En este caso, es un método definido en el Form1, y lo que hace es visualizar la cadena que cambió en un label.

Espero que se entienda,

Sugiero una leída al capítulo dedicado a los eventos del libro La Cara Oculta de Delphi 4.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Quiero crear mi propio Script! PiornoCKA&G Varios 4 02-01-2007 17:39:19
Crear mi propio tipo de archivo. JuanErasmo C++ Builder 3 18-08-2005 14:53:05
Crear tabla con mi propio tipo.. dmariscal Conexión con bases de datos 6 20-04-2004 19:05:37
Crear mi propio export filter rfernandez Impresión 1 05-02-2004 15:52:52
Ayuda para crear mi propio IDE antonio Varios 2 03-06-2003 13:07:32


La franja horaria es GMT +2. Ahora son las 12:07:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi