ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Retourne la position en ligne et colonne d'un objet en fonction de l'écran.   



L'auteur

Walter Valle
Honduras Honduras
Membre Simple
# 0000000168
enregistré le 16/12/2004

Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation

Retourne la position en ligne et colonne d'un objet en fonction de l'écran.
# 0000000168
ajouté le 30/03/2005 16:57:54 et modifié le 01/04/2005
consulté 6869 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0

Description

(*** ATOUTFOX ***) OBJTOSCREEN.PRG Retourne la position en ligne et colonne d'un objet en
fonction de l'écran.

(texte d'origine) OBJTOSCREEN.PRG Devuelve la posición de FILA ó COLUMNA de un objeto respecto a la pantalla

Code source :
* ObjToScreen.PRG
* Devuelve la posición de fila ó columna de un objeto con respecto a la pantalla.
*** atoutfox*** (Retourne la position en ligne ou colonne d'un objet en fonction de l'écran.)
*"espero les sirva..." : J'espère que ce sera utile....
* Autor:  Walter Valle - DevelComp
* e-mail: wvalle@develcomp.com
* Uso:  ?ObjToScreen(obj,1) -> Fila   *** atoutfox*** LIGNE
*       ?ObjToScreen(obj,2) -> Columna  *** atoutfox*** COLONNE
*       ?ObjToScreen(ThisForm.Text1,1) -> Fila *** atoutfox*** LIGNE
*       ?ObjToScreen(ThisForm.Text1,2) -> Columna atoutfox*** COLONNE

LPARAMETERS toObj,tnPosition
IF TYPE('toObj')#'O' OR INLIST(UPPER(toObj.BaseClass),'FORM','FORMSET')
  RETURN NULL
ENDIF
IF EMPTY(tnPosition) OR TYPE('tnPosition')#'N'
  tnPosition=1
ENDIF
IF !INLIST(tnPosition,1,2)
  tnPosition=1
ENDIF
LOCAL loForm,lnTop,lnLeft,lnBorder
loForm=_Screen.ActiveForm
lnTop=OBJTOCLIENT(toObj,1)
lnLeft=OBJTOCLIENT(toObj,2)
lnTop=lnTop+loForm.Top
lnLeft=lnLeft+loForm.Left
IF loForm.TitleBar=1 OR (loForm.TitleBar=0 AND loForm.HalfHeightCaption)
  IF !loForm.HalfHeightCaption
    lnBorder=IIF(loForm.BorderStyle=3,0,1)
    lnTop=(lnTop+SYSMETRIC(9)+SYSMETRIC(4))-lnBorder
    lnLeft=(lnLeft+SYSMETRIC(3))-lnBorder
  ELSE
    DO CASE
      CASE loForm.BorderStyle=0
        lnBorder=4
      CASE loForm.BorderStyle=1
        lnBorder=3
      CASE loForm.BorderStyle=2
        lnBorder=1
      CASE loForm.BorderStyle=3
        lnBorder=0
    ENDCASE
    lnTop=(lnTop+SYSMETRIC(34)+SYSMETRIC(4))-lnBorder
    lnLeft=(lnLeft+SYSMETRIC(3))-lnBorder
  ENDIF
ELSE
  DO CASE
    CASE loForm.BorderStyle=0
      lnBorder=4
    CASE loForm.BorderStyle=1
      lnBorder=3
    CASE loForm.BorderStyle=2
      lnBorder=1
    CASE loForm.BorderStyle=3
      lnBorder=0
  ENDCASE
  lnTop=(lnTop+SYSMETRIC(4))-lnBorder
  lnLeft=(lnLeft+SYSMETRIC(3))-lnBorder
ENDIF
RETURN IIF(tnPosition=1,lnTop,lnLeft)

Commentaires
le 01/04/2005, Francis Faure a écrit :
Walter,
suite a nos échanges en e-mail
je me suis permis (à l'aide de thierry) de traduire et modifier ta contribution
j'espére que cela ne dénature pas ton post,
mais le site www.atoutfox.org reste le site de pro VFP francophone.
Cordialement
Francis


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3