2010-07-03 3 views

Répondre

1

Les graphiques appelle ce tirage qui sont AdvancedDataGridBaseEx.as des lignes 5468-5471:

var g:Graphics = s.graphics; 
g.clear(); 
g.beginFill(getStyle("rollOverColor")); //all I really wanted was to decrease the alpha here :(
g.drawRect(0, 0, w, h - 0.5); 
g.endFill(); 

Pour se débarrasser de cela, vous pouvez le faire dans une classe qui étend AdvancedDataGrid:

package 
{ 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 

    import mx.controls.AdvancedDataGrid; 

    public class AdvancedDataGridMinusHighlights extends AdvancedDataGrid 
    { 
     public function AdvancedDataGridMinusHighlights() 
     { 
      super(); 
     } 

     override protected function mouseOverHandler(event:MouseEvent):void 
     { 
      super.mouseOverHandler(event); 

      var s:Sprite = Sprite(
       selectionLayer.getChildByName("headerSelection")); 

      if(s) s.graphics.clear(); 

     } 

     override protected function mouseDownHandler(event:MouseEvent):void 
     { 
      super.mouseDownHandler(event); 

      var s:Sprite = Sprite(
       selectionLayer.getChildByName("headerSelection")); 

      if(s) s.graphics.clear(); 
     } 

    } 
} 

Bien que ce soit une solution extrêmement inélégante puisque tout ce qu'il fait est clair ce qui a déjà été dessiné. Parce qu'il y a tellement d'autres conneries dans les gestionnaires de souris dans AdvancedDataGridBaseEx, vous ne serez pas capable de personnaliser l'apparence de l'en-tête.

Une solution légèrement plus élégante (hack) consiste à copier la source complète d'AdvancedDataGridBaseEx dans le paquetage mx.controls (un hack dont plusieurs d'entre vous sont conscients et conscient des conséquences).

1

Désolé de poster une réponse différente mais je n'ai pas assez de 'points' pour faire un commentaire direct à ce sujet. Aujourd'hui, j'ai rencontré exactement le même problème et j'ai trouvé ce post très utile.

-moi si je me trompe, mais je pense que une ligne est manquante dans le mouseDownHandler qui empêche AdvancedDataGrid de bien trier les données (si le tri des données est activée):

override protected function mouseDownHandler(event:MouseEvent):void 
{ 
    super.mouseDownHandler(event); 

    var s:Sprite = Sprite(
     selectionLayer.getChildByName("headerSelection")); 

    if(s) s.graphics.clear(); 
} 

Bien qu'il puisse être utile.

Questions connexes