Hi,
ich versuche gerade ein kleines AppBar-Tool so umzuschreiben, dass er nur erscheint, wenn man über den 5 Pixel sichtbaren Streifen (Teil vom Formular) fährt. Sozusagen "automatisch im Hintergrund".
Ich fange das Event
CM_MOUSEENTER ab und das funktioniert soweit, allerdings bekomme ich es nicht hin, dass die AbbBar das gleiche verhalten zeigt, wie die DesktopBands, also dass das gesamte Formular erscheint, während man drauf ist und wieder verschwindet, wenn man das Formular verlässt.
Kurz gesagt passiert bei mir nichts, was darauf schließen lassen würde, dass mein Formular sich "öffnet".
Nach mehreren unsinnigen Versuchen steht in meinem selbst gefrickelten OnMouseEnter-Event folgendes:
Delphi-Quellcode:
procedure TfrmMain.CMMouseEnter(var Message: TMessage);
var
Result: integer;
begin
// Mouse enters form
SHAppBarMessage(ABM_REMOVE, aAppBarData);
aAppBarData.cbSize := SizeOf(TAppBarData);
aAppBarData.hWnd := Self.Handle;
aAppBarData.uCallbackMessage := WM_APPBAR;
aAppBarData.uEdge := ABE_TOP;
aAppBarData.rc.Left := 0;
aAppBarData.rc.Top := 0;
aAppBarData.rc.Right := 0;
aAppBarData.rc.Bottom := self.ClientHeight;
result := SHAppBarMessage(ABM_NEW, aAppBarData);
if Result = 0 then
begin
ShowMessage('Sorry, Windows is too stupid to show a simple AppBar!');
exit;
end;
self.Width := screen.Width;
SHAppBarMessage(ABM_QUERYPOS, aAppBarData);
SHAppBarMessage(ABM_SETPOS, aAppBarData);
Application.ProcessMessages;
MoveWindow(aAppBarData.hWnd, aAppBarData.rc.Left, aAppBarData.Rc.Top, GetSystemMetrics(SM_CXSCREEN), aAppBarData.rc.Bottom, true);
inherited;
end;
Funktioniert wie gesagt nicht. Keine Fehlermeldung oder so, es wird einfach nicht angezeigt.
Hat jemand eine Idee, wie sich das realisieren lässt?
Chris