Componentes - criando eventos |
Top Previous Next |
============ criando eventos ===============
Se o seu evento só possui parametro SENDER: TOBJECT ou seja padrão, use o type TNotifyEvent para simplificação do codigo veja a dica sobreo NotifyEvent
crie um type procedure of object:
type TImprimeLinha = procedure(Sender: TObject; var Linha: string; var Aborta:Boolean; LinhaAtual: Integer) of object;
// Componente TxPrinter TxPrinter = class(TComponent) private
fOnImprimeLinha: TImprimeLinha; // interna
public
procedure Imprimeln(const Valor:string);
published
// declaraçao para o object inspector property OnImprimeLinha: TImprimeLinha read fOnImprimeLinha write fOnImprimeLinha;
end;
implementation
procedure TxPrinter.Imprime(const Valor:string); var Linha : string; // Linha que contém a string a ser impressa Imprimir : Boolean; // Se deverá imprimir ou não (var passada para o onImprimeLinha) begin fOK := True; Linha := Valor;
Inc(LinhaAtual); // uma var global exemplificada aqui
// Se o OnImprimeLinha estiver associado, passa os parametros ANTES de imprimir if Assigned(OnImprimeLinha) then begin Imprimir := True; // De padrão imprime a linha atual
// a passagem de Linha e Imprimir como var, permite que o usuário modifique // seus valores ANTES de completar esta rotina. Interceptando no OnImprimeLinha
OnImprimeLinha(Self, Linha, Imprimir, LinhaAtual);
if NOT Imprimir then Exit; // Se o Imprime foi alterado então cancela a impressão... end;
MandaImpressora(Valor); end;
|