Dans une table mémoire, j'ai un certain nombre de colonnes triables mais
j'aimerais que, lorsqu'on clique sur l'entête d'une de ces colonnes, le
tri se fasse sur la colonne cliquée mais aussi sur une autre.
Exemple : si je clique sur l'entête d'une colonne Nom, je veux trier ma
table sur la colonne Nom et la colonne Prénom.
Pour cela, il faudrait intercepter le clic sur la colonne (et, si
possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais
pas 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
Eric a exposé le 15/04/2004 :
Pour cela, il faudrait intercepter le clic sur la colonne (et, si possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais pas faire.
Voici mes procédures (en WD7.5) :
A+
***** Déclarations globales de la fenêtre //Evenement pour détecter le clic sur en-tête de colonne gf_eEvClicTable est un entier //Pour le tri multiple g_bTriMulti est un booléen
***** Initialisation de la fenêtre sNomTable est une chaine = "MaTable" gf_eEvClicTable=Evénement("pl_ClicEnTeteTable", sNomTable, 1529)
***** Fermeture de la fenêtre SI gf_eEvClicTable<>0 ALORS FinEvénement(gf_eEvClicTable)
sNomTable est une chaîne = "MaTable" sNomColonne est une chaîne = "MaColonneATrier" eRes est un entier = CurseurPos(cpClient) eX est un entier eX = PoidsFaible(eRes)-{sNomTable,indChamp}..X
sNomColCliquée est une chaîne sNomColCliquée =TableEnumèreColonne(sNomTable,wParam) // La colonne correspond-elle à celle à trier ? SI sNomColCliquée=sNomColonne ALORS //On ne prend pas en compte le clic si la loupe est présente //(à environ 10 pixels) SI eX < {sNomTable+"."+sNomColonne,indChamp}..Largeur-10 ALORS si gf_bTriMulti alors TableTrie(sNomTable,"+COL1","+COL2") sinon TableTrie(sNomTable,"-COL1","-COL2") FIN gf_bTriMulti = PAS gf_bTriMulti // Le renvoyer 0 permet d'annuler // le tri sur la colonne seule RENVOYER 0 FIN FIN
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Eric a exposé le 15/04/2004 :
Pour cela, il faudrait intercepter le clic sur la colonne (et, si
possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais
pas faire.
Voici mes procédures (en WD7.5) :
A+
***** Déclarations globales de la fenêtre
//Evenement pour détecter le clic sur en-tête de colonne
gf_eEvClicTable est un entier
//Pour le tri multiple
g_bTriMulti est un booléen
***** Initialisation de la fenêtre
sNomTable est une chaine = "MaTable"
gf_eEvClicTable=Evénement("pl_ClicEnTeteTable", sNomTable, 1529)
***** Fermeture de la fenêtre
SI gf_eEvClicTable<>0 ALORS FinEvénement(gf_eEvClicTable)
sNomTable est une chaîne = "MaTable"
sNomColonne est une chaîne = "MaColonneATrier"
eRes est un entier = CurseurPos(cpClient)
eX est un entier
eX = PoidsFaible(eRes)-{sNomTable,indChamp}..X
sNomColCliquée est une chaîne
sNomColCliquée =TableEnumèreColonne(sNomTable,wParam)
// La colonne correspond-elle à celle à trier ?
SI sNomColCliquée=sNomColonne ALORS
//On ne prend pas en compte le clic si la loupe est présente
//(à environ 10 pixels)
SI eX < {sNomTable+"."+sNomColonne,indChamp}..Largeur-10 ALORS
si gf_bTriMulti alors
TableTrie(sNomTable,"+COL1","+COL2")
sinon
TableTrie(sNomTable,"-COL1","-COL2")
FIN
gf_bTriMulti = PAS gf_bTriMulti
// Le renvoyer 0 permet d'annuler
// le tri sur la colonne seule
RENVOYER 0
FIN
FIN
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Pour cela, il faudrait intercepter le clic sur la colonne (et, si possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais pas faire.
Voici mes procédures (en WD7.5) :
A+
***** Déclarations globales de la fenêtre //Evenement pour détecter le clic sur en-tête de colonne gf_eEvClicTable est un entier //Pour le tri multiple g_bTriMulti est un booléen
***** Initialisation de la fenêtre sNomTable est une chaine = "MaTable" gf_eEvClicTable=Evénement("pl_ClicEnTeteTable", sNomTable, 1529)
***** Fermeture de la fenêtre SI gf_eEvClicTable<>0 ALORS FinEvénement(gf_eEvClicTable)
sNomTable est une chaîne = "MaTable" sNomColonne est une chaîne = "MaColonneATrier" eRes est un entier = CurseurPos(cpClient) eX est un entier eX = PoidsFaible(eRes)-{sNomTable,indChamp}..X
sNomColCliquée est une chaîne sNomColCliquée =TableEnumèreColonne(sNomTable,wParam) // La colonne correspond-elle à celle à trier ? SI sNomColCliquée=sNomColonne ALORS //On ne prend pas en compte le clic si la loupe est présente //(à environ 10 pixels) SI eX < {sNomTable+"."+sNomColonne,indChamp}..Largeur-10 ALORS si gf_bTriMulti alors TableTrie(sNomTable,"+COL1","+COL2") sinon TableTrie(sNomTable,"-COL1","-COL2") FIN gf_bTriMulti = PAS gf_bTriMulti // Le renvoyer 0 permet d'annuler // le tri sur la colonne seule RENVOYER 0 FIN FIN
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Eric
Le 15 avril 2004 à 21:59, Romain PETIT nous disait :
Pour cela, il faudrait intercepter le clic sur la colonne (et, si possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais pas faire.
Voici mes procédures (en WD7.5) :
[couic le bon code]
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a donné un très bon point de départ et j'ai réussi à l'adapter à mes besoins. Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le tri se fait sur cette colonne et sur une autre que j'ai déterminée à l'avance. Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux le poster ici.
-- Cordialement
Le 15 avril 2004 à 21:59, Romain PETIT nous disait :
Pour cela, il faudrait intercepter le clic sur la colonne (et, si
possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais
pas faire.
Voici mes procédures (en WD7.5) :
[couic le bon code]
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a
donné un très bon point de départ et j'ai réussi à l'adapter à mes
besoins.
Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le
tri se fait sur cette colonne et sur une autre que j'ai déterminée à
l'avance.
Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux
le poster ici.
Le 15 avril 2004 à 21:59, Romain PETIT nous disait :
Pour cela, il faudrait intercepter le clic sur la colonne (et, si possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais pas faire.
Voici mes procédures (en WD7.5) :
[couic le bon code]
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a donné un très bon point de départ et j'ai réussi à l'adapter à mes besoins. Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le tri se fait sur cette colonne et sur une autre que j'ai déterminée à l'avance. Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux le poster ici.
-- Cordialement
Marcel.berman
Salut !
On 16-Apr-2004, Eric <ericb33+ wrote:
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a donné un très bon point de départ et j'ai réussi à l'adapter à mes besoins. Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le tri se fait sur cette colonne et sur une autre que j'ai déterminée à l'avance. Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux le poster ici.
-- Cordialement
Ben ... moi cela m'intéresse !
Merci d'avance ! -- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477
Salut !
On 16-Apr-2004, Eric <ericb33+spam@alussinan.org> wrote:
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a
donné un très bon point de départ et j'ai réussi à l'adapter à mes
besoins.
Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le
tri se fait sur cette colonne et sur une autre que j'ai déterminée à
l'avance.
Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux
le poster ici.
--
Cordialement
Ben ... moi cela m'intéresse !
Merci d'avance !
--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a donné un très bon point de départ et j'ai réussi à l'adapter à mes besoins. Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le tri se fait sur cette colonne et sur une autre que j'ai déterminée à l'avance. Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux le poster ici.
-- Cordialement
Ben ... moi cela m'intéresse !
Merci d'avance ! -- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477
Gilles Balp
c'est clair, on est intéressé.... merci d'avance
Gilles Balp
"Eric" <ericb33+ a écrit dans le message de news:egvuvdio1e7s$
Le 15 avril 2004 à 21:59, Romain PETIT nous disait :
>> Pour cela, il faudrait intercepter le clic sur la colonne (et, si >> possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais >> pas faire. > > Voici mes procédures (en WD7.5) :
[couic le bon code]
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a donné un très bon point de départ et j'ai réussi à l'adapter à mes besoins. Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le tri se fait sur cette colonne et sur une autre que j'ai déterminée à l'avance. Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux le poster ici.
-- Cordialement
c'est clair, on est intéressé.... merci d'avance
Gilles Balp
"Eric" <ericb33+spam@alussinan.org> a écrit dans le message de
news:egvuvdio1e7s$.dlg@ericb33spam.alussinan.org...
Le 15 avril 2004 à 21:59, Romain PETIT nous disait :
>> Pour cela, il faudrait intercepter le clic sur la colonne (et, si
>> possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais
>> pas faire.
>
> Voici mes procédures (en WD7.5) :
[couic le bon code]
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a
donné un très bon point de départ et j'ai réussi à l'adapter à mes
besoins.
Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le
tri se fait sur cette colonne et sur une autre que j'ai déterminée à
l'avance.
Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux
le poster ici.
"Eric" <ericb33+ a écrit dans le message de news:egvuvdio1e7s$
Le 15 avril 2004 à 21:59, Romain PETIT nous disait :
>> Pour cela, il faudrait intercepter le clic sur la colonne (et, si >> possible, empêcher le tri sur le nom seul) et c'est ce que je ne sais >> pas faire. > > Voici mes procédures (en WD7.5) :
[couic le bon code]
Merci Romain, ce n'était pas tout à fait ce que je voulais mais ça m'a donné un très bon point de départ et j'ai réussi à l'adapter à mes besoins. Maintenant, je peux cliquer sur n'importe quelle entête de colonne et le tri se fait sur cette colonne et sur une autre que j'ai déterminée à l'avance. Si tu es intéressé par mon code (ou si quelqu'un d'autre l'est), je peux le poster ici.
-- Cordialement
Eric
Á la demande (presque :-) ) générale, voici mon code, largement inspiré de celui de Romain Petit.
***Déclarations globales de la fenêtre GLOBAL //Evenement pour détecter le clic sur en-tête de colonne gfiEvClicTable est un entier //Pour le tri multiple gfsNomTable est une chaîne = "Table" gfiNbColonnes est un entier gfiColTriee est un entier gfbSensTri est un booléen = Vrai gfsColNom est un tableau dynamique gfbColVisible est un tableau dynamique
gfsColNom=allouer un tableau de gfiNbColonnes chaînes gfbColVisible=allouer un tableau de gfiNbColonnes booléens
POUR Bcl=1 A gfiNbColonnes gfsColNom[Bcl]=TableEnumèreColonne(gfsNomTable,Bcl) SI {gfsColNom[Bcl]}..Visible=Vrai ALORS gfbColVisible[Bcl]=Vrai SINON gfbColVisible[Bcl]úux FIN
***Fermeture de la fenêtre SI gfiEvClicTable<>0 ALORS FinEvénement(gfiEvClicTable)
eRes est un entier = CurseurPos(cpClient) eX est un entier sNomColCliquée est une chaîne Bcl est un entier PosMax est un entier
eX = PoidsFaible(eRes)-{gfsNomTable,indChamp}..X
// PosMax contiendra la somme des largeurs des colonnes // jusqu'à la colonne cliquée incluse. Ceci servira au calcul // de la position de la loupe sNomColCliquée =TableEnumèreColonne(gfsNomTable,wParam) POUR Bcl=1 A gfiNbColonnes SI gfbColVisible[Bcl] ALORS PosMax=PosMax+{gfsColNom[Bcl]}..Largeur SI sNomColCliquée=gfsColNom[Bcl] ALORS SORTIR FIN
//On ne prend pas en compte le clic si la loupe est présente //(à environ 10 pixels) SI eX < PosMax-10 ALORS SI Bcl<>gfiColTriee ALORS gfiColTriee¼l gfbSensTri=Vrai FIN SI gfbSensTri ALORS TableTrie(gfsNomTable,sNomColCliquée,"COL2") SINON TableTrie(gfsNomTable,"-"+sNomColCliquée,"COL2") FIN gfbSensTri = PAS gfbSensTri // Le renvoyer 0 permet d'annuler // le tri sur la colonne seule RENVOYER 0 FIN
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le sens du tri dans les entêtes ne bouge pas.
-- Cordialement
Á la demande (presque :-) ) générale, voici mon code, largement inspiré
de celui de Romain Petit.
***Déclarations globales de la fenêtre
GLOBAL
//Evenement pour détecter le clic sur en-tête de colonne
gfiEvClicTable est un entier
//Pour le tri multiple
gfsNomTable est une chaîne = "Table"
gfiNbColonnes est un entier
gfiColTriee est un entier
gfbSensTri est un booléen = Vrai
gfsColNom est un tableau dynamique
gfbColVisible est un tableau dynamique
gfsColNom=allouer un tableau de gfiNbColonnes chaînes
gfbColVisible=allouer un tableau de gfiNbColonnes booléens
POUR Bcl=1 A gfiNbColonnes
gfsColNom[Bcl]=TableEnumèreColonne(gfsNomTable,Bcl)
SI {gfsColNom[Bcl]}..Visible=Vrai ALORS gfbColVisible[Bcl]=Vrai SINON gfbColVisible[Bcl]úux
FIN
***Fermeture de la fenêtre
SI gfiEvClicTable<>0 ALORS FinEvénement(gfiEvClicTable)
eRes est un entier = CurseurPos(cpClient)
eX est un entier
sNomColCliquée est une chaîne
Bcl est un entier
PosMax est un entier
eX = PoidsFaible(eRes)-{gfsNomTable,indChamp}..X
// PosMax contiendra la somme des largeurs des colonnes
// jusqu'à la colonne cliquée incluse. Ceci servira au calcul
// de la position de la loupe
sNomColCliquée =TableEnumèreColonne(gfsNomTable,wParam)
POUR Bcl=1 A gfiNbColonnes
SI gfbColVisible[Bcl] ALORS PosMax=PosMax+{gfsColNom[Bcl]}..Largeur
SI sNomColCliquée=gfsColNom[Bcl] ALORS SORTIR
FIN
//On ne prend pas en compte le clic si la loupe est présente
//(à environ 10 pixels)
SI eX < PosMax-10 ALORS
SI Bcl<>gfiColTriee ALORS
gfiColTriee¼l
gfbSensTri=Vrai
FIN
SI gfbSensTri ALORS
TableTrie(gfsNomTable,sNomColCliquée,"COL2")
SINON
TableTrie(gfsNomTable,"-"+sNomColCliquée,"COL2")
FIN
gfbSensTri = PAS gfbSensTri
// Le renvoyer 0 permet d'annuler
// le tri sur la colonne seule
RENVOYER 0
FIN
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je
cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le
sens du tri dans les entêtes ne bouge pas.
Á la demande (presque :-) ) générale, voici mon code, largement inspiré de celui de Romain Petit.
***Déclarations globales de la fenêtre GLOBAL //Evenement pour détecter le clic sur en-tête de colonne gfiEvClicTable est un entier //Pour le tri multiple gfsNomTable est une chaîne = "Table" gfiNbColonnes est un entier gfiColTriee est un entier gfbSensTri est un booléen = Vrai gfsColNom est un tableau dynamique gfbColVisible est un tableau dynamique
gfsColNom=allouer un tableau de gfiNbColonnes chaînes gfbColVisible=allouer un tableau de gfiNbColonnes booléens
POUR Bcl=1 A gfiNbColonnes gfsColNom[Bcl]=TableEnumèreColonne(gfsNomTable,Bcl) SI {gfsColNom[Bcl]}..Visible=Vrai ALORS gfbColVisible[Bcl]=Vrai SINON gfbColVisible[Bcl]úux FIN
***Fermeture de la fenêtre SI gfiEvClicTable<>0 ALORS FinEvénement(gfiEvClicTable)
eRes est un entier = CurseurPos(cpClient) eX est un entier sNomColCliquée est une chaîne Bcl est un entier PosMax est un entier
eX = PoidsFaible(eRes)-{gfsNomTable,indChamp}..X
// PosMax contiendra la somme des largeurs des colonnes // jusqu'à la colonne cliquée incluse. Ceci servira au calcul // de la position de la loupe sNomColCliquée =TableEnumèreColonne(gfsNomTable,wParam) POUR Bcl=1 A gfiNbColonnes SI gfbColVisible[Bcl] ALORS PosMax=PosMax+{gfsColNom[Bcl]}..Largeur SI sNomColCliquée=gfsColNom[Bcl] ALORS SORTIR FIN
//On ne prend pas en compte le clic si la loupe est présente //(à environ 10 pixels) SI eX < PosMax-10 ALORS SI Bcl<>gfiColTriee ALORS gfiColTriee¼l gfbSensTri=Vrai FIN SI gfbSensTri ALORS TableTrie(gfsNomTable,sNomColCliquée,"COL2") SINON TableTrie(gfsNomTable,"-"+sNomColCliquée,"COL2") FIN gfbSensTri = PAS gfbSensTri // Le renvoyer 0 permet d'annuler // le tri sur la colonne seule RENVOYER 0 FIN
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le sens du tri dans les entêtes ne bouge pas.
-- Cordialement
elecoest
> [CUT]
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le sens du tri dans les entêtes ne bouge pas.
Chez moi, si la colonne est uniquement triable, le triangle change de coté sauf si la valeur est constante pour toute les lignes. Je suis en 206.
-- Emmanuel
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004
> [CUT]
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je
cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le
sens du tri dans les entêtes ne bouge pas.
Chez moi, si la colonne est uniquement triable, le triangle change de coté
sauf si la valeur est constante pour toute les lignes. Je suis en 206.
--
Emmanuel
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le sens du tri dans les entêtes ne bouge pas.
Chez moi, si la colonne est uniquement triable, le triangle change de coté sauf si la valeur est constante pour toute les lignes. Je suis en 206.
-- Emmanuel
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004
Eric
Le 16 avril 2004 à 18:17, elecoest nous disait :
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le sens du tri dans les entêtes ne bouge pas.
Chez moi, si la colonne est uniquement triable, le triangle change de coté sauf si la valeur est constante pour toute les lignes. Je suis en 206.
Ah ? Je suis en WD8 314i et j'ai toujours les 2 petits triangles tête-bêche affichés, avec ou sans loupe. Le fait de cliquer sur l'entête ne les affecte pas du tout.
-- Cordialement
Le 16 avril 2004 à 18:17, elecoest nous disait :
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je
cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le
sens du tri dans les entêtes ne bouge pas.
Chez moi, si la colonne est uniquement triable, le triangle change de coté
sauf si la valeur est constante pour toute les lignes. Je suis en 206.
Ah ? Je suis en WD8 314i et j'ai toujours les 2 petits triangles
tête-bêche affichés, avec ou sans loupe. Le fait de cliquer sur l'entête
ne les affecte pas du tout.
Voilà. On peut encore perfectionner mais, tel quel, ça fait ce que je cherchais. Le seul (tout) petit hic, c'est que le triangle indiquant le sens du tri dans les entêtes ne bouge pas.
Chez moi, si la colonne est uniquement triable, le triangle change de coté sauf si la valeur est constante pour toute les lignes. Je suis en 206.
Ah ? Je suis en WD8 314i et j'ai toujours les 2 petits triangles tête-bêche affichés, avec ou sans loupe. Le fait de cliquer sur l'entête ne les affecte pas du tout.