Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.620 Beiträge
Delphi 12 Athens
|
AW: Herausfinden, ob Fenster sichtbar ist
22. Nov 2016, 18: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
|