Hallo,
hab jetzt mit dem
Application.OnMessage Event gearbeitet:
Delphi-Quellcode:
procedure TmdiBuchungsliste.FormCreate(Sender: TObject);
begin
Application.OnMessage:=AppMessage;
end;
procedure TmdiBuchungsliste.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_LBUTTONDOWN then
begin
if not(ptInRect(lbBuchungsliste.boundsrect,lbBuchungsliste.parent.ScreenToClient(mouse.cursorpos))) then
begin
if not(ptInRect(dbsgBuchungsliste.cellrect(dbsgBuchungslisteCol,dbsgBuchungslisteRow),
dbsgBuchungsliste.ScreenToClient(mouse.cursorpos))) then
begin
sendtoback; //eingelagerte Listbox unsichtbar machen
end;
end;
Handled := false;
end;
end;
So ganz zufrieden bin ich mit der Lösung noch nicht, da das ganze nicht funktioniert, wenn ich auf das Hauptmenü bzw. die blaue Leiste darüber = Fensterleiste Klicke. Hier hilft wahrscheinlich wirklich nur ein Hook oder die Listbox wird in einem eigenem Formular dargestellt.
Gruß Karsten