Hi,
hm...
Ist nicht so ganz das Wahre.
Hab es aber gerade durch Zufall hinbekommen.
Im
OnMouseEnter-Event (bzw. einem
CM_MOUSEENTER-Messagehandler) muss für die Anzeige folgendes stehen:
Delphi-Quellcode:
// Mouse enters form
{bValue ist eine globale Boolean-Variable}
if bVisible then Exit
else bVisible := true;
SHAppBarMessage(ABM_REMOVE, aAppBarData);
self.Height := self.Tag;
aAppBarData.rc.Bottom := self.ClientHeight;
{Result ist ein lokaler Integer}
result := SHAppBarMessage(ABM_NEW, aAppBarData);
if Result = 0 then
begin
ShowMessage('AppBar konnte nicht registriert werden');
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;
Und für das Verstecken muss das
OnDeactivate-Ereignis von
Application verwendet werden:
Delphi-Quellcode:
// Application loses focus
SHAppBarMessage(ABM_REMOVE, aAppBarData);
aAppBarData.rc.Bottom := 5;
{Result ist ein lokaler Integer}
result := SHAppBarMessage(ABM_NEW, aAppBarData);
if Result = 0 then
begin
ShowMessage('AppBar konnte nicht registriert werden');
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);
{bVisible ist ein globaler Boolean}
bVisible := false;
Bei mir funktioniert's jetzt, auch wenn es noch ein bisschen Buggy ist.
Chris