Jak napisać metode OnClick dla swojej Klasy?

0

Chciałbym prosić o pomoc.
Zbudowałem klase TObrazek która dziedziczy po klasie TImage.
Teraz chce zdefiniowac zdarzenie OnClick dla swojej klasy i prawde powiedziawszy nie mam pojecia jak. W miare możliwości prosze również mi powiedzieć jak ją późnije wywoływać.
niro

Dzieki.
Prosiłbym jeszcze o przykład jego definicji bo w zasadzie tego najbardziej potrzebuje.

Obiekty klasy TObrazek sa tworzone dynamicznie.

0

Wpisz takie coś w sekcji public:

<font color="green">property</span> OnClick; <font color="blue">//obsługa 1-go kliknięcia</span>
<font color="green">property</span> OnDblClick; <font color="blue">//obsługa 2-krotnego klikniecia</span>

Powinno zadziałać. To było w książce Adama Delphi 6, kompedium programisty przy tworzeniu komponentu TFly. :-)

0

poprawcie mnie jeśli się mylę: TImage ma zdarzenie OnClick, więc przy dziedziczeniu klasa pochodna ma też to zdarzenie więc nie trzeba pisać go ponownie.

0

poprawcie mnie jeśli się mylę: TImage ma zdarzenie OnClick, więc przy dziedziczeniu klasa pochodna ma też to zdarzenie więc nie trzeba pisać go ponownie.

Ale ja chce je zdefiniować po swojemu. Zeby w chwili kliknięcia działo sie to co JA chcę.

0

OverRide'nij metode Click.
Następnie w metodzi po skonczeniu wybranych poleceń umieść Inherited;

Jak chcesz przypisać zdarzenie to tak: Wskaznik_do_kontrolki.OnClick:=Procka;

0

Po prostu ukryj właściwość OnClick. Natomiast w konstruktorze komponentu przypisz do onclick'a swoją procedurkę ktora ma te same parametry co wymaga OnClick. tym sposobem na OnClick wykona się tylko to co ty chcesz a właściwość OnClick nie będzie dostępna na zewnątrz komponentu.

Jeśli chcesz udostępnić zdarzenie onclick i tak to stwórz własny property.

np.:

Type
TMojOnClick = Procedure (Sender: TObject); //to jest to samo co TNotifyEvent, podaje to gdybyś chciał utworzyc wlasny event

  TMojaKlasa = class(TImage)
  Private
        fMojOnClick: TNotifyEvent;
        property OnClick;      
        Procedure Obsluz (Sender: TObject);
  Public
        constructor Create(AOwner: TComponent); override;
  Published
        Property MojOnClick: TNotifyEvent read fMojOnClick write fMojOnClick;    
  end;

Implemetation

Procedure TMojaKlasa.Obsluz (Sender: TObject);
begin
//tutaj twoje działania ktore moga np decydowac o wywolaniu twojego onclicka
if Assigned (fMojOnClick) then fMojOnClick(self);// jeżeli jest przypisana procedura do MojOnClick wywolaj ją z parametrem Self (Self czyli przekazuje wskażnik do samego siebie)
end;

Constructor TMojaKlasa.Create (AOwner: TComponent);
begin
inherited;
OnClick = Obsluz;
end;

Powinno działać

0

Przepraszam za dubla ale mialem klopoty z proxy

0

Lepiej jest przykryć metodę Click, dzięki temu będzie można także korzystać z OnClick.

1 użytkowników online, w tym zalogowanych: 0, gości: 1