• 超級強大的DataGrid組件

    0
    PHP HTML C/C++ Go DataGrid 6796 次瀏覽
    DataGrid 組件允許用戶顯示和操作多列數據。
    當 DataGrid 實例從單擊或 Tab 鍵切換中獲得焦點時,您可以使用以下按鍵來控制它: 
     
    說明
    向下箭頭 如果正在編輯單元格,插入點將移到單元格文本的末尾。如果單元格不可編輯,則向下箭頭處理選區的方式與 List 組件相同。
    向上箭頭 如果正在編輯單元格,插入點將移到單元格文本的開頭。如果單元格不可編輯,則向上箭頭處理選區的方式與 List 組件相同。
    向右箭頭 如果正在編輯單元格,插入點將向右移動一個字符。如果單元格不可編輯,內容向左移動一水平滾動行。
    向左箭頭 如果正在編輯單元格,插入點將向左移動一個字符。如果單元格不可編輯,內容向右移動一水平滾動行。
    Enter 如果正在編輯單元格,則會提交更改,并且插入點將移到同一列中單元格的下一行。
    Shift+Enter 如果正在編輯單元格,則會提交更改,并且插入點將移到同一列中單元格的上一行。
    Tab 如果下一個單元格可編輯,將焦點移動到下一個單元格,并選中該單元格的所有文本;否則,將焦點移到下一個對象。
    Shift+Tab 如果前一個單元格可編輯,將焦點移動到前一個單元格,并選中該單元格的所有文本;否則,將焦點移到前一個對象。


    以下示例演示數據網格的屬性。從"庫"面板中拖動相關組件到舞臺(或直接通過 ActionScript 代碼創建組件實例),并對實例命名。
    在主時間軸中選擇第一幀,打開"動作"面板,然后輸入以下代碼:

    my_dg.setColumnNames(["id","name","score"]);
    my_dg.addItem({id:0,name:"Clark",score:3135});
    my_dg.addItem({id:1,name:"Bruce",score:403});
    my_dg.addItem({id:2,name:"Peter",score:25});



    通過設置 CellRenderer 創建類似 List 的 DataGrid。
    首先,創建數據網格的行渲染器 DataGridRowRenderer 類(繼承于 ListCellRenderer)。

    package {
    	import flash.text.TextField;
    	import shinater.swing.DataGrid;
    	public class DataGridRowRenderer extends ListCellRenderer {
    		public override function setSize(width:Number, height:Number):void {
    			_width = width;
    			_height = height;
    			repaint();
    		}
    		public override function repaint():void {
    			var dataGrid:DataGrid = DataGrid(getOwner());
    			var x:Number = textField.x;
    			for (var i:int = 0,columnCount:uint = dataGrid.getColumnCount(); i<columnCount; i++) {
    				var txt:TextField;
    				if (i == 0) {
    					txt = textField;
    				} else {
    					var n:String = "textField" + i;
    					txt = getChildByName(n) as TextField;
    					if (txt == null) {
    						txt = new TextField();
    						txt.name = n;
    						addChild(txt);
    					}
    					txt.defaultTextFormat = textField.defaultTextFormat;
    					txt.x = x;
    					txt.y = textField.y;
    					txt.height = textField.height;
    				}
    				txt.text = getData()[dataGrid.getColumnName(i)];
    				txt.width = dataGrid.getColumnWidth(i);
    				x += txt.width;
    			}
    			skin.width = _width;
    			skin.height = _height;
    			if (focusRectSkin != null) {
    				focusRectSkin.width = _width;
    				focusRectSkin.height = _height;
    			}
    		}
    	}
    }

    同上例,在主時間軸中選擇第一幀,打開"動作"面板,然后輸入以下代碼:

    my_dg.setCellRenderer(DataGridRowRenderer);
    my_dg.setColumnNames(["id","name","score"]);
    my_dg.addItem({id:0,name:"Clark",score:3135});
    my_dg.addItem({id:1,name:"Bruce",score:403});
    my_dg.addItem({id:2,name:"Peter",score:25});

     


    資料來源于:http://原網站已經失效/FlashSwing/Help/DataGrid.html

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色