![]() |
Unit für Appbar
Hab mir grad den Artikel zu AppBars in der CodeLib durchgelesen und einfach mal ausprobieren wollen. Nur kennt er die ganze Strukturen etc. nicht. Welche Unit ist noch einzubinden?
|
Re: Unit für Appbar
Es sollte wohl die Unit ShellApi sein ;)
...:cat:... P.S.: Inc(PostCount) :lol: |
Re: Unit für Appbar
Das freut mich aber, dass sich zufälligerweise so schnell jemand gefunden hat, der mir antwortet :wink:.
Thx. |
Re: Unit für Appbar
Hätte da auch ein kleines Problem bezüglich der AppBar.
Und zwar besteht mein Programm aus 4 Forms, von denen jede eine AppBar sein soll. Bei der Hauptform funktioniert das auch ganz gut, nur bei den anderen 3 bekomm ich eine Access Violation Fehlermeldung, obwohl ich alles genau gleich, wie bei der Hauptform gemacht haben (die 3 weiteren Forms werden über den Show-Befehl angezeigt). Gruß Flo |
Re: Unit für Appbar
Moin Flo,
ohne Sourcen ist das wohl kaum zu beantworten. Dir ist schon klar, dass man maximal vier AppBars gleichzeitig haben kann, von die Startleiste schon mal eine ist. |
Re: Unit für Appbar
Das OnCreate der Hauptform beginnt so:
Delphi-Quellcode:
und das OnShow der anderen Forms beginnt so: (natürlich für jede Form angepasst)
ClientWidth := 120;
ClientHeight := Screen.Height - 28; Left := Screen.Width - ClientWidth; Top := 0; aAppBarData.cbSize := SizeOf(TAppBarData); aAppBarData.hWnd := Self.Handle; aAppBarData.uCallbackMessage := WM_APPBARMSG; aAppBarData.uEdge := ABE_RIGHT; {Alternative Werte: ABE_BOTTOM, ABE_LEFT, ABE_RIGHT, ABE_TOP} aAppBarData.rc.Left := Form1.Left; aAppBarData.rc.Right := Screen.Width; aAppBarData.rc.Top := Form1.Top; aAppBarData.rc.Bottom := Form1.ClientHeight; iResult := SHAppBarMessage(ABM_NEW, aAppBarData); if iResult = 0 then begin ShowMessage('Die AppBar konnte nicht erzeugt werden. Unter Umständen existiert bereits eine AppBar an dieser Position.'); Exit; end; 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); MPEGaudio := TMPEGaudio.Create; Randomize; z := 1; schirm := 0; Maximieren1.Enabled := false; Minimieren1.Enabled := true; F2 := TForm2.Create(self); F2.Show; F3 := TForm3.Create(self); F3.Show; F4 := TForm4.Create(self); F4.Show;
Delphi-Quellcode:
Hoffe, dass hilft weiter
ClientWidth := 120;
ClientHeight := Screen.Height - 28; Left := 0; Top := 0; aAppBarData.cbSize := SizeOf(TAppBarData); aAppBarData.hWnd := Self.Handle; aAppBarData.uCallbackMessage := WM_APPBARMSG; aAppBarData.uEdge := ABE_LEFT; {Alternative Werte: ABE_BOTTOM, ABE_LEFT, ABE_RIGHT, ABE_TOP} aAppBarData.rc.Left := Form2.Left; aAppBarData.rc.Right := Form2.ClientWidth; aAppBarData.rc.Top := Form2.Top; aAppBarData.rc.Bottom := Form2.ClientHeight; iResult := SHAppBarMessage(ABM_NEW, aAppBarData); if iResult = 0 then begin ShowMessage('Die AppBar konnte nicht erzeugt werden. Unter Umständen existiert bereits eine AppBar an dieser Position.'); Exit; end; 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); |
Re: Unit für Appbar
Moin Flo,
und an welcher Stelle tritt eine AV auf? |
Re: Unit für Appbar
Direkt beim Start, aber nur, wenn ich versuche in einem der 3 anderen Forms eine AppBar draus zu machen.
Weiß nicht, ob sich die AppBar vielleicht mit dem OnShow nicht versteht, wobei es ja eigentlich gehen müsste (OnCreate hab ich nämlich auch schon probiert - ging auch nicht). |
Re: Unit für Appbar
Moin Flo,
geh' doch mal bitte im Einzelschritt da durch, und gib dann mal die Zeile an der die AV auftritt. |
Re: Unit für Appbar
Hallo Christian,
habe das Problem gefunden und es auf andere Art umgangen. Und zwar hab ich in den weiteren Forms die Position und Größe mit Form2.Width := ...; eingestellt. Dies führte zu dem Fehler. Mit Width := ...; funktioniert es problemlos. Aufgrund eines anderen Fehlers und der Tatsache, dass zusätzlich zur Taskleiste keine weitere AppBar möglich ist, hab ich nun ein neues Programm erstellet, dass ebenfalls 4 Forms enthält, die alle eine AppBar Komponenete haben, die alle AppBars problemlos erstellt, die ich brauch. (Was ein Satz :roll: ) Dieses Programm rufe ich nun beim Programmstart auf und so werden die AppBars erzeugt und mein prog legt sich drüber. Nur weiß ich leider nicht, wie ich dieses Programm beim Beenden meines Hauptprogramms mitbeenden kann. Hast du da vielleicht eine Idee? (Oder auch ein anderer?) Gruß Flo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 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