Bonjour,
Je Clone des colonnes d'une Table Mémoire
Lors d'un clic droit sur la table, je souhaite savoir
sur quelle colonne je suis :
nColonne,x,y sont des entiers
// sélection sur la table
x = PoidsFaible(CurseurPos())
y = PoidsFort(CurseurPos())
Trace("Y=",y)
nColonne = TableInfoXY(MoiMême, tiNumColonne + tiOrigineEcran, x, y)
MoiMême..MenuContextuel =MenuContextuelVue // Activation du menu
Trace(nColonne)
Si la ligne de la table est pleine pas de problème,
Par contre ( et c'est marqué dans l'aide) la fonction renvoi -1 si la ligne
ou colonne
est vide.
Comment faire pour récupérer ce nom de colonne ( ma table peut être vide )
Peut être en interceptant le clic sur le titre de colonne ? ( pas trouvé
comment faire )
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
Romain PETIT
sebNews a présenté l'énoncé suivant :
Si la ligne de la table est pleine pas de problème, Par contre ( et c'est marqué dans l'aide) la fonction renvoi -1 si la ligne ou colonne est vide.
Oui, effectivement...
Comment faire pour récupérer ce nom de colonne ( ma table peut être vide ) Peut être en interceptant le clic sur le titre de colonne ? ( pas trouvé comment faire )
Pour le clic sur le titre de colonne, il faut brancher l'évenement 1529 (cf : http://tinyurl.com/8xjgt) Sinon, la fonction qui suit devrait faire l'affaire :
*** Bouton droit enfoncé (WM_RBUTTONDOWN) de table xxx sNomColonne est une chaîne sNomColonne = fg_RenvoiNomColonneSurvolée(MoiMême..Nom) SI sNomColonne<>"" ALORS //traitement Trace(sNomColonne) FIN
FONCTION fg_RenvoiNomColonneSurvolée(LOCAL sNomTable) // v. 1.0 pour WD7/7.5/8/9 // (c) mai 2005 Romain PETIT (mailto:) // sous licence WD-LIBRE (http://www.windasso.org) // But : Récupérer le nom d'une colonne d'une table (mémoire ou // fichier) survolée par la souris // (y-compris si la table est vide, ce qui n'est pas possible // avec TableInfoXY) // Param : Nom de la table // Retour : Chaine vide (table non survolée, sans colonne ou erreur) // ou nom de la colonne survolée // Notes : . Etant donné qu'il y a utilisation d'une zone mémoire à // chaque appel, cela peut évidemment ralentir un // traitement, d'autant plus si le nombre de colonne est // important // . L'en-tête de colonne n'est pas pris en compte // . Les colonnes peuvent avoir été rendues invisibles ou // déplacées // Exemple : **** code survol souris (WM_MOUSEVE) de la table xx // trace(fg_RenvoiNomColonneSurvolée(moimeme..nom)
QUAND EXCEPTION RENVOYER "" FIN
eXDansTable est un entier eXTable est un entier ePosSourisX est un entier c est un entier sNomColonne est une chaîne eIndiceColonne est un entier eXdebut, eXfin sont des entiers sNomColonneSurvolée est une chaîne eNbColonnes est un entier = {sNomTable, indChamp}..NombreColonne sZoneMem est une chaîne = "ZM_"+{sNomTable, indChamp}..Nom // Abscisse de la souris en cours (par rapport à la zone client) ePosSourisX = PoidsFaible(CurseurPos(cpClient)) // Abscisse de la table (par rapport à la zone client) eXTable = {sNomTable, indChamp}..X // Abscisse de la souris (par rapport à la table seule) eXDansTable = ePosSourisX - eXTable
SI MemExiste(sZoneMem) ALORS MemSupprimeTout(sZoneMem) MemCrée(sZoneMem)
//on enumère les colonnes et on les classe par ordre d'affichage, // (si la colonne est visible) POUR c=1 A eNbColonnes sNomColonne = TableEnumèreColonne({sNomTable, indChamp}, c) eIndiceColonne = TableIndiceColonne({sNomTable, indChamp}, ... sNomColonne, ticAffichage) // contrairement à ce qu'indique la doc, si la col est invisible, // la fonction TableIndiceColonne ne renvoie pas 0 (en WD7.5 206g) SI eIndiceColonne>0 ET {sNomColonne, indChamp}..Visible ALORS MemAjoute(sZoneMem, eIndiceColonne, sNomColonne) FIN FIN //on trie la table MemTrie(sZoneMem)
// on teste la position de la souris pour chaque colonne sNomColonne = MemPremier(sZoneMem) TANTQUE PAS MemEnDehors(sZoneMem) SI PAS sNomColonne~="" ALORS eXdebut = {sNomColonne, indChamp}..X eXfin = eXdebut + {sNomColonne, indChamp}..Largeur SI (eXdebut< eXDansTable <= eXfin) ALORS // on a le nom de la colonne survolée sNomColonneSurvolée = sNomColonne SORTIR FIN FIN sNomColonne = MemSuivant(sZoneMem) FIN MemSupprimeTout(sZoneMem)
RENVOYER sNomColonneSurvolée
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
sebNews a présenté l'énoncé suivant :
Si la ligne de la table est pleine pas de problème,
Par contre ( et c'est marqué dans l'aide) la fonction renvoi -1 si la ligne
ou colonne est vide.
Oui, effectivement...
Comment faire pour récupérer ce nom de colonne ( ma table peut être vide )
Peut être en interceptant le clic sur le titre de colonne ? ( pas trouvé
comment faire )
Pour le clic sur le titre de colonne, il faut brancher l'évenement 1529
(cf : http://tinyurl.com/8xjgt)
Sinon, la fonction qui suit devrait faire l'affaire :
*** Bouton droit enfoncé (WM_RBUTTONDOWN) de table xxx
sNomColonne est une chaîne
sNomColonne = fg_RenvoiNomColonneSurvolée(MoiMême..Nom)
SI sNomColonne<>"" ALORS
//traitement
Trace(sNomColonne)
FIN
FONCTION fg_RenvoiNomColonneSurvolée(LOCAL sNomTable)
// v. 1.0 pour WD7/7.5/8/9
// (c) mai 2005 Romain PETIT (mailto:rompetit@f_r_e_e.com)
// sous licence WD-LIBRE (http://www.windasso.org)
// But : Récupérer le nom d'une colonne d'une table (mémoire ou
// fichier) survolée par la souris
// (y-compris si la table est vide, ce qui n'est pas possible
// avec TableInfoXY)
// Param : Nom de la table
// Retour : Chaine vide (table non survolée, sans colonne ou erreur)
// ou nom de la colonne survolée
// Notes : . Etant donné qu'il y a utilisation d'une zone mémoire à
// chaque appel, cela peut évidemment ralentir un
// traitement, d'autant plus si le nombre de colonne est
// important
// . L'en-tête de colonne n'est pas pris en compte
// . Les colonnes peuvent avoir été rendues invisibles ou
// déplacées
// Exemple : **** code survol souris (WM_MOUSEVE) de la table xx
// trace(fg_RenvoiNomColonneSurvolée(moimeme..nom)
QUAND EXCEPTION
RENVOYER ""
FIN
eXDansTable est un entier
eXTable est un entier
ePosSourisX est un entier
c est un entier
sNomColonne est une chaîne
eIndiceColonne est un entier
eXdebut, eXfin sont des entiers
sNomColonneSurvolée est une chaîne
eNbColonnes est un entier = {sNomTable, indChamp}..NombreColonne
sZoneMem est une chaîne = "ZM_"+{sNomTable, indChamp}..Nom
// Abscisse de la souris en cours (par rapport à la zone client)
ePosSourisX = PoidsFaible(CurseurPos(cpClient))
// Abscisse de la table (par rapport à la zone client)
eXTable = {sNomTable, indChamp}..X
// Abscisse de la souris (par rapport à la table seule)
eXDansTable = ePosSourisX - eXTable
SI MemExiste(sZoneMem) ALORS MemSupprimeTout(sZoneMem)
MemCrée(sZoneMem)
//on enumère les colonnes et on les classe par ordre d'affichage,
// (si la colonne est visible)
POUR c=1 A eNbColonnes
sNomColonne = TableEnumèreColonne({sNomTable, indChamp}, c)
eIndiceColonne = TableIndiceColonne({sNomTable, indChamp}, ...
sNomColonne, ticAffichage)
// contrairement à ce qu'indique la doc, si la col est invisible,
// la fonction TableIndiceColonne ne renvoie pas 0 (en WD7.5 206g)
SI eIndiceColonne>0 ET {sNomColonne, indChamp}..Visible ALORS
MemAjoute(sZoneMem, eIndiceColonne, sNomColonne)
FIN
FIN
//on trie la table
MemTrie(sZoneMem)
// on teste la position de la souris pour chaque colonne
sNomColonne = MemPremier(sZoneMem)
TANTQUE PAS MemEnDehors(sZoneMem)
SI PAS sNomColonne~="" ALORS
eXdebut = {sNomColonne, indChamp}..X
eXfin = eXdebut + {sNomColonne, indChamp}..Largeur
SI (eXdebut< eXDansTable <= eXfin) ALORS
// on a le nom de la colonne survolée
sNomColonneSurvolée = sNomColonne
SORTIR
FIN
FIN
sNomColonne = MemSuivant(sZoneMem)
FIN
MemSupprimeTout(sZoneMem)
RENVOYER sNomColonneSurvolée
A+
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Si la ligne de la table est pleine pas de problème, Par contre ( et c'est marqué dans l'aide) la fonction renvoi -1 si la ligne ou colonne est vide.
Oui, effectivement...
Comment faire pour récupérer ce nom de colonne ( ma table peut être vide ) Peut être en interceptant le clic sur le titre de colonne ? ( pas trouvé comment faire )
Pour le clic sur le titre de colonne, il faut brancher l'évenement 1529 (cf : http://tinyurl.com/8xjgt) Sinon, la fonction qui suit devrait faire l'affaire :
*** Bouton droit enfoncé (WM_RBUTTONDOWN) de table xxx sNomColonne est une chaîne sNomColonne = fg_RenvoiNomColonneSurvolée(MoiMême..Nom) SI sNomColonne<>"" ALORS //traitement Trace(sNomColonne) FIN
FONCTION fg_RenvoiNomColonneSurvolée(LOCAL sNomTable) // v. 1.0 pour WD7/7.5/8/9 // (c) mai 2005 Romain PETIT (mailto:) // sous licence WD-LIBRE (http://www.windasso.org) // But : Récupérer le nom d'une colonne d'une table (mémoire ou // fichier) survolée par la souris // (y-compris si la table est vide, ce qui n'est pas possible // avec TableInfoXY) // Param : Nom de la table // Retour : Chaine vide (table non survolée, sans colonne ou erreur) // ou nom de la colonne survolée // Notes : . Etant donné qu'il y a utilisation d'une zone mémoire à // chaque appel, cela peut évidemment ralentir un // traitement, d'autant plus si le nombre de colonne est // important // . L'en-tête de colonne n'est pas pris en compte // . Les colonnes peuvent avoir été rendues invisibles ou // déplacées // Exemple : **** code survol souris (WM_MOUSEVE) de la table xx // trace(fg_RenvoiNomColonneSurvolée(moimeme..nom)
QUAND EXCEPTION RENVOYER "" FIN
eXDansTable est un entier eXTable est un entier ePosSourisX est un entier c est un entier sNomColonne est une chaîne eIndiceColonne est un entier eXdebut, eXfin sont des entiers sNomColonneSurvolée est une chaîne eNbColonnes est un entier = {sNomTable, indChamp}..NombreColonne sZoneMem est une chaîne = "ZM_"+{sNomTable, indChamp}..Nom // Abscisse de la souris en cours (par rapport à la zone client) ePosSourisX = PoidsFaible(CurseurPos(cpClient)) // Abscisse de la table (par rapport à la zone client) eXTable = {sNomTable, indChamp}..X // Abscisse de la souris (par rapport à la table seule) eXDansTable = ePosSourisX - eXTable
SI MemExiste(sZoneMem) ALORS MemSupprimeTout(sZoneMem) MemCrée(sZoneMem)
//on enumère les colonnes et on les classe par ordre d'affichage, // (si la colonne est visible) POUR c=1 A eNbColonnes sNomColonne = TableEnumèreColonne({sNomTable, indChamp}, c) eIndiceColonne = TableIndiceColonne({sNomTable, indChamp}, ... sNomColonne, ticAffichage) // contrairement à ce qu'indique la doc, si la col est invisible, // la fonction TableIndiceColonne ne renvoie pas 0 (en WD7.5 206g) SI eIndiceColonne>0 ET {sNomColonne, indChamp}..Visible ALORS MemAjoute(sZoneMem, eIndiceColonne, sNomColonne) FIN FIN //on trie la table MemTrie(sZoneMem)
// on teste la position de la souris pour chaque colonne sNomColonne = MemPremier(sZoneMem) TANTQUE PAS MemEnDehors(sZoneMem) SI PAS sNomColonne~="" ALORS eXdebut = {sNomColonne, indChamp}..X eXfin = eXdebut + {sNomColonne, indChamp}..Largeur SI (eXdebut< eXDansTable <= eXfin) ALORS // on a le nom de la colonne survolée sNomColonneSurvolée = sNomColonne SORTIR FIN FIN sNomColonne = MemSuivant(sZoneMem) FIN MemSupprimeTout(sZoneMem)
RENVOYER sNomColonneSurvolée
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
sebNews
Bonjour,
Pour le clic sur le titre de colonne, il faut brancher l'évenement 1529 (cf : http://tinyurl.com/8xjgt) Sinon, la fonction qui suit devrait faire l'affaire :
Merci pour la réponse complète. Je teste tout cela demain pout voir la solution la moins gourmande
Sébastien
Bonjour,
Pour le clic sur le titre de colonne, il faut brancher l'évenement 1529
(cf : http://tinyurl.com/8xjgt)
Sinon, la fonction qui suit devrait faire l'affaire :
Merci pour la réponse complète.
Je teste tout cela demain pout voir la solution
la moins gourmande
Pour le clic sur le titre de colonne, il faut brancher l'évenement 1529 (cf : http://tinyurl.com/8xjgt) Sinon, la fonction qui suit devrait faire l'affaire :
Merci pour la réponse complète. Je teste tout cela demain pout voir la solution la moins gourmande
Sébastien
sebNews
"Romain PETIT" a écrit dans le message de
FONCTION fg_RenvoiNomColonneSurvolée(LOCAL sNomTable) // v. 1.0 pour WD7/7.5/8/9 // (c) mai 2005 Romain PETIT (mailto:)
Attention au Spam :-)
Sébastien
"Romain PETIT" <VoirM@Signature.fin> a écrit dans le message de
FONCTION fg_RenvoiNomColonneSurvolée(LOCAL sNomTable)
// v. 1.0 pour WD7/7.5/8/9
// (c) mai 2005 Romain PETIT (mailto:rompetit@f_r_e_e.com)
FONCTION fg_RenvoiNomColonneSurvolée(LOCAL sNomTable) // v. 1.0 pour WD7/7.5/8/9 // (c) mai 2005 Romain PETIT (mailto:)
Attention au Spam :-)
Sébastien
sebNews
> Sinon, la fonction qui suit devrait faire l'affaire :
*** Bouton droit enfoncé (WM_RBUTTONDOWN) de table xxx sNomColonne est une chaîne sNomColonne = fg_RenvoiNomColonneSurvolée(MoiMême..Nom) SI sNomColonne<>"" ALORS //traitement Trace(sNomColonne) FIN
Ok parfait, Tout fonctionne Encore merci
Sébastien
> Sinon, la fonction qui suit devrait faire l'affaire :
*** Bouton droit enfoncé (WM_RBUTTONDOWN) de table xxx
sNomColonne est une chaîne
sNomColonne = fg_RenvoiNomColonneSurvolée(MoiMême..Nom)
SI sNomColonne<>"" ALORS
//traitement
Trace(sNomColonne)
FIN
> Sinon, la fonction qui suit devrait faire l'affaire :
*** Bouton droit enfoncé (WM_RBUTTONDOWN) de table xxx sNomColonne est une chaîne sNomColonne = fg_RenvoiNomColonneSurvolée(MoiMême..Nom) SI sNomColonne<>"" ALORS //traitement Trace(sNomColonne) FIN