AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Rand eines Windows nicht anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Rand eines Windows nicht anzeigen

Ein Thema von 3_of_8 · begonnen am 27. Jan 2006 · letzter Beitrag vom 4. Feb 2007
Antwort Antwort
informix05
(Gast)

n/a Beiträge
 
#1

Re: Rand eines Windows nicht anzeigen

  Alt 31. Jan 2007, 12:59
Zitat von 3_of_8:
Ich habe ein Fenster erstellt.

Davon will ich jetzt den Rand verstecken, so wie bei TForm.borderstyle:=bsNone;

Aber ich finde die passenden Messages nicht. Wie mache ich das?
Hallo,

du möchtest wahrscheinlich ein rand- und titelleistenloses Fenster haben, dass aber trotzdem verschieb- und skalierbar bleibt.

- Im uses-Teil muss die Unit "Messages" enthalten sein.

- Die Eigenschaft "BorderStyle" deines Fenster muss auf "bsNone" gesetzt werden (auch zur Laufzeit möglich).

- Im Deklarationsteil deiner TForm-Klasse im private-Abschnitt ist folgende Prozedur einzufügen, die Windows-Mausbotschaften ans Fenster abfängt:

procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;

- Im Implementations-Teil fügst du folgenden Quelltext ein:

Delphi-Quellcode:
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
const
   BORDER_WIDTH = 5;
begin
   inherited;
   if M.Result = htClient then begin // Mauszeiger im Client-Bereich des Fensters
      // Windows vorgaukeln, Mauszeiger wäre auf Titelleiste des Fensters
      // ==> Fenster ohne Titelleiste kann durch Klick & Drag im Client-Bereich verschoben werden
      M.Result := htCaption;
      // falls Mauszeiger am nicht vorhandenen Fensterrand
      // ==> Windows vorgaukeln, Rand wäre vorhanden
      // ==> Fenster (BorderStyle = bsNone) kann trotzdem skaliert werden
      if (M.XPos > Left) and (M.XPos < Left + BORDER_WIDTH) then begin
         // Mauszeiger am linken Rand
         M.Result := htLeft;
         if (M.YPos > Top) and (M.YPos < Top + BORDER_WIDTH) then begin
            // Mauszeiger an Ecke oben links
            M.Result := htTopLeft;
         end else begin
            if (M.YPos < Top + Height) and (M.YPos > Top + Height - BORDER_WIDTH) then begin
               // Mauszeiger an Ecke unten links
               M.Result := htBottomLeft;
            end
         end;
      end else begin
         if (M.XPos < Left + Width) and (M.XPos > Left + Width - BORDER_WIDTH) then begin
            // Mauszeiger am rechten Rand
            M.Result := htRight;
            if (M.YPos > Top) and (M.YPos < Top + BORDER_WIDTH) then begin
               // Mauszeiger an Ecke oben rechts
               M.Result := htTopRight;
            end else begin
               if (M.YPos < Top + Height) and (M.YPos > Top + Height - BORDER_WIDTH) then begin
                  // Mauszeiger an Ecke unten rechts
                  M.Result := htBottomRight;
               end
            end;
         end else begin
            // Mauszeiger innerhalb linker u. rechter Rand
            if (M.YPos > Top) and (M.YPos < Top + BORDER_WIDTH) then begin
               // Mauszeiger am oberen Rand
               M.Result := htTop;
            end else begin
               if (M.YPos < Top + Height) and (M.YPos > Top + Height - BORDER_WIDTH) then begin
                  // Mauszeiger am unteren Rand
                  M.Result := htBottom;
               end
            end;
         end;
      end;
   end;
end;
  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 11:38 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