Nowe zdarzenie w TFrame jak dodać aby było widoczne w IDE

0

Próbuję dodać zdarzenie aby było widoczne w IDE delphi do nowej klasy typu TFrame i nie mogę dać sobie z tym rady :(


type
  TfrAfterCreation = procedure(Sender: TComponent) of object;

TNewFrame = class(TFrame)
private
    FOnAfterCreation: TfrAfterCreation;
published
    property OnAfterCreation: TfrAfterCreation read fOnAfterCreation write fOnAfterCreation;
end;

Następnie tworzę nową ramkę wybierając dziedziczenie czyli New / Inheritable Items -> TNewFrame

I sądziłem że tutaj to zdarzenie już będzie widoczne ale nie nie jest. Poszukałem w google i sugerują rejestrację po przez

RegisterCustomModule (TYourClass1, TCustomDataModule );
TFrameModule => VCLFormContainer (vcldesigner.dcp)

Jednak mi delphi wywala brak takiego modułu. Moje pytanie brzmi co robię źle :)

3

Zobacz sobie na ten wątek — Registering a custom Frame — oraz na drugi, linkowany w nim. Są tam przykłady i opisy co trzeba zrobić. Przy okazji:

Rafał D napisał(a):
type
  TfrAfterCreation = procedure(Sender: TComponent) of object;

Ten typ jest praktycznie zgodny z wbudowanym TNotifyEvent, więc z niego powinieneś skorzystać. Zdarzenia zwykło się tworzyć w taki sposób, aby Sender był klasy TObject i we wszystkich komponentach Sender jest obiektem ogólnym. Oczywiście nie jest to wymóg, ale warto to zaznaczyć.

Druga sprawa jest taka, że przy rozszerzaniu funkcjonalności danego komponentu, własną klasę dziedziczy się z z klasy bazowej danej kontrolki, czyli z prefiksem Custom. Własną klasę też tworzy się jako Custom, a finalnie wystawia klasę końcową, z umieszczonymi w sekcji published samymi nazwami właściwości i zdarzeń. Zobacz sobie jak wyglądają klasy w VCL, a zrozumiesz o co chodzi. To też nie jest obowiązkowe, ale tak to wszystko wygląda — nie bez powodu.

0

@Rafał D Zerknij na Rozdział 15 powinno rozwiązać większość twoich problemów.

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