[aardio][Grid++ Report]usPrinter aardio版 - 打印封面、目录的小工具

 入坑aardio第一个作品,源代码仓库:https://gitee.com/gonery/usPrinter_aardio

usPrinter城通网盘
main.aardio

import win.ui;
import win.ui.menu;
import console;
import io;
import fsys.ini;
import fsys.dlg;
import access;
import win.ui.statusbar;
import com;
import com.activeX;
import process;
/*DSG{{*/
mainForm = win.form(text="usPrinter";right=1023;bottom=767;frame=1)
mainForm.add(
btnChoose={cls="button";text="选择文件";left=192;top=8;right=264;bottom=40;dr=1;dt=1;font=LOGFONT(h=-15);z=1};
btnPrint={cls="button";text="打印";left=688;top=8;right=760;bottom=40;dr=1;dt=1;font=LOGFONT(h=-15);z=8};
btnRest={cls="button";text="重置";left=864;top=8;right=936;bottom=40;dr=1;dt=1;font=LOGFONT(h=-15);z=7};
btnSet={cls="button";text="设置";left=944;top=8;right=1016;bottom=40;dr=1;dt=1;font=LOGFONT(h=-15);z=9};
lvwArchives={cls="listview";left=8;top=48;right=264;bottom=744;db=1;dl=1;dt=1;edge=1;font=LOGFONT(h=-15);fullRow=1;z=5};
lvwFiles={cls="listview";left=272;top=48;right=1016;bottom=744;db=1;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(h=-15);fullRow=1;z=6};
rdoContens={cls="radiobutton";text="打印目录";left=102;top=10;right=190;bottom=36;checked=1;dl=1;dt=1;font=LOGFONT(h=-15);z=3};
rdoCover={cls="radiobutton";text="打印封面";left=10;top=10;right=98;bottom=36;dl=1;dt=1;font=LOGFONT(h=-15);z=2};
txtPath={cls="edit";left=272;top=8;right=680;bottom=40;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(h=-15);z=4}
)
/*}}*/

/*菜单{{*/
//---------------------------------------------- 创建弹出菜单
var menuDesign = win.ui.popmenu(mainForm);
menuDesign.add(
	"封面设计",
	function(id){
		var prcs = process("/grdesigner6.exe","Cover.grf"); 
	}
);
menuDesign.add(			
	"目录设计",
	function(id){
		var prcs = process("/grdesigner6.exe","Contens.grf"); 
	}
);	
menuDesign.add();
menuDesign.add(
	"Grid++Report Designer",
	function(id){
		var prcs = process("/grdesigner6.exe")		
	}	
);
//----------------------------------------------- 创建主菜单
var menu = win.ui.menu(mainForm);
menu.add(
	"退出",
	function(id){
		mainForm.close()
	}
);
menu.add("模板设计",menuDesign);
menu.add(
	"关于",
	function(id){
		win.msgbox('封面、目录打印工具。\r\nBUG提交:\r\n30157133@qq.com');
	}
);
/*}}*/

/*窗口初始化、全局变量{{*/
stat = win.ui.statusbar(mainForm);
strIndexField="";
strCurDir=fsys.getCurDir();

_CONFILE="setting.conf";
ini=fsys.ini("\"+_CONFILE);	
indexField=ini.getSection("Index").Field;
if (!indexField){
	win.msgbox("请设置!") 
}
else{
	indexField=ini.getSection("Index").Field;
	previewColumn=ini.getSection("Preview").Column;
	orderbyField=ini.getSection("Orderby").Field;
	arrDisplay=table.array(previewColumn,2,{});
	//console.dump(orderbyField);
	for (i=1;previewColumn){
		arrDisplay[i][1]=ini.getSection("Display"+i).Field;
		arrDisplay[i][2]=ini.getSection("Display"+i).Width;
	}
}
/*}}*/
//------------------------------------------------ 数据连接字段
getDatabaseConnectionString=function(dataPath){
	var strCnn="Provider=Microsoft.Jet.OLEDB.4.0;
                Persist Security Info=False;
                Extended Properties='Excel 8.0;HDR=Yes';
                Data Source=" ++ dataPath;
	return strCnn; 
}
//------------------------------------------------ 选择excel文件
mainForm.btnChoose.oncommand = function(id,event){
	mainForm.lvwArchives.clear(true);
	mainForm.lvwArchives.gridLines=0;
	mainForm.lvwFiles.clear(true);
	mainForm.lvwFiles.gridLines=0;
	strIndexField="";
	var path = fsys.dlg.open('Excel文件|*.xls||',,,mainForm);
	if(!path){
		return false;
	} 
	mainForm.txtPath.text = path;
	var db, err = access(mainForm.txtPath.text);
	var strSQL="Select " + indexField + " From [sheet1$] Order By " + indexField; 
	mainForm.lvwArchives.gridLines=1;
	mainForm.lvwArchives.insertColumn("序号",45,,0/*_LVCFMT_LEFT*/);
	mainForm.lvwArchives.insertColumn(indexField,-1,,0/*_LVCFMT_LEFT*/);
	var i=1;
	for (rs in db.each(strSQL) ) {
		if(mainForm.rdoCover.checked){
			mainForm.lvwArchives.addItem({i;rs(indexField).value});
			i++;
			mainForm.rdoContens.disabled=true;				
		}
		elseif(mainForm.rdoContens.checked){
			if(rs(indexField).value!=strIndexField){
				mainForm.lvwArchives.addItem({i;rs(indexField).value});
				strIndexField=rs(indexField).value;
				i++;
			}
			mainForm.rdoCover.disabled=true;				
	}
		else {
			win.msgbox ("请选择“打印封面”或“打印目录”。");
		}
	}
	db.close()
	db=null		
	mainForm.lvwArchives.setSelected(1);
	strIndexField=mainForm.lvwArchives.getItemText(1,2);
	stat.setText(strIndexField);
	mainForm.lvwArchives.setFocus();
//	mainForm.lvwArchives.onFocusedChanged(1,2);
}
//------------------------------------------------ 点击左边listview
mainForm.lvwArchives.onFocusedChanged = function(item,subItem,nmListView){
	mainForm.lvwFiles.clear(true);
	mainForm.lvwFiles.gridLines=0;
	
	strIndexField = mainForm.lvwArchives.getItemText(mainForm.lvwArchives.getitem,2);	

/*待改进,数据连接、右listview显示分别处理为函数{{*/
	var cnn=com.CreateObject("ADODB.Connection");
	var rst=com.CreateObject("ADODB.Recordset");

	cnn.ConnectionString=getDatabaseConnectionString(mainForm.txtPath.text);
/*	cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
                            Persist Security Info=False;
                            Extended Properties='Excel 8.0;HDR=Yes';
                            Data Source=" + mainForm.txtPath.text;
*/
	cnn.open();
	mainForm.lvwFiles.gridLines=1;
	if(mainForm.rdoCover.checked){
		mainForm.lvwFiles.insertColumn("序号",45,,0/*_LVCFMT_LEFT*/);
		mainForm.lvwFiles.insertColumn("字段名",150,,0/*_LVCFMT_LEFT*/);
		mainForm.lvwFiles.insertColumn("值",-1,,0/*_LVCFMT_LEFT*/);
		var strSQL="Select Top 1 * From [sheet1$] Where " ++ indexField + "='" ++ strIndexField ++ "'"; 
		rst=cnn.execute(strSQL);
		for(i=0;rst.fields.count-1;1){
			mainForm.lvwFiles.addItem({i+1;rst.fields(i).name;rst.fields(i).value});
		}
	}
	elseif(mainForm.rdoContens.checked){
		for(i=1;previewColumn;1){
			mainForm.lvwFiles.insertColumn(arrDisplay[i][1],arrDisplay[i][2],,0);
		}
		strSQL="Select * From [Sheet1$] Where " ++
				indexField ++ "='" ++
				strIndexField ++ "' Order By 1 * " ++ orderbyField;
		//rst.CursorLocation=3/*_adUseClient*/;
		rst.open(strSQL,cnn,adOpenStatic,adLockOptimistic);
		rst.MoveFirst();
		var strLvw="";
		var tabContens=table.array(previewColumn,{});
		var j=1;
		while(!(rst.bof || rst.eof)){
			for(i=1;previewColumn;1){
				tabContens[i]=rst(arrDisplay[i][1]).value;
			}
			rst.MoveNext();
			j++;
			mainForm.lvwFiles.addItem(tabContens);
		}
	}
	else {
		win.msgbox("请选择“打印封面”或“打印目录”。");
	}
	rst.close();
	stat.setText(strIndexField);
/*}}*/
}
//------------------------------------------------ 重置						
mainForm.btnRest.oncommand = function(id,event){
	mainForm.lvwArchives.clear(true);
	mainForm.lvwArchives.gridLines=0;
	mainForm.lvwFiles.clear(true);
	mainForm.lvwFiles.gridLines=0;
	mainForm.rdoCover.disabled=false;
	mainForm.rdoContens.disabled=false;
	mainForm.txtPath.text="";
	stat.setText("");
}
//------------------------------------------------ 打印
mainForm.btnPrint.oncommand = function(id,event){
	if(mainForm.txtPath=="" or strIndexField==""){
		return false; 
	}
	com.activeX.regsvr32(strCurDir++"gregn6.dll");
	var report = com.CreateObject("gregn.GridppReport.6");
	
   	var i=0;
	var strSQL="Select * From [Sheet1$] Where ";
	for item,value in mainForm.lvwArchives.eachSelected(2){
		if(i==0){
			strSQL = strSQL ++ indexField ++ "='" ++ value + "'";
			i++;			
		}
		else {
			strSQL = strSQL ++ " or " ++ indexField + "='" ++ value + "'";
		
		}
	}
	strSQL=strSQL ++ " Order By " ++ indexField;
	
	if(mainForm.rdoCover.checked){
   		report.LoadFromFile(strCurDir++"Cover.grf");
	}
	elseif(mainForm.rdoContens.checked){
   		report.LoadFromFile(strCurDir++"Contens.grf");
   		strSQL=strSQL ++ ", 1 * " ++ orderbyField;
	}
	else {
		win.msgbox("请选择“打印封面”或“打印目录”。");
		return false; 
	}	
	report.DetailGrid.Recordset.ConnectionString =getDatabaseConnectionString(mainForm.txtPath.text);
/*		report.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
		Persist Security Info=False;Extended Properties='Excel 8.0;HDR=Yes';Data Source=" ++ mainForm.txtPath.text;
*/
    report.DetailGrid.Recordset.QuerySQL = strSQL;
	report.Printpreview(false);
}
//------------------------------------------------ 设置
mainForm.btnSet.oncommand = function(id,event){
	child,wb=mainForm.loadForm("\dlg\setting.aardio", /*指定父窗口*/);
	child.show();
}

mainForm.show();
return win.loopMessage();

setting.aardio

import win.ui;
import console;
import fsys.ini;
import fsys.dlg;
/*DSG{{*/
var setForm = win.form(text="Setting";right=519;bottom=359;border="thin";exmode="toolwindow";max=false;min=false)
setForm.add(
btnAdd={cls="button";text="增加";left=256;top=304;right=328;bottom=336;db=1;dl=1;font=LOGFONT(h=-15);tabstop=1;z=9};
btnDel={cls="button";text="删除";left=432;top=304;right=504;bottom=336;db=1;dl=1;font=LOGFONT(h=-15);tabstop=1;z=11};
btnRead={cls="button";text="读取";left=16;top=8;right=88;bottom=40;default=1;dl=1;dt=1;font=LOGFONT(h=-15);tabstop=1;z=13};
btnSave={cls="button";text="保存";left=432;top=8;right=504;bottom=40;dl=1;dt=1;font=LOGFONT(h=-15);tabstop=1;z=12};
btnSaveAs={cls="button";text="保存为…";left=224;top=8;right=296;bottom=40;dl=1;dt=1;font=LOGFONT(h=-15);tabstop=1;z=14};
lvwPreviewField={cls="listview";left=256;top=56;right=504;bottom=296;db=1;dl=1;dt=1;edge=1;font=LOGFONT(h=-15);fullRow=1;msel=false;tabstop=1;z=10};
static={cls="static";text="索引字段:";left=16;top=56;right=96;bottom=88;dl=1;dt=1;font=LOGFONT(h=-15);notify=1;transparent=1;z=1};
static2={cls="static";text="排序字段:";left=16;top=136;right=96;bottom=168;dl=1;dt=1;font=LOGFONT(h=-15);notify=1;transparent=1;z=2};
static3={cls="static";text="预览字段:";left=16;top=208;right=96;bottom=240;db=1;dl=1;font=LOGFONT(h=-15);notify=1;transparent=1;z=3};
static4={cls="static";text="显示宽度:";left=16;top=280;right=96;bottom=312;db=1;dl=1;font=LOGFONT(h=-15);notify=1;transparent=1;z=4};
static5={cls="static";text="一级目录关键字段(唯一值)";left=16;top=96;right=240;bottom=128;color=16711680;dl=1;dt=1;notify=1;transparent=1;z=15};
static6={cls="static";text="二级目录排序字段(值为数字)";left=16;top=176;right=240;bottom=208;color=16711680;dl=1;dt=1;notify=1;transparent=1;z=16};
static7={cls="static";text="二级目录预览字段";left=16;top=248;right=240;bottom=280;color=16711680;dl=1;dt=1;notify=1;transparent=1;z=17};
static8={cls="static";text="预览字段显示宽度,4个字符宽度值约为50";left=16;top=320;right=240;bottom=352;color=16711680;dl=1;dt=1;notify=1;transparent=1;z=18};
txtIndexField={cls="edit";left=104;top=56;right=248;bottom=88;dl=1;dt=1;edge=1;font=LOGFONT(h=-15);multiline=1;tabstop=1;z=5};
txtOrderByField={cls="edit";left=104;top=136;right=248;bottom=168;dl=1;dt=1;edge=1;font=LOGFONT(h=-15);multiline=1;tabstop=1;z=6};
txtPreviewField={cls="edit";left=104;top=208;right=248;bottom=240;db=1;dl=1;edge=1;font=LOGFONT(h=-15);multiline=1;tabstop=1;z=7};
txtPreviewWidth={cls="edit";left=104;top=280;right=248;bottom=312;db=1;dl=1;edge=1;font=LOGFONT(h=-15);multiline=1;tabstop=1;z=8}
)
/*}}*/

setForm.lvwPreviewField.insertColumn("ID",35);
setForm.lvwPreviewField.insertColumn("Field",130);
setForm.lvwPreviewField.insertColumn("Width",-1);


setForm.btnAdd.oncommand = function(id,event){
	var strPF=string.trim(setForm.txtPreviewField.text);
	var strPW=string.trim(setForm.txtPreviewWidth.text); 
	if (string.len(strPF) > 0){
		//console.dump(setForm.lvwPreviewField.count);
		setForm.lvwPreviewField.addItem({setForm.lvwPreviewField.count+1,strPF,strPW})
	}
	setForm.txtPreviewField.setFocus(0,-1);
}

setForm.btnDel.oncommand = function(id,event){
	//console.dump(setForm.lvwPreviewField.getItem());
	if(setForm.lvwPreviewField.getFocused()!=0){
		setForm.lvwPreviewField.delItem(setForm.lvwPreviewField.getFocused());
		for itemIndex in setForm.lvwPreviewField.each(){
			setForm.lvwPreviewField.setItemText(itemIndex,itemIndex,1);
		}
	}
}

setForm.btnSave.oncommand = function(id,event){
	if(string.len(string.trim(setForm.txtIndexField.text))<1 || 
		string.len(string.trim(setForm.txtOrderByField.text))<1 || 
		setForm.lvwPreviewField.count<1 ){
			return false; 
	}
	var ini=fsys.ini("\setting.conf");
	ini.write("Index","Field",setForm.txtIndexField.text);
	ini.write("Preview","Column",setForm.lvwPreviewField.count);
	ini.write("Orderby","Field",setForm.txtOrderByField.text);
	for itemIndex in setForm.lvwPreviewField.each(){
		ini.write("Display"++itemIndex,"Field",setForm.lvwPreviewField.getItemText(itemIndex,2));
		ini.write("Display"++itemIndex,"Width",setForm.lvwPreviewField.getItemText(itemIndex,3));
	}
	setForm.msgbox("配置已保存!")
}

setForm.btnRead.oncommand = function(id,event){
	var path = fsys.dlg.open('.conf|*.conf||',,,setForm);
	if(!path){
		return false;
	} 
	var ini=fsys.ini(path);
	setForm.txtIndexField.text=ini.read("Index","Field");
	setForm.txtOrderByField.text=ini.read("Orderby","Field");
	var colPreview=ini.read("Preview","Column");
	for(i=1;colPreview;1){
		setForm.lvwPreviewField.addItem({i,ini.read("Display"++i,"Field"),ini.read("Display"++i,"Width")});
	}
	
}

setForm.show();
win.loopMessage();
return setForm;

界面截图:

主界面

 设置界面

 数据预览界面、打印界面

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
锐浪Grid Report报表Web是一个基于Java的报表生成工具,它可以帮助用户方便地创建和展示数据报表。以下是它的使用手册。 1. 环境准备 在使用锐浪Grid Report报表之前,确保您已经安装好Java开发环境,并且已经配置好相关的数据库。 2. 下载和安装 您可以从官方网站上下载锐浪Grid Report报表的Web安装包。下载完成后,将其解压并将相关文件拷贝至您的Web应用程序的目录中。 3. 创建报表模板 使用锐浪Grid Report报表,首先您需要创建一个报表模板。您可以使用工具提供的可视化编辑器来设计您的报表模板。在这个编辑器中,您可以添加数据源、设置样式和布局、定义数据关联等。 4. 配置数据源 在报表模板中,您需要配置数据源以获取报表数据。锐浪Grid Report支持多种数据源类型,如数据库、Excel、CSV等。您需要填写相应的连接信息,例如数据库的连接字符串、用户名和密码等。 5. 设置参数和过滤器 如果您需要设置报表的参数和过滤器,可以在报表模板中定义它们。参数和过滤器可以帮助您动态地过滤数据,使报表更加灵活和可定制。 6. 生成和预览报表 当您完成了报表模板的设计和配置后,可以通过点击生成按钮生成报表。然后,您可以预览生成的报表,以确保它符合您的要求。 7. 导出和打印报表 锐浪Grid Report报表支持多种导出格式,如PDF、Excel、HTML等。您可以选择将报表导出为您需要的格式,并随时进行打印或分享。 总结: 锐浪Grid Report报表Web是一个强大且易于使用的报表生成工具,它提供了可视化的编辑器来设计和配置报表模板,支持灵活的数据源配置和参数设置,以及多种导出和打印选项。通过对这些功能的灵活运用,您可以轻松地创建出符合您需求的高质量报表。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值