Evénement("SurvolTable","TABLE",160)
Evénement("SurvolObjet","frmtest.*",512)
PROCEDURE SurvolTable(pMessage, wParam, lParam)
x est un entier
y est un entier
nCol est un entier
Ind est un entier
sCol est une chaîne
nPosXEcran est un entier
nPosYEcran est un entier
nTailleTexteEnPixel est un entier
nPosXEcran = PoidsFaible(CurseurPos(cpClient))
nPosYEcran = PoidsFort(CurseurPos(cpClient))
x = nPosXEcran - TABLE..X
y = nPosYEcran - TABLE..Y
POUR Ind = 1 A TableOccurrence(TABLE,toColonne) //On parcours les colonnes de la table
sCol = TableEnumèreColonne(TABLE,Ind) //On récupère le nom de la colonne selon son indice
//si la position x de la souris se situe dans les entête de colonne
SI x >= {sCol,indChamp}..X ET x <= ({sCol,indChamp}..X + {sCol,indChamp}..Largeur) ALORS
//On récupère la taille approximative du texte vaudrait mieux voir l'api 'GetTextMetrics'
nTailleTexteEnPixel = TexteLargeur(txtBulle,{sCol,indChamp}..Libellé)
//Si le texte plus grand que la colonne on rend le libellé visible
SI nTailleTexteEnPixel*1.1 < {sCol,indChamp}..Largeur ALORS
txtBulle..Visible = Faux
SINON
txtBulle..Visible = Vrai
FIN
//On renseigne valeurs et position de la pseudo bulle
txtBulle = {sCol,indChamp}..Libellé
txtBulle..X = x + TABLE..X
txtBulle..Y = y + TABLE..Y
txtBulle..Largeur = nTailleTexteEnPixel*1.1
FenRepeint(frmTest)
RETOUR
FIN
FIN
PROCEDURE SurvolObjet( pMessage, wParam, lParam )
x est un entier
y est un entier
nPosXEcran est un entier
nPosYEcran est un entier
bVisible est un booléen = Faux
nPosXEcran = PoidsFaible(CurseurPos(cpClient))
nPosYEcran = PoidsFort(CurseurPos(cpClient))
x = nPosXEcran - TABLE..X
y = nPosYEcran - TABLE..Y
//On teste si on est sorti des entêtes de colonne de la table
SI nPosYEcran >= TABLE..Y ALORS
SI nPosYEcran <= TABLE..Y + TABLE..HauteurLigne ALORS
SI nPosXEcran >= TABLE..X ALORS
SI nPosXEcran <= TABLE..X + TABLE..Largeur ALORS
RETOUR
FIN
FIN
FIN
FIN
txtBulle..Visible = Faux
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=4381&post_id=18159