Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-09-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Asignar evento Oncalcfield en tiempo de ejecucion

Buenos dias foro:

Tengo una duda puedo asignar el evento Onclalfield en tiempo de ejecucion, es decir como por ejemplo cuando yo oprima un button.

Se puede hacer esto?? ¿si se puede como debo hacerlo?, gracias por su ayuda
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #2  
Antiguo 05-09-2005
islu islu is offline
Miembro
 
Registrado: jun 2003
Posts: 111
Poder: 22
islu Va por buen camino
Si claro, te creas una función cuya forma sea igual a la que el evento requiera, y la asignas asi :

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables;

type
  TForm1 = class(TForm)
    Table1: TTable;
    Button1: TButton;
    procedure CalcField(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CalcField(DataSet: TDataSet);
begin
    ShowMessage('ISLU');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Table1.OnCalcFields := CalcField;
end;

end.

Para saber cual es la forma del procedimiento, es decir, que parametros toma, basta con que crees una por defecto con el diseñador de Delphi, y luego crees la tuya.

Puedes hacerlo con cualquier evento, bien sea de una tabla, de un botón ( OnCLick ), de cualquier elementio visual. Solo has de tener en cuenta los parámetros de entrada.

Una cosa, para saber si un evento ya esta asignado :

Código Delphi [-]
    if( not assigned( Table1.OnCalcFields ) ) then
       Table1.OnCalcFields := CalcField
    else
        ShowMessage( 'Ya asignado!!!');

Asi evitas macharacar algún evento, o si lo tienes que asignar o no.

Última edición por islu fecha: 05-09-2005 a las 20:20:28.
Responder Con Cita
  #3  
Antiguo 06-09-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

islu, Estas seguro que esto te funciona:-S. Hice un ejemplo casi identico y no marcha
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 06-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 20
jmariano Va por buen camino
La respuesta dada por islu funciona, pero el problema es que, como asignamos el evento "OnCalcFields" mas tarde, tenemos que hacer un refresco o un desplazamiento en el DataSet para que se actualice el valor del campo calculado. (Esto lo comento en base a una pequeña prueba que hice sobre el tema).

Así que la asignación del evento quedaría, por ejemplo, así

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
    Table1.OnCalcFields := CalcField;
    Table1.First; // Para que actualice el resultado, también podría ser 'Refresh'
end;

Saludos!
Responder Con Cita
  #5  
Antiguo 06-09-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 20
el_barto Va por buen camino
Gracias J es ciero vt hazle un refresh y veras que funciona perfectamente
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #6  
Antiguo 06-09-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Ok,ok verdad, ya vi el error que tenia
Código Delphi [-]
Table1.OnCalcFields := CalcField(asignando dataset);//Como tenia un parametro, lo estaba asignando
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:31:20.


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