PB:数据窗口的读、写

一、获取行总数、列总数

	//获取列总数
	int li_colCount;
	li_colCount = dw_1.Describe("DataWindow.Column.Count");
	
	//获取行总数
	int li_rowCount;
	li_rowCount= dw_1.Describe("DataWindow.Row.Count");
	
	//遍历每列
	int li_i;
	for li_i =1 to integer(destDw.Describe("DataWindow.Column.Count")) 			
		//TO DO ...
	next

二、获取正在"被编辑的"单元格的行号、列号

  • getRow()、getColumn()函数可以获取正在被编辑的单元格的行列号
    	int li_currentRow;
    	int li_currentCol;
    	li_currentRow = dw_1.getRow();
    	li_currentCol= dw_1.getColumn();
    

三、获取列名称、列类型

  • 已知列号
    	//获取第1列的列名
    	String ls_ColName;
    	ls_ColName=dw_1.Describe("#" + string(1) +".name") ; 	
    	
    	//获取第1列的列类型
    	String ls_ColTpye;
    	ls_ColTpye=dw_1.Describe (ls_ColName+ ".ColType" ); 
    

四、从单元格读数据

4.1 读数据

  • 已知行号、列号
    	string ls_value;
    	ls_value = dw_1.object.data[1,2];  //获取第1行第2列的数据
    

4.2 读 正在"被编辑的"单元格的数据

  • getRow()、getColumn()函数可以获取正在被编辑的单元格的行列号
    	string ls_value;
    	ls_value= dw_1.object.data[dw_1.getRow(),dw_1.getColumn()];
    

4.3 读 正在"被选中的"单元格的数据

  • 有些单元格不可编辑,但允许被选中,所以getRow()、getColumn()函数无法获取行列号。
  • primary[row]数组可以获取被选中单元格的数据,但可能产生异常。
  • primary[row]所需”行号“可以通过鼠标事件传入。
  • primary[row]似乎只能由事件传入的dwObject调用,不可以直接调用dw_1.object.Primary[…]
    //
    // event:鼠标左击或右击事件
    // param1:long row - 传入当前被选中的行号
    // param2: dwObject dwo - 
    //
    Try
    	//获取当前正在被选中的单元格的值
    	String ls_value;
    	ls_value = string(dwo.Primary[row]);  //只能通过dwo获取Primary,用【dw_1.object.Primary[]】会获取失败
    	
    	Catch(RunTimeError e)
    		//Primary可能引发异常
    		MessageBox('异常',e.getmessage());  
    End Try
    

五、向单元格写数据

  • 已知行号、列名称
    	String ls_value='v';
    	dw_1.object.stuName[1] = ls_value;   //设置第1行stuName列的值
    	dw_1.setItem(1,'stuName',ls_value);  //设置第1行stuName列的值
    
发布了70 篇原创文章 · 获赞 13 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/forchoosen/article/details/104993072