4D v16.3

OBJECT GET COORDINATES

Home

 
4D v16.3
OBJECT GET COORDINATES

OBJECT GET COORDINATES  


 

OBJECT GET COORDINATES ( {* ;} Objekt ; Links ; Oben ; Rechts ; Unten ) 
Parameter Typ   Beschreibung
Operator in Mit *: Objekt ist Name des Objekts (String),
Ohne *: Objekt ist eine Variable
Objekt  Formularobjekt in Objektname (mit *) oder Variable bzw. Feld (ohne *)
Links  Lange Ganzzahl in Linke Koordinate des Objekts
Oben  Lange Ganzzahl in Obere Koordinate des Objekts
Rechts  Lange Ganzzahl in Rechte Koordinate des Objekts
Unten  Lange Ganzzahl in Untere Koordinate des Objekts

Der Befehl OBJECT GET COORDINATES gibt die Koordinaten Links, Oben, Rechts und Unten (in Punkten) in Variablen oder Feldern der Objekt(e) des aktuellen Formulars an, das mit den Parametern * und Objekt definiert ist.

Übergeben Sie den optionalen Parameter *, ist der Parameter Objekt ein Objektname (ein String). Übergeben Sie den optionalen Parameter * nicht, ist Objekt ein Feld oder eine Variable. In diesem Fall übergeben Sie keinen String, sondern ein Datenfeld oder eine Referenz auf eine Variable (nur Datenfeld oder Variable von Typ Objekt).

Übergeben Sie in Objekt einen Objektnamen mit Jokerzeichen (“@”), um mehrere Objekte auszuwählen, bezeichnen die zurückgegebenen Koordinaten das Rechteck, das aus allen betroffenen Objekten gebildet wird.

Hinweis: Sie können die Art der Interpretation für das Jokerzeichen (“@”) festlegen, wenn es in einem String verwendet wird. Diese Option beeinflusst die Befehle zum Thema “Objekte”. Weitere Informationen finden Sie im Abschnitt Jokerzeichen (@) des Handbuchs 4D Designmodus.

Gibt es ein Objekt nicht oder wird der Befehl nicht in einem Formular aufgerufen, erhalten Sie die Koordinaten (0;0;0;0).

Dieser Befehl kann im Rahmen von Listboxen die Koordinaten bestimmter Teile der Listbox zurückgeben, wie Spalten, Kopfteile oder Fußteile und nicht die Koordinaten der Listbox selbst. In 4D Versionen vor v14 R5 gab dieser Befehl immer die Koordinaten des Objekts Listbox zurück, egal auf welchen Teil er angewendet wurde. Ab jetzt werden die Koordinaten des jeweiligen Unterobjekts zurückgegeben, wenn die angegebene Referenz in Objekt ein Unterobjekt Kopfteil, Spalte oder Fußteil der Listbox ist. Auf diese Weise können Sie z.B. beim Klicken in eine Kopfteilzelle der Listbox ein Icon anzeigen, das der Benutzer anklicken kann, um ein Kontextmenü zu öffnen.

Zur Wahrung der Konsistenz bleibt der Referenzrahmen gleich, egal, ob das Objekt ein Unterobjekt der Listbox oder die Listbox selbst ist: Ausgangspunkt ist die obere linke Ecke des Formulars, welches das Objekt enthält. Für Unterobjekte der Listbox sind die zurückgegebenen Koordinaten theoretisch, d.h. sie berücksichtigen den Scrollen-Status der Listbox vor dem Zuschneiden. So kann es vorkommen, das das Unterobjekt nicht oder nur teilweise sichtbar ist, wenn die angegebenen Koordinaten außerhalb der Formulargrenzen oder negativ sind. Um herauszufinden, ob das Unterobjekt bzw. welcher Teil davon sichtbar ist, müssen Sie die zurückgegebenen Koordinaten mit den Koordinaten der Listbox vergleichen. Dabei gelten folgende Regeln:

  • Alle Unterobjekte werden auf die Koordinaten der zugehörigen Listbox zugeschnitten, d.h. wie sie vom Befehl OBJECT GET COORDINATES für die Listbox zurückgegeben werden.
  • Die Unterobjekte Kopfteil und Fußteil erscheinen vor dem Inhalt der Spalte: Überschneiden sich die Koordinaten einer Spalte mit den Koordinaten der Zeilen für Kopf- bzw. Fußteil, wird die Spalte an dieser Schnittstelle nicht angezeigt.
  • Elemente gesperrter Spalten erscheinen vor den Elementen scrollbarer Spalten: Überschneiden sich die Koordinaten eines Elements in einer scrollbaren Spalte mit den Koordinaten eines Elements in einer gesperrten Spalte, erscheint es nicht an dieser Schnittstelle.

Nehmen wir als Beispiel folgende Darstellung eines Formulars:

Die Koordinaten von Capital werden als rotes Rechteck dargestellt. Wie Sie im ersten Bild sehen können, ist die Spalte länger als die Listbox, d.h. ihre Koordinaten liegen außerhalb der unteren Grenze der Listbox, inkl. Fußteil. Im zweiten Bild wurde die Listbox gescrollt, so dass die Spalte jetzt auch die Spalte Language und den Kopfteil überlagert. Um den tatsächlich sichtbaren Bereich (grüner Teil) zu berechnen, müssen Sie die roten Bereiche davon subtrahieren.

Sie möchten die Koordinaten des Rechtecks erhalten, das aus allen Objekten gebildet wird, die mit "Schaltfläche" beginnen:

 OBJECT GET COORDINATES(*;"Schaltfläche@";Links;Oben;Rechts;Unten)

Für eine Oberflächenanzeige soll der angeklickte Bereich mit einem roten Rechteck eingerahmt werden:

Die Objektmethode der Listbox lautet wie folgt:

 OBJECT SET VISIBLE(*;"rectangleInfo";False//Roten Rahmen für Rechteck setzen
 $ptr:=OBJECT Get pointer(Object current)
 OBJECT GET COORDINATES($ptr->;$x1;$y1;$x2;$y2)
 OBJECT SET VISIBLE(*;"RedRect";True)
 OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)
 
 OBJECT GET COORDINATES(*;"LB1";$lbx1;$lby1;$lbx2;$lby2)
 If($lby1>$y1)|($lby2<$y2// liegt der angeklickte Bereich außerhalb der Listbox
    OBJECT SET VISIBLE(*;"Alert";True//eine Meldung zeigen
 Else
    OBJECT SET VISIBLE(*;"Alert";False)
 End if

Diese Methode gibt theoretische Koordinaten zurück. Wird die Größe der Listbox verändert, müssen Sie u.U. den Ausschnitt berechnen, um den sichtbaren Teil herauszufinden:



Siehe auch 

CONVERT COORDINATES
LISTBOX GET CELL COORDINATES
OBJECT MOVE
OBJECT SET COORDINATES

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Objekte (Formulare)
Nummer: 663

 
GESCHICHTE 

Geändert: 4D v6.7
Umbenannt: 4D v12
Geändert: 4D v14 R5

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)