Hallo!
Folgendes Problem:
Ich hab ne neue Komponente erstellt, abgeleitet von TLabel. Beim Klick darauf wird zusätzlich eine ListBox erstellt, und wenn man in der auf ein Element klickt soll diese wieder geschlossen werden.
Hier mal so grob der Code dazu:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| const WM_ListBoxFree=WM_USER+1;
type TMyLabel=class(TLabel) private ListBox: TListBox; procedure LabelClick(Sender: TObject); procedure ListBoxClick(Sender: TObject); procedure MsgHandler(var Msg: TMessage); message WM_ListBoxFree; end;
procedure TMyLabel.LabelClick(Sender: TObject); begin ListBox:=TListBox.Create(self); ListBox.OnClick:=ListBoxClick; end;
procedure TMyLabel.ListBoxClick(Sender: TObject); begin PostMessage(ListBox.Handle,WM_ListBoxFree,0,0); end;
procedure TMyLabel.MsgHandler(var Msg: TMessage); begin ListBox.Free; end; |
So wie es jetzt ist wird aber der MsgHandler gar nicht aufgerufen und somit die ListBox auch nicht entfernt. Ich hab schon ein bißchen mit den Parametern von PostMessage rumgespielt, aber ich krieg es einfach nicht hin.