Bonjour,
J'aimerais ouvrir une petite fenêtre juste sous la ligne en cours d'une table mémoire.
Comment faire pour connaitre la position X,Y (surtout Y) de la ligne en cours ?
Bonjour,
J'aimerais ouvrir une petite fenêtre juste sous la ligne en cours d'une table mémoire.
Comment faire pour connaitre la position X,Y (surtout Y) de la ligne en cours ?
TableSelectOccurence renvoie la bonne info me semble-t-il ...![]()
Je me suis mal exprimé semble-t-il. Je ne veux pas le n° de la ligne sélectionnée, (ça je l'ai par TableSelectPlus ou TableSelectOccurrence, comme tu me l'as dit), non ce que je veux c'est l'ordonnée en pixel de la ligne, pour pouvoir positionner ma fenêtre, juste sous la ligne en question !
Tu peux éventuellement récuperer les coordonnées X,Y du pointeur de la souris et faire en fonction du clic souris non ?![]()
Hélas, non !
Puisque l'ouverture de la fenêtre est obtenue par le clic sur un bouton![]()
Dans ce cas ...
Tu peux peut etre tenter un truc style :
MaTable[1,1]..X (ou PosX je sais plus) ou encore :
{MaTable[1,1]}..X
ça donne quoi ça ?
Voila, j'ai trouvé.
J'ai fait une procédure...
Pour obtenir l'indice de la ligne, j'utilise IndiceEnCours()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 // Résumé : <Calcul l'ordonnée de la ligne en pixel par rapport au Coin haut gauche de la fenêtre> // Syntaxe : //[ <Résultat> = ] FGetPosYLigne (<cpTable> est chaîne, <npLigne> est entier) // // Paramètres : // cpTable (chaîne) : <indiquez ici le rôle de cpTable> // npLigne (entier) : <indiquez ici le rôle de npLigne> // Valeur de retour : // entier : Ligne (en pixel) se situant sous la ligne en cours // // Notes : // Le résultat est donnée par rapport à la fenêtre. // // PROCEDURE FGetPosYLigne( cpTable est une chaîne, npLigne est un entier) LOCAL nlRetour est un entier nlHauteurTitre est un entier nlHauteurLigne est un entier nlNbLignes est un entier nlHauteurTable est un entier nlHauteurTable = { cpTable,indChamp}..Hauteur nlHauteurLigne = { cpTable,indChamp}..HauteurLigne nlNbLignes = TableOccurrence( cpTable, toVisible) nlHauteurTitre = nlHauteurTable - ( nlNbLignes * nlHauteurLigne) nlRetour = { cpTable,indChamp}..Y + nlHauteurTitre + ( npLigne * nlHauteurLigne) RENVOYER( nlRetour)
et j'ai du mettre le bouton en type Interruption
Voila, si ça peut servir à quelqu'un !![]()
J'ai un truc pas mal (ta procédure ne fonctionne pas avec moi, ça se décale à chaque ligne), mais ça ne fonctionne que si on est en saisie dans le champ de la colonne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 rect est composé de l est un entier long // left t est un entier long // top r est un entier long // right b est un entier long // bottom FIN point est composé de x est un entier long y est un entier long FIN // On chope la position du champ AppelDLL32("user32","GetWindowRect",Handle("macolonne"),&rect) point.x = rect.l point.y = rect.t // On convertie en position client (intérieur de la fenêtre) AppelDLL32("user32","ScreenToClient",Handle(),&point) // Voilà, on a tout dans la variable "point"
Le probleme c'est que je ne suis pas en saisie !
Et pour moi, ma fonction marche correctement, alors...![]()
Partager