![]() |
AppBar Breite festlegen
Hallo zusammen,
ich benötige Hilfe bei meiner AppBar. Mit folgendem Code bekomme ich es ja schon hin, dass der PLatz reserviert wird. Dennoch hätte ich gerne, dass das Formular nicht über die gesamte Breite geht, sondern ich es festlegen möchte, wie breit und ob es rechts mitte links angeordnet werden soll.
Delphi-Quellcode:
Mit
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellApi; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private fAppBarData: _AppBarData; public { Public declarations } end; const WM_APPBARMSG = WM_USER + 1; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.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_TOP; {Alternative Werte: ABE_BOTTOM, ABE_LEFT, ABE_RIGHT} // Rect für den reservierten Platz, wo keine Anwendung "hin darf" fAppBarData.rc.Left := 0; fAppBarData.rc.Right := 0; fAppBarData.rc.Top := 0; fAppBarData.rc.Bottom := self.ClientHeight; // 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; // Formular genauso breit machen, wie Bildschirm self.Width := screen.Width; // 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, GetSystemMetrics(SM_CXSCREEN), fAppBarData.rc.Bottom, true); end; procedure TForm1.FormDestroy(Sender: TObject); begin SHAppBarMessage(ABM_REMOVE, fAppBarData); end; end.
Delphi-Quellcode:
bekomme ich es nicht hin.
// Formular genauso breit machen, wie Bildschirm
self.Width := 100; Könnte sich jemand den Code mal angucken und mir einen Lösungsansatz geben. Gruß S4SH |
Re: AppBar Breite festlegen
PUSH
|
Re: AppBar Breite festlegen
Zitat:
Delphi-Quellcode:
// Wo soll die AppBar sein?
fAppBarData.uEdge := ABE_LEFT;
Delphi-Quellcode:
// 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); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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