2010-07-03 52 views

回答

1

圖形調用平局是在AdvancedDataGridBaseEx.as從線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(); 

爲了擺脫這個你可以在擴展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(); 
     } 

    } 
} 

雖然這是一個非常不雅的解決方案,因爲它所做的只是清楚已經繪製的內容。由於AdvancedDataGridBaseEx中的鼠標處理程序中存在太多其他垃圾,因此您將無法輕鬆定製頁眉的外觀。

稍微更優雅的解決方案是將AdvancedDataGridBaseEx的完整源代碼拷貝到mx.controls包中(我相信你們中的許多人都知道並且同樣意識到了後果)。

1

很抱歉發佈了一個不同的答案,但我沒有足夠的'點'來直接評論這個。今天我遇到了完全相同的問題,並發現這個帖子非常有幫助。

糾正我,如果我錯了,但我覺得一個線是以防止AdvancedDataGrid從正確排序的數據(如果啓用數據排序)的mouseDownHandler丟失:

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

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

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

雖然它可能是有用的。