![]() |
Appbar am rechten Bildschirmrand?
Ich habe
![]()
Delphi-Quellcode:
Allerdings erstreckt sich die Appbar dann über den gesamten Bildschirm (ausser über den reservierten Bereich). Wie kann ich dieses Problem beheben?
procedure TMainSidebar.CreateAppBar;
var iResult: integer; begin // Größe der ganzen Struktur fAppBarData.cbSize := SizeOf(TAppBarData); // Handle des Formulares, das als AppBar dienen soll fAppBarData.hWnd := Self.Handle; // Callback-Message fAppBarData.uCallbackMessage := WM_APPBARMSG; // Wo soll die AppBar sein? fAppBarData.uEdge := ABE_Right; {Alternative Werte: ABE_BOTTOM, ABE_LEFT, ABE_RIGHT} // Rect für den reservierten Platz, wo keine Anwendung "hin darf" fAppBarData.rc.Left := Screen.Width - self.ClientWidth; fAppBarData.rc.Right := Screen.Width; fAppBarData.rc.Top := 0; fAppBarData.rc.Bottom := screen.Height; // AppBar erstellen iResult := SHAppBarMessage(ABM_NEW, fAppBarData); // Hat das Erzeugen geklappt? if iResult = 0 then begin ShowMessage('Die Sidebar konnte nicht erzeugt werden. Unter Umständen existiert bereits eine Sidebar an dieser Position.'); Exit; end; self.Height := screen.Height; // Position abfragen und nochmal setzen SHAppBarMessage(ABM_QUERYPOS, fAppBarData); SHAppBarMessage(ABM_SETPOS, fAppBarData); // Nachrichtenschleife abarbeiten Application.ProcessMessages; // Bringt das Fenster an die gewünschte Position. Dazu werden die vorher festgelegten Werte verwendet. MoveWindow(fAppBarData.hWnd, fAppBarData.rc.Left, fAppBarData.Rc.Top, fAppBarData.rc.Right, fAppBarData.rc.Bottom, true); end; Edit: Der Borderstyle des Formulars ist bsnone. Liegt es vlt. daran? PS.: Ich weiss, dass es schon viele Beiträge zu diesem Thema gibt, habe aber nichts gefunden, das mir hilft.:? |
AW: Appber am rechten Bildschirmrand?
*PUSH* (bitte antworten, bin echt verzweifelt:cry:)
|
AW: Appber am rechten Bildschirmrand?
Probiere es doch mal mit ein paar festen Werten... mal gucken was dann passiert...
|
AW: Appber am rechten Bildschirmrand?
meinst du bei rc.left und so?
Edit: Habs da mit festen Werten versucht, funktioniert aber immer noch nicht |
AW: Appber am rechten Bildschirmrand?
Wie geht nicht.
Zeig mal ein Bild wie das dann aussieht, das kann man sich ja so gar nicht anhand deiner Beschreibung vorstellen. Es sei noch gesagt das ich weder weiß, wie diese API-Befehle richtig angewandt werden, noch habe ich Windows. Aber ich versuche mal trotzdem dein Problem zu finden :) |
AW: Appbar am rechten Bildschirmrand?
Welche Werte haben denn Left, Right, Top und Bottom?
|
AW: Appbar am rechten Bildschirmrand?
Code:
procedure TForm2.FormCreate(Sender: TObject);
var iResult: integer; begin // Größe der ganzen Struktur fAppBarData.cbSize := SizeOf(TAppBarData); // Handle des Formulares, das als AppBar dienen soll fAppBarData.hWnd := Self.Handle; // Callback-Message fAppBarData.uCallbackMessage := WM_APPBARMSG; // Wo soll die AppBar sein? fAppBarData.uEdge := ABE_RIGHT; {Alternative Werte: ABE_BOTTOM, ABE_LEFT, ABE_RIGHT} // Rect für den reservierten Platz, wo keine Anwendung "hin darf" fAppBarData.rc.Left := Screen.Width - Self.Width; fAppBarData.rc.Right := Screen.Width; fAppBarData.rc.Top := 0; fAppBarData.rc.Bottom := Screen.Height; // AppBar erstellen iResult := SHAppBarMessage(ABM_NEW, fAppBarData); // Hat das Erzeugen geklappt? if iResult = 0 then begin ShowMessage('Die AppBar konnte nicht erzeugt werden. Unter Umständen existiert bereits eine AppBar an dieser Position.'); Exit; end; // Position abfragen und nochmal setzen SHAppBarMessage(ABM_QUERYPOS, fAppBarData); SHAppBarMessage(ABM_SETPOS, fAppBarData); // Nachrichtenschleife abarbeiten Application.ProcessMessages; // Bringt das Fenster an die gewünschte Position. Dazu werden die vorher festgelegten Werte verwendet. MoveWindow(fAppBarData.hWnd, fAppBarData.rc.Left, fAppBarData.Rc.Top, Self.Width, fAppBarData.rc.Bottom - fAppBarData.rc.Top, true); end; |
AW: Appbar am rechten Bildschirmrand?
Danke für die vielen Antworten habs jetzt hingekriegt. Das Formular hatte align := alRight:oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz