Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Abfrage, ob ein Control "on top" ist?

  Alt 15. Dez 2008, 17:40
Zitat von himitsu:
Focus zeigt nur an, daß ein Control den Eingabefokus (Tastatur) hat ... aber dafür muß es nicht sichtbar (ich mein nicht Visible) sein ... es kann sich auch ruhig hinter einem anderem Control verstecken.
Upps und sorry für die unqualifizierte Antwort.

An der Stelle bin ich mir jetzt nicht ganz sicher, aber imho kannst du erst einmal auf Visible prüfen. Ich glaube, dass die Controls der nicht sichtbaren Seiten automatisch auf Visible False gesetzt werden.

Sonst kannst du prüfen, ob der Parent, der ja ein TabSheet ist gerade das aktive TabSheet ist. Wenn nicht ist alles klar. Wenn ja, dann wirds schon schwieriger. Ich denke, du kannst erstmal an hand der Position (Index) des Controls prüfen, an welcher Stelle der Conrols-Liste des Parent dein Control steht. Ich glaube, dass mit dem höchsten Index wird als letztes gezeichnet und liegt somit oben. Hast du den Index, dann mußt du prüfen, ob alle Controls mit einem höheren Index in der Liste dein Control überdecken. Das kannst du ganz einfach mit Funktion IntersectRect tun. Liegt eine Überschneidung der Rects der Conrols vor, so liefert die Funktion True zurück. Also prüfst du sozusagen, ob alle "höherwertigen" Controls in der Liste eine Überschneidung mit deinem Control-Rect haben. Ist dies der Fall, so ist dein Control ganz oder Teilweise verdeckt. Willst du den Fall der teilweisen Überdeckung mit auswerten, so musst du den Rückgabewert des resultierenden Rect aus der Funktion IntersectRect entsprechend verarbeiten und bewerten.

Ob das die sinnvollste Methode ist dein Problem zu lösen kann ich nicht sagen, aber besser wie meine erste Antwort ist es auf jeden Fall.

Gruß oki
42
  Mit Zitat antworten Zitat