Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Herausfinden, ob Fenster sichtbar ist

  Alt 22. Nov 2016, 17:37
Wie ist es so (ungetestet)?
Delphi-Quellcode:
function GetVisibleStatus(const PForm: TForm): TVisibleStatus;
var
 Clip: Integer;
 hDC: THandle;
 ClipRect, ClientRect: TRect;
begin
  Assert(Assigned(PForm), 'Keine TCustomForm-Instanz übergeben');
  hDC := GetDC(PForm.Handle);
  if hDC <> 0 then
    try
      Clip := GetClipBox(hDC, ClipRect);
      
      case Clip of
        NULLREGION:
          Result := vsHidden; // Fenster ist komplett versteckt
        SIMPLEREGION:
          begin
            ClientRect := PForm.ClientRect; // Property statt protected Getter
            
            if EqualRect(ClipRect, ClientRect) then // vollständig sichtbar
              Result := vsVisible // ClientRect ist sichtbar
            else // teils sichtbar
              Result := vsPartVisible; // ClientRect ist sichtbar
          end;
        COMPLEXREGION: // Region besteht aus mehr als einem Rechteck, Fenster ist teils sichtbar
          Result := vsPartVisible;
      end;
    finally
      ReleaseDC(PForm.Handle, hDC);
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat