Ver Mensaje Individual
  #2  
Antiguo 20-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Javi2
...necesito añadir un nuevo evento a un DBGrid y no tengo ni idea de como hacerlo. Creo que hay que crear un nuevo componente que herede del DBGrid y a partir de ahí añadir los eventos que se quiera.
Efectivamente, si quieres añadirle un evento no puedes hacerlo directamente, debes derivarlo en un nuevo componente y añadirselo.


Cita:
Empezado por Javi2
...Si alguien me puede ayudar le estaré muy agradecido y si pudiera ser con algún ejemplo mucho mejor pues he estado leyendo en varios sitios sobre el tema pero no me aclaro.
Para crear un nuevo componente utiliza el asistente de Delphi;
(1) File/New/Other...
(2) Selecciona Component y pulsa OK.
(3) Ancestor Type=TDBGrid (DBGrids)
(4) ClassName=TMyDBGrid (por ejemplo)
(5) En Palette Page escribe "MY COMPS" (por ejemplo)
(6) Unit, la que quieras, es el PAS donde se va a guardar.
(7) Pulsa el botón INSTALL...
(8) Como package selecciona el de usuario; Normalmente lo puedes encontrar en: "c:\Archivos de programa\Borland\Delphi6\Lib\dclusr.dpk"
(9) Luego te pedirá que recompiles el package; Hazlo y lo Instalas.

Ahora ya debería aparecer la nueva pestaña con tu componente.
Abre en el IDE el .PAS que has generado y añádele el evento. Recuerda que para que los cambios que realices al componente funcionen debes ir recompilando el package en el que lo has instalado (el de arriba).

Para añadir el evento, en la parte published añade una nueva propiedad, por ejemplo:

Código Delphi [-]
    // Evento antes de la ordenación
    property OnBeforeSort:TNotifyEvent read FOnBeforeSort write FOnBeforeSort;

Cuando quieras hacer "saltar" el evento para que se active lo que tengas programado debes añadir lo siguiente:

Código Delphi [-]
    ...
    // Lanzar el evento antes de ordenar...
    if Assigned(Self.FOnBeforeSort) then begin
      Self.OnBeforeSort(Self);
    end;

Pruébalo, si tienes problemas ya dirás...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita