Siemka. Pisze pierwszy swój komponent. A mianowicie na bazie TListBox chcę do niego dodać OnChange a dokładniej chcę automatycznie podliczać ilość elementów w Labelu czyli:
Label1.Caption := IntToStr(ListBox1.Items.Count) ;
Podpiąłem tą linijkę już pod zainstalowany poniższy komponent dokładnie pod jego zdarzenie OnChange, (oczywiście zamiast Listbox1 u mnie TChListbox1)ale bez efektów, nic się nie dzieje zero błędów ale i zero efektów. Jak to powinno wyglądać poprawnie? a to mój kod komponentu:
TChListBox = class(StdCtrls.TListBox)
private
FItemIndex: Integer;
FOnChange: TNotifyEvent;
procedure CNCommand(var AMessage: TWMCommand); message CN_COMMAND;
protected
procedure Change; virtual;
procedure SetItemIndex(const Value: Integer); override;
published
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
procedure Register;
IMPLEMENTATION
procedure TChListBox.Change;
begin
if Assigned(FOnChange) then
FOnChange(Self);
end;
procedure TChListBox.CNCommand(var AMessage: TWMCommand);
begin
inherited;
if (AMessage.NotifyCode = LBN_SELCHANGE) and (FItemIndex <> ItemIndex) then
begin
FItemIndex := ItemIndex;
Change;
end;
end;
procedure TChListBox.SetItemIndex(const Value: Integer);
begin
inherited;
if FItemIndex <> ItemIndex then
begin
FItemIndex := ItemIndex;
Change;
end;
end;
procedure Register;
begin
RegisterComponents('MyComponents',[TChListBox]);