Ver Mensaje Individual
  #3  
Antiguo 08-08-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Reputación: 24
maeyanes Va por buen camino
Hola...

El detalle es que las propiedades que son eventos son de un tipo especial. En el caso del evento OnClick son del tipo TNotifyEvent el cual está declarado como:

Código Delphi [-]
type
  TNotifyEvent = procedure (Sender: TObject) of object;

Esto es, que a la propiedad OnClick solo le puedes asignar métodos de objeto con la misma firma que la declarada:

Código Delphi [-]
TMyForm = class(TForm)
  // Declaraciones de componentes y manejadores de eventos
private
  procedure DoOnClick(Sender: TObject);
  // ....
end;

implementation

procedure TMyForm.DoOnClick(Sender: TObject);
begin
  // Hacer algo
end;

// Asignar evento en tiempo de ejecución:
BitBtn.OnClick := DoOnClick;

Para lo que tu necesitas, podrías usar la propiedad Tag de los componentes. Esta propiedad es de tipo entero y bien podría almacenar el valor del ID.

Código Delphi [-]
while ido
  begin
    boton := TBitBtn.Create(nil);
    // inicializas propiedades
    linea := Qry_Line.fieldbyname('idlinea').AsInteger;
    boton.Tag := linea;
    boton.OnClick := DoOnClick;
    // demás código
end;

// Método DoOnClick;
procedure TMyForm.DoOnClick(Sender: TObject);
begin
  if Sender is TBitBtn then
  begin
    with TBitBtn(Sender) do
    begin
      if Tag = 1 then
        // ...
      else
        if Tag = 2 then
          // ...
    end
  end
end;

Esto es solo un ejemplo, pero podría ayudarte a resolver tu problema.



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita