Como Publicar e mudar um evento de um componente

Delphi

20/11/2006

Bom dia pessoal..
Estou com o seguinte problema:
Utilizo um componente no qual já existe um evento no caso o OnButtonClick,
Este evento não é visivel no object inspector do delphi e para manipula-lo eu tenho que escrever a seguinte linha de código:
Componente.OnButtonClick := MeuEventoClick;

O que eu quero é escrever um componente derivado deste e ai tornar publica e modificar este evento de forma que continue com as caracteristicas anteriores e implementasse as minhas novas carcteristicas..
Alguém poderia me dar uma mãozinha?
Grato
Fausto


Faustoalves

Faustoalves

Curtidas 0

Respostas

Rodc

Rodc

20/11/2006

Apenas para aparecer no ObjectInspector, quando fizer o seu novo componente herdando do componente anterior inclua na cláusula ´published´ a linha abaixo:
  property OnButtonClick;

Para fazer override da função (sobrescrevê-la novamente com um novo código), acho que você terá que criar novamente a propriedade. Para isto, copie a declaração do componentente que você está herdando e faça uma nova implementação.
Espero ter sido claro.


GOSTEI 0
Faustoalves

Faustoalves

20/11/2006

Sim, creio que entendi, amigo agora como eu faço para criar uma nova propriedade no caso eu gostaria de criar um campo text neste componente.. vc poderia me dar uma dica?
Grato
Fausto


GOSTEI 0
Rodc

Rodc

20/11/2006

Segue um exemplo de criação de um campo numério e um texto.
private:
    FMeuCaption: String;
    FMeuNumero: Integer;
    procedure SetMeuNumero(Value: Integer);

published:
    property MeuCaption: String read FMeuCaption write FMeuCaption;
    property MeuNumero: Integer read FMeuNumero write SetMeuNumero;

implementation
  Uses Dialogs;  // Para o ShowMessage()

// Implementação da função SetMeuNumero
procedure SetMeuNumero(Value: Integer);
begin
    if FMeuNumero <> Value then
    begin
        if (Value > 500) then  // Não permite número maior que 500
            ShowMessage(´Número inválido´)
        else
            FMeuNumero := Value;  // Guarda o valor na propriedade
    end;
end;



GOSTEI 0
POSTAR