入坑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;
界面截图:
主界面
设置界面
数据预览界面、打印界面