Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Desktop verschieben!? (https://www.delphipraxis.net/133006-desktop-verschieben.html)

Flodding 23. Apr 2009 18:34


Desktop verschieben!?
 
Guten abend zusammen...

ich versuch grade ne ganz simple sidebar hinzubekommen, die am Oberen bildschirmrand entstehen soll, ca. 50 pixel hoch sein soll und einfach n paar buttons haben soll um programme zu starten... soweit geht auch alles das ja auch nicht die große sache... jedoch verzweifle ich daran, dass die icons hinter der "topbar" immer verschwinden...

ich weiss nicht wers kennt, aber bei der MyGeldBar ist es so, dass die auch am oberen Bildschirmrand (oder halt am unteren wenn man möchte) erscheint, und dann die desktopicons dementsprechend neu sortiert sodass sie sie nicht verdeckt...

wie bekomm ich das auch hin?

Die Muhkuh 23. Apr 2009 18:36

Re: Desktop verschieben!?
 
Was Du suchst ist eine AppBar.

Flodding 23. Apr 2009 18:37

Re: Desktop verschieben!?
 
dat ding existiert doch schon... ich muss nur wissen wie ich es hinbekomme dass ich beim start des programms den desktop verkleinere sodass die icons neu angeordnet werden damit die nicht hinter der bar verschwinden...

Die Muhkuh 23. Apr 2009 18:40

Re: Desktop verschieben!?
 
Du solltest trotzdem nach dem Stichwort AppBar suchen...

Flodding 23. Apr 2009 20:03

Re: Desktop verschieben!?
 
okay hab soweit alles gefunden um eine appbar zu erstellen, funktioniert auch... nur dann wenn meine geldbar aus ist :( habe ich die geldbar gestartet und starte dann meine appbar dazu um sie darunter zu platzieren, passiert das auch, jedoch verschwinden wieder die icons dahinter... also im prinzip kein effekt...

hier mal n stück code :

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  iResult: integer;
begin
regist := TRegistry.Create;
  try
    regist.RootKey:=HKEY_LOCAL_MACHINE;
    regist.Access:= KEY_READ;
    regist.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyGeldBar', true);
    geldbarapppath:= regist.Readstring('DisplayIcon');
  finally
    regist.free;
  end;
if geldbarapppath <> '' then
begin
ShellExecute(0,'open', PAnsiChar(geldbarapppath),Nil, PAnsiChar(geldbarapppath), SW_SHOW);
form1.Height:=close.Height;
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
close.Left:=screen.Width - 77;
end;
Sleep(10000);
  SHAppBarMessage(ABM_REMOVE, fAppBarData);
  // 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;
was genau passiert wenn ich mein programm starte:

zuerst startet es nur die geldbar, damit die über meiner appbar ist... danach wartet es 10 sekunden... könnte auch n bissel weniger sein, aber der login bei der geldbar dauert n paar sekunden deshalb hab ichs erstmal so geregelt... danach sollte ja eigentlich meine appbar den platz unter der geldbar einnehmen und sich da platzieren... macht sie auch... nur über die icons vom desktop...
schließe ich nun die geldbar, so bleibt am oberen rand der unsichtbare bereich für meine appbar, aber meine appbar ist immernoch da wo sie war als die gelbar noch an war... schließe ich meine appbar, so verschwindet auch der reservierte ereich für meine appbar obnen wieder und alles ist wie vorher...

irgendwie komisch zu verstehen, aber ich konnts nicht besser erklären ... sorry :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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