Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Saber cuando se activa el dataset asociado a un TDBGrid (https://www.clubdelphi.com/foros/showthread.php?t=11554)

__cadetill 17-06-2004 11:37:00

Saber cuando se activa el dataset asociado a un TDBGrid
 
Hola

Estoy haciendo un deribado de TRxDbGrid y me encuentro con la necesidad de saber cuándo se activa el dataset asociado a este componente.

Me he estado mirando el TDataLink (y du descendiente TGridDataLink) que es el que creo controla el tema de acceso a la tabla, pero no veo muy bien por dónde tirar.

Alguien podría orientarme de cómo poder hacerlo?

Gracias o todos

marto 17-06-2004 12:14:35

Wop!

Pues con las Rx no lo sé, porque no trabajo con ellas, pero si hereda de TCustomDbGrid, creo que tienes que sobreescribir el método LinkActive.

Si no hereda de hí, se tienen que haber programao un DataLink que herede de TDataLink y que substituya a TGridDataLink, mira el método ActiveChanged de esta clase y verás a cual llama del grid.

Este es el código de ActiveChanged de TGridDataLink:

Código Delphi [-]
procedure TGridDataLink.ActiveChanged;
begin
  if Active and Assigned(DataSource) then
    if Assigned(DataSource.DataSet) then
      if DataSource.DataSet.IsUnidirectional then
        DatabaseError(SDataSetUnidirectional);
  FGrid.LinkActive(Active);
  FModified := False;
end;

Si tu grid no hereda de ahí, tienes que ver como han sobreescrito este método en la clase datalink que usen. No se si me explico... :confused:

__cadetill 17-06-2004 12:26:06

Hola Marto

Sí, eso lo había visto, el problema es el siguiente:
1.- El TRxDbGrid hereda de TDbGrid el cual ya tiene una propiedad detipo TGridDataLink.
2.- Para hacer lo que me propones tendría que hacer un hijo de TGridDataLink para reescribir el método.
3.- Tendría que declarar una propiedad de el tipo TGridDataLink hijo

Código Delphi [-]
  TMiDataLink = class(TGridDataLink)
  protected
    procedure ActiveChanged; override;
  end;
Ahora el problema está en, cómo digo yo a mi propiedad DataLink del RxDbGrid que es de tipo TMiDataLink en lugar de TGridDataLink para que se me dispare el evento que acabo de redefinir?

Gracias ;)

marto 17-06-2004 12:28:31

No quería decir eso, lo que tiens que sobreescribir es el método LinkActive del grid!!!!

__cadetill 17-06-2004 12:37:24

Marto, te voy a dar un beso :D

Correcto, había leído mal tu primer mensaje :o

Pues gracias miles

Nos leemos ;)


La franja horaria es GMT +2. Ahora son las 05:02:37.

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