We have introduced how to set background color for the headers of DataGrid in Flex, sometimes, we also need to get the row and column value in DataGrid, do you know how to do it? The following is a simple tip for this. Hope you can enjoy!
Extend to DataGrid, if use listItems property, you can get an instance of the dialog item. Compare between x, y, width, height and the location of cell (x, y), you can get the row and column value. Normally the source code similar:
public function checkRendererPoint(p:Point):void { var row:int; var col:int; var rowLength:int; var colLength:int; var rendererRect:Rectangle; var renderer:DataGridItemRenderer; rowLength = listItems.length; for(row = 0; row < rowLength; row++) { colLength = listItems[row].length; for(col = 0; col < colLength; col++) { renderer = listItems[row][col] as DataGridItemRenderer; rendererRect = new Rectangle(renderer.x, renderer.y + headerHeight, renderer.x + renderer.width, renderer.y + renderer.height + headerHeight ); if( rendererRect.x <= p.x && rendererRect.width >= p.x && rendererRect.y <= p.y && rendererRect.height>= p.y ) { trace("hit : ", renderer, row, col); } } } }
However, if you scrolled the DataGrid, could you also get row, column? In fact, only need to count verticalScrollPosition and horizontalScrollPosition, it will work fine!
BTW, do you have try to look at your first program after you writing programs for N or NN years? I think that will be very interesting for most programmers.