Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Puntero de Procedure (https://www.clubdelphi.com/foros/showthread.php?t=75657)

Paulao 09-09-2011 22:07:39

Puntero de Procedure
 
Que significa estas lineas abajo:

Código Delphi [-]
TDoPADQryByWhereCDSEvent = procedure (AWhereVO: OleVariant; var LResultSet,LResult: OleVariant) of object;

Como yo interpreto esto, como lo interpreto esto. Qual es el impacto en la aplicacion, como esto si comporta?

Gracias.

roman 09-09-2011 23:10:25

Es un tipo de datos. A las variables de ese tipo les puedes asignar métodos con esas características y ejecutarlos desde dichas variables.

Un uso común de esto está en los eventos de la VCL. Por ejemplo, eventos como OnClick corresponde al tipo de datos:

Código Delphi [-]
TNotifyEvent = procedure(Sender: TNotifyEvent);

El evento OnClick, como tal está declarado así:

Código Delphi [-]
TControl = class(TComponent)
private
  ...
  FOnClick: TNotifyEvent;
  ...
public
  ...
  property OnClick: TNotifyEvent read FOnClick write FOnClick;
  ...

En algún lugar del código de TControl que maneja los clics del ratón está este código:

Código Delphi [-]
if Assigned(FOnClick) then
  FOnClick(Self);

Es decir, si el puntero FOnClick tiene un valor asignado, ejecuta el método al que apunta pasando la instancia de TControl como parámetro.

Aunque puede tener diversos usos, el más común, me parece, es en este contexto de los eventos.

Agrego: el tipo de datos procedure ha existido siempre en pascal y sirve para almacenar procedimientos en general. El uso de of object simplemente indica que en lugar de un procedimiento regular, se trata del método de un objeto.

// Saludos


La franja horaria es GMT +2. Ahora son las 03:57:50.

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