Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2018
strelok strelok is offline
Miembro
 
Registrado: Sep 2017
Posts: 130
Poder: 1
strelok Va por buen camino
Asignar una función dinámicamente

Hola,

me gustaría saber si es posible asignar una función al evento OnGetCellColor de los TAdvStringGrid y TDBAdvGrid, si y solo si, no hacen uso de ese evento actualmente ¿es posible?
Responder Con Cita
  #2  
Antiguo 07-02-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.063
Poder: 29
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Nunca he usado los componentes TMS, pero de acuerdo a esta guía, TMS TAdvStringGrid DEVELOPERS GUIDE, el evento OnGetCellColor está declarado así:
Código Delphi [-]
 TGridColorEvent = procedure (Sender:TObject; ARow, ACol:Integer; AState:TGridDrawState;
   ABrush:TBrush; AFont:TFont) of object;
Entonces creo que para asignarle tu propio procedimiento, bastaría con hacer algo similar a esto:
Código Delphi [-]
...

type
  TForm1 = class(TForm)
    AdvStringGrid1 : TAdvStringGrid;
    procedure FormCreate(Sender: TObject);
    ...
  private
    procedure MyGetCell(Sender:TObject; ARow, ACol:Integer; AState:TGridDrawState; ABrush:TBrush; AFont:TFont);
    ...
  public
    ...
  end;
  
...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdvStringGrid1.OnGetCellCol := MyGetCell;
end;

procedure TForm1.MyGetCell(Sender:TObject;ARow, ACol:Integer; AState:TGridDrawState; ABrush:TBrush; AFont:TFont);
var
  sg: TAdvStringGrid;
begin
  sg := AdvStringGrid1;
  ...  // operaciones pertinentes
end;
...
Aunque, en base, sería lo mismo usar la declaración original...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 08-02-2018
strelok strelok is offline
Miembro
 
Registrado: Sep 2017
Posts: 130
Poder: 1
strelok Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Nunca he usado los componentes TMS, pero de acuerdo a esta guía, TMS TAdvStringGrid DEVELOPERS GUIDE, el evento OnGetCellColor está declarado así:
Código Delphi [-]
 TGridColorEvent = procedure (Sender:TObject; ARow, ACol:Integer; AState:TGridDrawState;
   ABrush:TBrush; AFont:TFont) of object;
Entonces creo que para asignarle tu propio procedimiento, bastaría con hacer algo similar a esto:
Código Delphi [-]
...

type
  TForm1 = class(TForm)
    AdvStringGrid1 : TAdvStringGrid;
    procedure FormCreate(Sender: TObject);
    ...
  private
    procedure MyGetCell(Sender:TObject; ARow, ACol:Integer; AState:TGridDrawState; ABrush:TBrush; AFont:TFont);
    ...
  public
    ...
  end;
  
...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdvStringGrid1.OnGetCellCol := MyGetCell;
end;

procedure TForm1.MyGetCell(Sender:TObject;ARow, ACol:Integer; AState:TGridDrawState; ABrush:TBrush; AFont:TFont);
var
  sg: TAdvStringGrid;
begin
  sg := AdvStringGrid1;
  ...  // operaciones pertinentes
end;
...
Aunque, en base, sería lo mismo usar la declaración original...

Saludos
Muchas gracias, ¿y para preguntar que no el método no se esté usando actualmente? ¿algo así?
Código:
if (TComboBox(pComponente).OnEnter=nil) then
Responder Con Cita
  #4  
Antiguo 08-02-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.637
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Cita:
Empezado por strelok Ver Mensaje
Muchas gracias, ¿y para preguntar que no el método no se esté usando actualmente? ¿algo así?
Código:
if (TComboBox(pComponente).OnEnter=nil) then
Aunque esté asiganado, siempre puedes "quedarte" con el puntero, asignar la tuya y luego desde la tuya llamar à la anterior que estaba asignada.
De esa forma podrías mantener amnbas.
__________________
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
Respuesta


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
Asignar Dinamicamente Propiedad DisplayFormat antes de ejecutar X formulario o Report rmendoza83 Varios 11 04-11-2016 20:54:01
Asignar dinámicamente valores a propiedades sin conocer previamente cuáles Leviatan OOP 4 31-01-2012 00:34:59
Asignar una funcion al evento on click abmicros Varios 4 12-11-2009 11:56:36
Asignar evento on exit y otros a varios labeledit creados dinamicamente cotoprix OOP 2 08-01-2004 23:05:53
asignar evento a control creado dinamicamente jorgeganc Varios 4 17-12-2003 02:47:51


La franja horaria es GMT +2. Ahora son las 12:57:55.


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