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é
(*** 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 IFTYPE('toObj')#'O'ORINLIST(UPPER(toObj.BaseClass),'FORM','FORMSET') RETURNNULL ENDIF IFEMPTY(tnPosition) ORTYPE('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 DOCASE 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 DOCASE 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 RETURNIIF(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
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