Je cherche à connaitre par programmation la position X et Y
d'une zone de saisie.
Attention, je ne parle pas d'un champs de saisie, ça je sais, mais
de la zone de saisie d'un champs !
Quelqu'un sait comment faire ?
--
Pascal ROY
(Service Informatique - SODALEC)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal F
Pascal ROY avait prétendu :
Bonjour,
Je cherche à connaitre par programmation la position X et Y d'une zone de saisie. Attention, je ne parle pas d'un champs de saisie, ça je sais, mais de la zone de saisie d'un champs !
Quelqu'un sait comment faire ?
J'ai développé dans un composant gérant une simili combo, une fonction pour positionner l'ouverture de ma fenetre, sur le bord gauche de la zone de saisie d'un champ et sous la zone de saisie donc je te fournis le code qui gère ça:
// // Syntaxe : //EntreeChamp (<NomCol>, <cNomChamp> [, <peCol> [, <peLign>]]) // // Paramètres : // NomCol : Nom de la colonne de la combo sur laquelle on va faire les recherches // cNomChamp : Nom du champ appelant la méthode d'entrée du champ (MoiMême..nom= champ courant) // peCol (valeur par défaut=0) : Offset supplémentaire de colonne pour l'affichage de la combo (en pixel) // peLign (valeur par défaut=0) : Offset supplementaire de ligne pour l'affichage de la combo (en pixel) // Valeur de retour : // Aucune // Notes : // Cette méthode est appellée à chaque fois que l'on entre dans un champ utilisant la ComboFLO // L'évènement de déplacement par les flèches est créé, puis les champs défini par les variables de l'instances sont sauvés (SauveChamps) // Si la fenetre existe, les colonnes sont triés sur la colonne, puis la fenetre est préparée et affichée // La position de la zone de saisie est automatiquement calculée. // // Exemple : // Comboc:EntreeChamp("_Col2",moimeme..nom) //
:m_cNomCol=NomCol :ColCle=NomCol[[5 A ]] :Taille_champ=0 cChamp est une chaîne=cNomChamp cParent est une chaîne=ParentObjet(cChamp) SI Position(cChamp,".") ALORS cChamp=ExtraitChaîne(cChamp,2,".") FIN
:ChampCourant=:Mere+"."+cNomChamp // Récupère la largeur de la zone de saisie du champ de saisie stSaisieRECT est un prep_combo.RECT SendMessage(Handle(:ChampCourant), 0x00B2, 0, &stSaisieRECT) // 0x00B2 = EM_GETRECT : récupère les dimensions de la zone de saisie d'un champ de saisie eLargeur = stSaisieRECT:nPosDroite - stSaisieRECT:nPosGauche
// Calcule la position de la popup par rapport à la zone de saisie du champ de saisie
:m_nPosY={:ChampCourant,indChamp}..Y+FenIntPosY(:Mere)+peLign :m_nPosX={:ChampCourant,indChamp}..X+FenIntPosX(:Mere)+({:ChampCourant, indChamp}..Largeur - eLargeur-6)+peCol SI {cParent,indChamp}..Type=typTable ALORS // gestion dans les tables :m_nPosX+={cParent,indChamp}..X // calcul de la position d'affichage dans la table eLargeur=TableSelect({cParent,indChamp}..Nom)-TablePosition({cParent,indChamp}..Nom) SI :m_eHligne=0 ALORS :m_eHligne=({cParent, indChamp}[1]..Hauteur+1) SI :m_eHtitre=0 ALORS :m_eHtitre=({cParent, indChamp}..HauteurLigne*2) :m_nPosY+={cParent,indChamp}..Y+(:m_eHligne*eLargeur)+:m_eHtitre+3 SINON :m_nPosY+={:ChampCourant, indChamp}..Hauteur FIN
Definition de la structure Rect: RECT est une structure // récupération de la position de la zone de saisie d'un champ avec saisie nPosGauche, nPosHaut, nPosDroite, nPosBas sont des entiers FIN
-- Pascal
Ne garder que le prénom pour me joindre
Pascal ROY avait prétendu :
Bonjour,
Je cherche à connaitre par programmation la position X et Y
d'une zone de saisie.
Attention, je ne parle pas d'un champs de saisie, ça je sais, mais
de la zone de saisie d'un champs !
Quelqu'un sait comment faire ?
J'ai développé dans un composant gérant une simili combo, une fonction pour positionner l'ouverture de ma fenetre, sur le bord
gauche de la zone de saisie d'un champ et sous la zone de saisie donc je te fournis le code qui gère ça:
//
// Syntaxe :
//EntreeChamp (<NomCol>, <cNomChamp> [, <peCol> [, <peLign>]])
//
// Paramètres :
// NomCol : Nom de la colonne de la combo sur laquelle on va faire les recherches
// cNomChamp : Nom du champ appelant la méthode d'entrée du champ (MoiMême..nom= champ courant)
// peCol (valeur par défaut=0) : Offset supplémentaire de colonne pour l'affichage de la combo (en pixel)
// peLign (valeur par défaut=0) : Offset supplementaire de ligne pour l'affichage de la combo (en pixel)
// Valeur de retour :
// Aucune
// Notes :
// Cette méthode est appellée à chaque fois que l'on entre dans un champ utilisant la ComboFLO
// L'évènement de déplacement par les flèches est créé, puis les champs défini par les variables de l'instances sont sauvés
(SauveChamps)
// Si la fenetre existe, les colonnes sont triés sur la colonne, puis la fenetre est préparée et affichée
// La position de la zone de saisie est automatiquement calculée.
//
// Exemple :
// Comboc:EntreeChamp("_Col2",moimeme..nom)
//
:m_cNomCol=NomCol
:ColCle=NomCol[[5 A ]]
:Taille_champ=0
cChamp est une chaîne=cNomChamp
cParent est une chaîne=ParentObjet(cChamp)
SI Position(cChamp,".") ALORS
cChamp=ExtraitChaîne(cChamp,2,".")
FIN
:ChampCourant=:Mere+"."+cNomChamp
// Récupère la largeur de la zone de saisie du champ de saisie
stSaisieRECT est un prep_combo.RECT
SendMessage(Handle(:ChampCourant), 0x00B2, 0, &stSaisieRECT) // 0x00B2 = EM_GETRECT : récupère les dimensions de la zone de
saisie d'un champ de saisie
eLargeur = stSaisieRECT:nPosDroite - stSaisieRECT:nPosGauche
// Calcule la position de la popup par rapport à la zone de saisie du champ de saisie
:m_nPosY={:ChampCourant,indChamp}..Y+FenIntPosY(:Mere)+peLign
:m_nPosX={:ChampCourant,indChamp}..X+FenIntPosX(:Mere)+({:ChampCourant, indChamp}..Largeur - eLargeur-6)+peCol
SI {cParent,indChamp}..Type=typTable ALORS
// gestion dans les tables
:m_nPosX+={cParent,indChamp}..X
// calcul de la position d'affichage dans la table
eLargeur=TableSelect({cParent,indChamp}..Nom)-TablePosition({cParent,indChamp}..Nom)
SI :m_eHligne=0 ALORS :m_eHligne=({cParent, indChamp}[1]..Hauteur+1)
SI :m_eHtitre=0 ALORS :m_eHtitre=({cParent, indChamp}..HauteurLigne*2)
:m_nPosY+={cParent,indChamp}..Y+(:m_eHligne*eLargeur)+:m_eHtitre+3
SINON
:m_nPosY+={:ChampCourant, indChamp}..Hauteur
FIN
Definition de la structure Rect:
RECT est une structure // récupération de la position de la zone de saisie d'un champ avec saisie
nPosGauche, nPosHaut, nPosDroite, nPosBas sont des entiers
FIN
--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Je cherche à connaitre par programmation la position X et Y d'une zone de saisie. Attention, je ne parle pas d'un champs de saisie, ça je sais, mais de la zone de saisie d'un champs !
Quelqu'un sait comment faire ?
J'ai développé dans un composant gérant une simili combo, une fonction pour positionner l'ouverture de ma fenetre, sur le bord gauche de la zone de saisie d'un champ et sous la zone de saisie donc je te fournis le code qui gère ça:
// // Syntaxe : //EntreeChamp (<NomCol>, <cNomChamp> [, <peCol> [, <peLign>]]) // // Paramètres : // NomCol : Nom de la colonne de la combo sur laquelle on va faire les recherches // cNomChamp : Nom du champ appelant la méthode d'entrée du champ (MoiMême..nom= champ courant) // peCol (valeur par défaut=0) : Offset supplémentaire de colonne pour l'affichage de la combo (en pixel) // peLign (valeur par défaut=0) : Offset supplementaire de ligne pour l'affichage de la combo (en pixel) // Valeur de retour : // Aucune // Notes : // Cette méthode est appellée à chaque fois que l'on entre dans un champ utilisant la ComboFLO // L'évènement de déplacement par les flèches est créé, puis les champs défini par les variables de l'instances sont sauvés (SauveChamps) // Si la fenetre existe, les colonnes sont triés sur la colonne, puis la fenetre est préparée et affichée // La position de la zone de saisie est automatiquement calculée. // // Exemple : // Comboc:EntreeChamp("_Col2",moimeme..nom) //
:m_cNomCol=NomCol :ColCle=NomCol[[5 A ]] :Taille_champ=0 cChamp est une chaîne=cNomChamp cParent est une chaîne=ParentObjet(cChamp) SI Position(cChamp,".") ALORS cChamp=ExtraitChaîne(cChamp,2,".") FIN
:ChampCourant=:Mere+"."+cNomChamp // Récupère la largeur de la zone de saisie du champ de saisie stSaisieRECT est un prep_combo.RECT SendMessage(Handle(:ChampCourant), 0x00B2, 0, &stSaisieRECT) // 0x00B2 = EM_GETRECT : récupère les dimensions de la zone de saisie d'un champ de saisie eLargeur = stSaisieRECT:nPosDroite - stSaisieRECT:nPosGauche
// Calcule la position de la popup par rapport à la zone de saisie du champ de saisie
:m_nPosY={:ChampCourant,indChamp}..Y+FenIntPosY(:Mere)+peLign :m_nPosX={:ChampCourant,indChamp}..X+FenIntPosX(:Mere)+({:ChampCourant, indChamp}..Largeur - eLargeur-6)+peCol SI {cParent,indChamp}..Type=typTable ALORS // gestion dans les tables :m_nPosX+={cParent,indChamp}..X // calcul de la position d'affichage dans la table eLargeur=TableSelect({cParent,indChamp}..Nom)-TablePosition({cParent,indChamp}..Nom) SI :m_eHligne=0 ALORS :m_eHligne=({cParent, indChamp}[1]..Hauteur+1) SI :m_eHtitre=0 ALORS :m_eHtitre=({cParent, indChamp}..HauteurLigne*2) :m_nPosY+={cParent,indChamp}..Y+(:m_eHligne*eLargeur)+:m_eHtitre+3 SINON :m_nPosY+={:ChampCourant, indChamp}..Hauteur FIN
Definition de la structure Rect: RECT est une structure // récupération de la position de la zone de saisie d'un champ avec saisie nPosGauche, nPosHaut, nPosDroite, nPosBas sont des entiers FIN
-- Pascal
Ne garder que le prénom pour me joindre
Jacques Bratières
Le Fri, 03 Aug 2007 10:39:56 +0200, Pascal ROY a écrit:
Bonjour,
Je cherche à connaitre par programmation la position X et Y d'une zone de saisie. Attention, je ne parle pas d'un champs de saisie, ça je sais, mais de la zone de saisie d'un champs !
Quelqu'un sait comment faire ?
TableinfoXY et ses frères et soeurs.
-- J.Bratières
Le Fri, 03 Aug 2007 10:39:56 +0200, Pascal ROY <pascal.roy@sodalec.fr> a
écrit:
Bonjour,
Je cherche à connaitre par programmation la position X et Y
d'une zone de saisie.
Attention, je ne parle pas d'un champs de saisie, ça je sais, mais
de la zone de saisie d'un champs !
Le Fri, 03 Aug 2007 10:39:56 +0200, Pascal ROY a écrit:
Bonjour,
Je cherche à connaitre par programmation la position X et Y d'une zone de saisie. Attention, je ne parle pas d'un champs de saisie, ça je sais, mais de la zone de saisie d'un champs !