Seite 1 von 1

XBP_ORIGIN_TOPLEFT gesetzt ?

Verfasst: Mi, 03. Sep 2014 8:04
von AUGE_OHR
hi,

wie kann ich abfragen ob XBP_ORIGIN_TOPLEFT gesetzt wurde ?

Re: XBP_ORIGIN_TOPLEFT gesetzt ?

Verfasst: Mi, 03. Sep 2014 9:32
von brandelh
mit der Methode :setPresParam() kann man die Presentation-Parameter abfragen oder bestimmen !

Re: XBP_ORIGIN_TOPLEFT gesetzt ?

Verfasst: Mi, 03. Sep 2014 10:18
von Tom
oDialog:origin?

Re: XBP_ORIGIN_TOPLEFT gesetzt ?

Verfasst: Mi, 03. Sep 2014 10:31
von brandelh
@ TOM
nein,
ie Instanzvariable : origin definiert den Bezugspunkt für den Parameter <aPos> , der bei der Methode :new() angegeben werden kann. Das ist der Ursprung des Koordinatensystems, auf das sich <aPos> bezieht. Für : origin können nur #define-Konstanten aus XBP.CH eingesetzt werden, die in der folgenden Tabelle aufgeführt sind:
Konstanten für den Bezugspunkt eines Dialogfensters
Konstante Beschreibung
XBPDLG_ORIGIN_OWNER *) Bezugspunkt ist {0,0} vom Owner Fenster
XBPDLG_ORIGIN_SCREEN Bezugspunkt ist {0,0} vom Desktop Fenster
XBPDLG_ORIGIN_MOUSE Bezugspunkt ist die aktuelle Mausposition
*) Standardwert
während die von Jimmy angesprochene Definition festlegt ob {0,0} oben links oder unten links im Fenster ist.

Re: XBP_ORIGIN_TOPLEFT gesetzt ?

Verfasst: Fr, 03. Nov 2017 6:39
von AUGE_OHR
kam gerade wieder auf das Thema.
habe diese Lösung im Einsatz :

Code: Alles auswählen

FUNCTION IsOriginTopLeft( oXbp )
LOCAL lRet     := .F.
LOCAL oDesktop := APPDESKTOP()
LOCAL aPP
LOCAL nPos

   DO WHILE oXbp <> oDesktop
      aPP := oXbp:setPresParam()
      nPos := ASCAN( aPP, { | a | a[ 1 ] == XBP_PP_ORIGIN } )

      IF aPP[ nPos ] [ 2 ] <> NIL
         IF aPP[ nPos ] [ 2 ] == XBP_ORIGIN_TOPLEFT
            lRet := .T.
         ENDIF
         EXIT
      ENDIF

      oXbp := oXbp:setParent()
   ENDDO

RETURN lRet
Frage : gibt es eine einfachere Lösung "wie" man feststellen kann das XBP_ORIGIN_TOPLEFT gewünscht wird ?