Il a été un certain temps depuis que je suis touché AS2. Apparemment, je ne pouvais pas faire fonctionner les choses sans hacks.
Normalement, vous devriez pouvoir sortir avec dg.dispatchEvent ({type: "headerRelease"}), mais non, cela ne semble pas fonctionner. J'ai utilisé l'option Debug> List Objects pour obtenir le nom d'un en-tête de colonne, puis appelé la fonction onRelease(). Apparemment, cela ne fonctionnait que dans un onEnterFrame, que j'ai ensuite supprimé.
Voici mon code, construit avec l'aide de la documentation:
//hacky boolean to check if what we asked for was done
var selfClicked:Boolean = false;
myDP = new Array({name:"Chris", price:"Priceless"},{name:"Daisy", price:"Adequate"}, {name:"Nigel", price:"Cheap"});
dg.dataProvider = myDP;
onEnterFrame = function(){
if(!selfClicked){
//ask nicely
dg.dispatchEvent({type:"headerRelease"});
//no ? oh well...
dg.content_mc.header_mc.hO0.onRelease();
//fix for header label
dg.content_mc.header_mc.fHeaderCell0._y = dg.content_mc.header_mc.fHeaderCell1._y;
selfClicked = true;
delete onEnterFrame;
}
}
this.headerRelease = function(eventObject){
//nicely hidden debugging gem here, thanks Jen deHaan!
trace(mx.data.binding.ObjectDumper.toString(eventObject));
}
dg.addEventListener("headerRelease", this);
HTH, George
Salut George. Merci beaucoup, c'est génial et force en effet un placement de la flèche sur la grille. Quelques questions si je peux. Qu'est-ce que la ligne d'événement de répartition fait car elle semble fonctionner quand elle est supprimée. Lorsque je clique sur la colonne 1 après l'exécution du code, le texte de l'en-tête se déplace différemment de la façon dont il se déplace pour les autres colonnes (abit ifficult à expliquer!). Un grand merci quand même. – Dave
Salut Dave. Habituellement, vous devriez être capable d'envoyer un événement depuis le composant et cela devrait l'avoir corrigé. Vous pouvez effacer cela, moi qui voulais montrer la tentative de le faire d'une manière moins hacky. Je vois ce que vous voulez dire, le texte de l'en-tête se déplace en diagonale, pas horizontalement. Je pense que c'est peut-être parce que le clip de flèche de tri n'est pas créé tant que l'entête n'est pas pressé et que nous le piratons, le texte est légèrement décalé (je ne sais pas exactement pourquoi), mais vous pouvez le corriger si vous ajoutez ligne suivante après le hO0.onRelease(): dg.content_mc.header_mc.fHeaderCell0._y = dg.content_mc.header_mc.fHeaderCell1._y; –
Merci George. J'ai trouvé que cela fonctionne aussi bien dg.content_mc.header_mc.hO0.onPress(); dg.content_mc.header_mc.hO0.onRelease(); Il semble faire la pression complète et la libération et cela le corrige. Agréable! Merci encore – Dave