AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

prüfen ob Formular verdeckt ist

Ein Thema von Sko · begonnen am 23. Aug 2006 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#1

prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 19:38
Hallo, wie kann ich prüfen ob ein Fenster von einem anderen Verdeckt wird?
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 19:46
Die Frage ist wie genau du das testen willst. Ich prüfe in den meisten fällen nur ob die linke-obere und die rechte-untere ecke sichtbar ist. Und das prüfe ich mit WindowFromPoint.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#3

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 20:01
if not Form1.Active then...

z.B. wenn die Maus das Formular verlässt, also sich nicht mehr in 0,0 bis ClientWidth,ClientHeight befindet, dann die if Abfrage.
Servus...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 20:04
Zitat:
if not Form1.Active then...
Dann siehst du ob die Form Aktiv ist, aber nicht ob sie verdeckt ist. Mit tools wie z.B. den Powertoys kann man einstellen das Fenster aktiv werden ohne in den Vordergrund geholt zu werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 22:09
Ich hab mal WindowFromPoint probiert, aber funktioniert es nicht, es wird immer false zurückgegeben. Ich hab dafür eine Funktion gebastelt:
Delphi-Quellcode:
function TMainForm.IsOnTop: boolean;
var
  p1: TPoint;
begin
  result := false;
  p1.X := MainForm.Left + round((MainForm.Width/2));
  p1.Y := MainForm.Top + round((MainForm.Height/2));
  if WindowFromPoint(p1) = MainForm.Handle then result := true;
end;
Ich hab es auch mit der linken oberen und rechten unteren Ecke probiert, das ging aber auch nicht. Was ist daran falsch?
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 22:12
warum addierst du zu left und top noch die hälfte der breite bzw. Höhe? liegt an der Stelle eventuell noch ein Panel auf dem Form oder etwas anderes?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 22:30
Ich wollte die Mitte des Formulars probieren nachdem es mit den Ecken nicht geklappt hat, vorher hatte ich die Ecken genommen:
Delphi-Quellcode:
function TMainForm.IsOnTop: boolean;
var
  p1, p2 : TPoint;
begin
  result := false;
  p1.X := MainForm.Left;
  p1.Y := MainForm.Top;
  p2.X := MainForm.Left + MainForm.Width;
  p2.Y := MainForm.Top + MainForm.Height;
  if (WindowFromPoint(p1) = MainForm.Handle) and (WindowFromPoint(p2) = MainForm.Handle) then result := true;
end;
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 22:32
lass mal die rechte untere ecke weg obs dann geht. Du berechnest die untere rechte ecke falsch. Du musst mindestens noch 1 pixel abziehen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 22:37
Geht immernoch nicht, das mit dem Pixel abziehen habe ich auch schon probiert.
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: prüfen ob Formular verdeckt ist

  Alt 23. Aug 2006, 22:42
Du hast bestimmt den XP-Style im Windows aktiv. Wenn das Form keine Ecken hat sondern abgerundet ist, ist logischer weise an der oberen linken ecke bie 0, 0 nix sondern der untergrund kommt durch.
Mit
if WindowFromPoint(Point(Left + 10, Top + 10)) = Self.Handle then klappts bei dem eingeschalteten Style. Wenn ein anderer Style mehr als 10 Pixel verschenkt gehts natürlich nicht. Du müsstest also möglichst im Clientbereich testen.

so gehts also:
if WindowFromPoint(Self.ClientOrigin) = Self.Handle then
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:12 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