AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Appbar am rechten Bildschirmrand?
Thema durchsuchen
Ansicht
Themen-Optionen

Appbar am rechten Bildschirmrand?

Offene Frage von "RobbiTobbi"
Ein Thema von RobbiTobbi · begonnen am 17. Jun 2010 · letzter Beitrag vom 19. Jun 2010
Antwort Antwort
RobbiTobbi

Registriert seit: 23. Mai 2010
10 Beiträge
 
Delphi 7 Personal
 
#1

Appbar am rechten Bildschirmrand?

  Alt 17. Jun 2010, 21:19
Ich habe hier eine Methode gefunden, wie man eine Appbar erstellt. Ich möchte die Appbar aber am rechten und nicht am oberen Bildschirmrand anordnen. Ich habe es mit folgendem Code versucht:
Delphi-Quellcode:
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;
Allerdings erstreckt sich die Appbar dann über den gesamten Bildschirm (ausser über den reservierten Bereich). Wie kann ich dieses Problem beheben?

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.
Robert
---UNDER CONSTRUCTION---

Geändert von RobbiTobbi (17. Jun 2010 um 21:22 Uhr)
  Mit Zitat antworten Zitat
RobbiTobbi

Registriert seit: 23. Mai 2010
10 Beiträge
 
Delphi 7 Personal
 
#2

AW: Appber am rechten Bildschirmrand?

  Alt 18. Jun 2010, 14:25
*PUSH* (bitte antworten, bin echt verzweifelt)
Robert
---UNDER CONSTRUCTION---
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Appber am rechten Bildschirmrand?

  Alt 18. Jun 2010, 15:31
Probiere es doch mal mit ein paar festen Werten... mal gucken was dann passiert...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
RobbiTobbi

Registriert seit: 23. Mai 2010
10 Beiträge
 
Delphi 7 Personal
 
#4

AW: Appber am rechten Bildschirmrand?

  Alt 18. Jun 2010, 15:35
meinst du bei rc.left und so?

Edit: Habs da mit festen Werten versucht, funktioniert aber immer noch nicht
Robert
---UNDER CONSTRUCTION---
  Mit Zitat antworten Zitat
Alt 18. Jun 2010, 16:43     Erstellt von RobbiTobbi
Dieser Beitrag wurde von Matze gelöscht. - Grund: Push nach einer guten Stunde
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Appber am rechten Bildschirmrand?

  Alt 18. Jun 2010, 17:39
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
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Appbar am rechten Bildschirmrand?

  Alt 18. Jun 2010, 19:15
Welche Werte haben denn Left, Right, Top und Bottom?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#7

AW: Appbar am rechten Bildschirmrand?

  Alt 19. Jun 2010, 00:46
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;
LAN-PC: C2Q Q9550 @ 4004 MHz @ 1.232 V @ Mugen 2 | DFI LANParty JR P45-T2RS | G.Skill 4GB DDR2-1000 CL5 | ZOTAC GTX 280 @ GTX 285 @ 1.06 V | WD Caviar Blue 320GB / WD Caviar Black 640GB | BeQuiet DPP P7 450W | Antec Mini P180
  Mit Zitat antworten Zitat
RobbiTobbi

Registriert seit: 23. Mai 2010
10 Beiträge
 
Delphi 7 Personal
 
#8

AW: Appbar am rechten Bildschirmrand?

  Alt 19. Jun 2010, 12:31
Danke für die vielen Antworten habs jetzt hingekriegt. Das Formular hatte align := alRight
Robert
---UNDER CONSTRUCTION---
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz