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 ?
J'avais un bout de code du ST WD pour ça
(à adapter bien entendu, mais ça devrait t'aider)
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 // Visualiser le contenu des cellules lors du survol de la table nligne est une chaîne sCol est une chaîne x est un entier y est un entier // sélection sur la table TABLE x = PoidsFaible(CurseurPos()) y = PoidsFort(CurseurPos()) nligne = TableInfoXY(Table, tiNumLigne + tiOrigineEcran, x, y) sCol = TableInfoXY(Table, tiNomColonne + tiOrigineEcran, x, y) SI sCol<>"" ET nligne<>"" ALORS {sCol}..Bulle={sCol}[nligne] FIN
Ca ne passe pas à la compileEnvoyé par Yann09
Guardian >> Merci, mais ta fonction est basée sur le curseur souris, et moi je ne peux pas utiliser ce curseur !Envoyé par Windev10
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...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager