Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Andocken an Rändern (https://www.delphipraxis.net/720-andocken-raendern.html)

delphi-anfänger 17. Dez 2004 19:23

Re: Andocken an Rändern
 
sch.. aaaaadeee :cry:
trotzdem danke

meisterwms 15. Mai 2005 23:19

Zitat:

Zitat von DieHardMan
für den bildschirmrand

Code:
  private
    { Private declarations }
    procedure WMWindowPosChanging(var Message: TWMWINDOWPOSCHANGING);
    message WM_WINDOWPOSCHANGING;

procedure TForm1.WMWindowPosChanging(var Message: TWMWINDOWPOSCHANGING);
const
  distance = 10;
begin
  { Obere und untere Festerkante }
  if (Message.WindowPos.y <= distance) AND
    (Message.WindowPos.y >= -distance) then
      Message.WindowPos.y := 0
  else
    if (Message.WindowPos.y + Height > (Screen.WorkAreaHeight - distance)) AND
      (Message.WindowPos.y + Height < (Screen.WorkAreaHeight + distance)) then
        Message.WindowPos.y := Screen.WorkAreaHeight - Height;

  { Linke und rechte Fensterkante }
  if (Message.WindowPos.x <= distance) AND
    (Message.WindowPos.x >= -distance) then
      Message.WindowPos.x := 0
  else
    if (Message.WindowPos.x + Width > (Screen.WorkAreaWidth - distance)) AND
      (Message.WindowPos.x + Width < (Screen.WorkAreaWidth + distance)) then
        Message.WindowPos.x := Screen.WorkAreaWidth - Width;
end;

Kann mir einer sagen, wie ich diese procedure so aufrufe, daß das Programm z.b. unten am Bildschirmrand andockt?

marabu 18. Mai 2005 06:54

Re: Andocken an Rändern
 
Zitat:

Zitat von meisterwms
Kann mir einer sagen, wie ich diese procedure so aufrufe, daß das Programm z.b. unten am Bildschirmrand andockt?

Nicht du rufst sie auf, sondern sie wird automatisch ausgeführt, wenn du zur Laufzeit deine Form in die Nähe der Bildschirmränder bewegst. Dazu musst du die entsprechende Form in deinem Programm so erweitern, wie der Code-Autor angedeutet hat. Im private-Bereich deiner Form-Deklaration trägst du den oben angegebenen Message-Handler ein und im implementation-Abschnitt deiner Form-Unit die abgebildete Prozedur.

Grüße vom marabu

alzaimar 18. Mai 2005 08:40

Re: Andocken an Rändern
 
Die Screen.WorkAreaWidth / Height scheint es in Delphi 3 noch nicht zu geben. Du kannst Dir mit Screen.Width / Height behelfen, allerdings werden da die AppBars (Taskbar, Office Mumpf etc.) nicht eingerechnet. Entweder Du ignorierst das, oder musst Dir selber die Liste der AppBars von Windows geben und die WorkArea berechnen.

Fingolfin 18. Mai 2005 08:47

Re: Andocken an Rändern
 
Im Anschluß an alzaimars Beitrag:

Den verfügbaren Platz auf dem Bildschirm abzüglich der AppBars kannst du mit

Delphi-Quellcode:
SystemParametersInfo(SPI_GETWORKAREA, 0, @IrgendeinRect, 0);
ermitteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.
Seite 2 von 2     12   

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