Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form immer in der rechten unteren Bildschirmecke anzeigen??? (https://www.delphipraxis.net/48296-form-immer-der-rechten-unteren-bildschirmecke-anzeigen.html)

romber 23. Jun 2005 11:07


Form immer in der rechten unteren Bildschirmecke anzeigen???
 
Hallo!

Ich habe eine kleine Form, die ich unabhängig von der Auflösung immer in der rechten unteren Bildschirmecke über der Task-Leiste anzeigen möchte. Wie mache ich das?

uschi 23. Jun 2005 11:18

Re: Form immer in der rechten unteren Bildschirmecke anzeige
 
Hallo!

Das kann ich dir sagen wie das geht!
Soll ich? OK!

Delphi-Quellcode:
procedure TfrmMain.SetWindow;
var hWnd: THandle;
    Rect: TRect;
    TaskbarHeight: Integer;
begin
  FileList:=TStringList.Create;
  hWnd := FindWindow('Shell_TrayWnd', nil);
  GetWindowRect(hWnd, Rect);
  TaskbarHeight := Rect.Bottom - Rect.Top;
  MoveWindow(handle,screen.Width - self.Width,(screen.Height-self.Height)-TaskbarHeight,self.Width,self.Height,true);

  SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
  FormStyle:=fsStayOnTop;
  SetWindowPos(Handle, HWND_TOPMOST, Self.Left, Self.Top, Self.Width, Self.Height, SWP_NOSIZE);
  if GetForeGroundWindow <> Handle then
    BringToFront;
end;

phlux 23. Jun 2005 11:57

Re: Form immer in der rechten unteren Bildschirmecke anzeige
 
Alternativ könnte man es auch so machen ;)

Delphi-Quellcode:
var
  aRect: TRect;

begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @aRect, 0);
  Form1.Top := aRect.Bottom - Form1.Height;
  Form1.Left := aRect.Right - Form1.Width;
end;

teebee 23. Jun 2005 12:11

Re: Form immer in der rechten unteren Bildschirmecke anzeige
 
Man sollte vielleicht noch auf Veränderungen reagieren:
Delphi-Quellcode:
   
  // Form-Deklaration
 Procedure Adjust;
 Procedure WMSETTINGCHANGE(Var Msg: TMessage); message WM_SETTINGCHANGE;
 Procedure WMDISPLAYCHANGE(Var Msg: TMessage); message WM_DISPLAYCHANGE;
...
Procedure TForm1.WMSETTINGCHANGE(Var Msg: TMessage);
Begin
  If Msg.WParam = SPI_SETWORKAREA Then Adjust;
End;

Procedure TForm1.WMDISPLAYCHANGE(Var Msg: TMessage);
Begin
  Adjust;
End;

Procedure TForm1.Adjust;
Var WorkArea: TRect;
Begin
  SystemParametersinfo(SPI_GETWORKAREA,0,@WorkArea,0);
  Left := WorkArea.Right-Width;
  Top := WorkArea.Bottom-Height;
End;
Gruß, teebee

romber 23. Jun 2005 13:21

Re: Form immer in der rechten unteren Bildschirmecke anzeige
 
Vielen Dank an alle! ;-)


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