Witam! Pisząc (a raczej zaczynając pisać, bo póki co mam tylko wygląd) swój program zostałem zmuszony do napisania dla niego komponentu opartego na komponencie ListBox. Problem polega na tym, że chciałbym do Inspektora Obiektów dodać właściwość o typie TListItems tak jak ma to komponent ListView w swoim Items - do edycji wyskakuje takie okienko. Oczywiście nie mam zamiaru zamieniać oryginalnej właściwości Items ListBox'a. Zacząłem tak:
uses ..., ComCtrls;
...
private
FContacts: TListItems;
...
procedure SetContacts(Value: TListItems);
published
property Contacts: TListItems read FContacts write SetContacts;
Teraz aby w procedurze SetContacts skorzystać z instrukcji FContacts.Count
procedure TBBList.SetContacts(Value: TListItems);
begin
FContacts:= Value;
Items.Add(FContacts.Item[FContacts.Count - 1].SubItems[2]);
end;
Muszę wywołać takie coś:
FContacts.Create(...);
Pomyślałem, że mogę tego dokonać w konstruktorze komponentu (a w desktruktorze FContacts.Destroy). Problem w tym, że w miejsce trzykropek z kodu powyżej muszę wstawić parametr AOwner: TCustromListView i właśnie nie wiem co tam wstawić :) Próbowałem różnych rzeczy (wstawiać nil i co tylko pasowało). Efekty tego były różne. Raz się kompilowało raz nie. Jak się skompilowało to nie mogłem położyć komponentu na formie - "Access violation..." lub jak udało się go położyć to znowu "Access violation" podczas próby edycji owej właściwości. Czy ktoś byłby mi w stanie udzielić pomocy w usunięciu tego błędu lub wskazaniu jakiejś alternatywy? W Internecie znalazłem coś na wzór odpowiedzi na mój problem, ale brzmiała ono mniej więcej tak: "Nie można tak zrobić, bo nie" - a jak już to chciałbym wiedzieć dlaczego :).