import win.ui;
import godking.vlistEx;//控件前
/*DSG{{*/
var winform = win.form(text="富文本实例";right=759;bottom=469)
winform.add(
buttonBegin={cls="button";text="主页";left=378;top=416;right=450;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=8};
buttonClose={cls="button";text="退出";left=681;top=416;right=753;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=5};
buttonEdit={cls="button";text="编辑";left=529;top=416;right=601;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=2};
buttonNew={cls="button";text="新建";left=226;top=416;right=298;bottom=458;color=14120960;font=LOGFONT(h=-14);note=" ";z=4};
custom={cls="custom";text="自定义控件";left=208;top=8;right=752;bottom=408;ah=1;aw=1;dl=1;dt=1;z=1};
listview={cls="vlistEx";left=8;top=40;right=192;bottom=408;ah=1;dl=1;dt=1;edge=1;z=3};
plusFile={cls="plus";left=40;top=415;right=194;bottom=447;align="left";border={bottom=1;color=-6908266};dl=1;editable=1;font=LOGFONT(h=-13);notify=1;textPadding={top=6;bottom=2};z=9};
plusKey={cls="plus";left=38;top=0;right=192;bottom=32;align="left";border={bottom=1;color=-6908266};dl=1;editable=1;font=LOGFONT(h=-13);notify=1;textPadding={top=6;bottom=2};z=6};
static={cls="static";text="文件";left=10;top=423;right=38;bottom=447;ah=1;aw=1;dl=1;transparent=1;z=10};
staticFilter={cls="static";text="筛选";left=8;top=8;right=36;bottom=32;ah=1;aw=1;dl=1;transparent=1;z=7};
staticTime={cls="static";text="时间";left=44;top=437;right=192;bottom=450;ah=1;dl=1;transparent=1;z=11}
)
/*}}*/
//aardio富文本实例
import console;
import fsys.file;
import time;
import win.ui.atom;
import win.dlg.message;
import godking.message;
import godking.inputBox;
import web.view;
import yang.ice_editor;
import crypt.bin;
//工具-编码-GUID生成器
var atom,hwnd = winform.atom("B0768BAB-8031-4F84-89BB-732B2D59D7E9");
if(!atom){
win.quitMessage();
return;
}
win.setPos(winform.hwnd,0,0,1024,768)
var wb = web.view(winform.custom);
wb.enableDefaultContextMenus(false); //禁止鼠标右键
topHtml = /**
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">html,body{ height:100%; } </style>
</head>
<body style="background:#A6CAF0;overflow:hidden;">
<center>
<br><br>
<font size="72pt" color="#00753D"><b>欢迎使用富文本实例</b></font>
<br>
**/
footHtml = /**
</center>
</body></html>
**/
html = topHtml+`
<table width=85%><tr><td>
<br>目录:rich
<br>格式:.txt(其实是html富文本)
<br>新建:指定文件名,或自动日期(1).txt,最大值100个
<br>维护:右键菜单,更名或删除
<br>文字:直接复制粘贴
<br>图片:截图、图片文件复制粘贴,保存为 data:image/png
<br>表格:网页表格、Word表格、Excel表格(Notepad可转换为无边框)复制粘贴
<br>excel表格:可复制为图片,格式为位图
</td></tr></table>
`+footHtml
nohtml = topHtml++`
<table width=85%><tr><td>
<br>无内容
</td></tr></table>
`++footHtml
wb.html = html;
var saveDir = io.fullpath(".")++"\rich\";
if _STUDIO_INVOKED saveDir="D:\1_aardio\rich\";
//console.log(saveDir)
if !io.exist(saveDir) io.createDir(saveDir);
var saveFile,title = null,null;
var dataTable,dataTableClone = {},{};
var today = time(time.now(),"%Y%m%d"); //全局取值
//读目录
winform.readDirOld = function(){
dataTable = {};
dataTable['fields']={"file"};
fsys.enum( saveDir, "*.txt",
function(dirPath,fileName){
table.push(dataTable,{"file"=fileName});
}
);
//console.dump(dataTable)
}
//读目录:修改时间排序
winform.readDir = function(){
dataTable = {};
dataTable['fields']={"file","fileTime"};
fsys.enum( saveDir, "*.txt",
function(dirPath,fileName){
var f = fsys.file(saveDir++fileName,"r");
fileTime = time(tonumber(f.getTime().write),"%Y-%m-%d %H:%M:%S")
f.close();
table.push(dataTable,{"file"=fileName,"fileTime"=fileTime});
}
);
//时间大到小排序
table.sort(dataTable,function(b){
return b.fileTime<owner.fileTime
});
dataTableClone = table.clone(dataTable)
//console.dump(dataTable)
}
winform.toVlist = function(){
if #dataTable {
winform.listview.onlyText = true;
winform.listview.setTable(dataTable);
winform.listview.setColumns("文件名称"); //重置标题
}
}
winform.readDir();
winform.toVlist();
winform.plusKey.editBox.wndproc = function(hwnd,message,wParam,lParam){
if(message == 0x101/*_WM_KEYUP*/){
//console.dump(dataTableClone); //提前深拷贝
if !#winform.plusKey.text dataTableFilter=table.clone(dataTableClone)
if #winform.plusKey.text {
dataTableFilter = table.filter(dataTableClone,function(v,index){
//console.dump(v.file,tostring(winform.plusKey.text))
return string.match(v.file,tostring(winform.plusKey.text))
});
dataTableFilter['fields']={'file'};
}
//console.dump("filter:",dataTableFilter);
winform.listview.onlyText = true;
winform.listview.setTable(dataTableFilter);
winform.listview.setColumns("文件名称"); //重置标题
}
//无返回值则继续调用默认回调函数
}
winform.listview.onClick = function(row/*行*/,col/*列*/){
/*鼠标左键点击项目事件*/
//row=0空行,getText报错
if row {
//var fileName = winform.listview.getText(row, col);
var fileName,fileTime = dataTable[row]['file'],dataTable[row]['fileTime']
saveFile = saveDir++fileName;
title = string.match(saveFile,`.*\\(.*)`);
当前文件
winform.plusFile.text = fileName;
winform.staticTime.text = fileTime;
//预览
//console.log(saveFile,title);
wb.html = string.load(saveFile);
if !#string.load(saveFile) wb.html = nohtml
}
}
/**
winform.listview.onEditBegin = true;
winform.listview.onEditBegin = function(row/*行*/,col/*列*/){ //允许编辑
return true;
}
winform.listview.onEditEnd = function(row/*行*/,col/*列*/){ //允许编辑
return true;
}
winform.listview.onnotify = function(id,code,ptr){
if( code == 0xFFFFFF9B/*_LVN_ITEMCHANGED*/ ){
var row = winform.listview.selIndex;
}
}
**/
winform.listview.onSortColumn = function(col,desc){
/*点击列标题进行排序。col:列号,从1开始。desc:是否倒序。*/
owner.sort( col, desc, 0 /*数据转换:0默认 1时间 2数值 3文本*/ ,false /*使用微软api进行文本排序*/ );
}
winform.listview.onRClick = function(row/*行*/,col/*列*/){
/*鼠标右键点击项目事件*/
//var fileName = owner.getText(row, col);
//var fileName = dataTable[row][dataTable['fields'][col]]
var fileName = dataTable[row]['file']
//console.log(fileName);
winform.popmenu = win.ui.popmenu(winform);//创建弹出菜单
winform.popmenu.addTable( {
{ "更名";
function(id){
//修改库 show = function(msg,dlgValue,isPassword=false);
var new = godking.inputBox( winform );
var newFile = new.show("请输入新文件名:",fileName,false);
if #newFile {
if io.exist(saveDir++newFile) {
winform.msgErr("文件已存在!");
} else {
if !io.exist(saveDir++newFile) {
var tab = io.splitpath(newFile);
if !#tab.ext newFile += ".txt";
//console.log(saveDir+fileName,saveDir++newFile)
io.rename(saveDir+fileName,saveDir++newFile);
winform.msgOk("更名成功!"); //x
} else {
winform.msgErr("更名失败!");
}
}
} else {
winform.msgErr("未输入新文件名!");
}
winform.init(); //主页
}
};
{ "删除";
function(id){
var currFile = saveDir++fileName;
if winform.msgboxTest("是否真的删除?") {
//fsys.file(currFile).close()
//fsys.file(currFile).delete()
io.remove(currFile);
winform.msgOk("删除成功!");
winform.init(); //主页
}
}
};
} )
winform.popmenu.popup();
}
winform.buttonNew.oncommand = function(id,event){
//新建
var newFile,newFileFlag = null,null
if !#winform.plusFile.text {
newFile = saveDir++tostring(today)++".txt";
if !io.exist(newFile){
newFileFlag = true;
} else {
for(i=1;100;1){
newFile = saveDir++tostring(today)++"("++i++")"++".txt";
if !io.exist(newFile) {
newFileFlag = true;
break;
}
}
}
} else {
newFile = saveDir++winform.plusFile.text;
var tab = io.splitpath(newFile);
if !#tab.ext newFile += ".txt";
if !io.exist(newFile) {
newFileFlag = true;
} else {
winform.msgOk("文件已存在!")
}
}
//console.log("newFile:",newFile,newFileFlag)
if newFileFlag {
string.save(newFile,"");
winform.init(); //主页
}
}
winform.init = function(){
winform.plusFile.text = "";
winform.staticTime.text = "";
winform.readDir();
winform.toVlist();
wb.html = html;
}
winform.buttonBegin.oncommand = function(id,event){
//主页
winform.init()
}
winform.buttonEdit.oncommand = function(id,event){
if !saveFile return ;
yang.ice_editor.start(,function(html,text){
/*回调函数对富文本进行处理*/
wb.html = html;
//自动保存
string.save(saveFile,html);
winform.msgOk("保存成功!");
},title,string.load(saveFile));
}
winform.buttonClose.oncommand = function(id,event){
win.quitMessage();
}
winform.show();
win.loopMessage();
aardio的webview富文本实例
于 2023-07-25 22:09:15 首次发布
该代码示例展示了一个基于Aardio的富文本实例,包括文件管理、按钮操作(如主页、新建、编辑、退出)、列表视图排序及过滤功能,以及右键菜单的实现,支持文本、图片、表格等内容的处理。
摘要由CSDN通过智能技术生成