aardio 文档

aardio 范例: 树形文件视图

//树形文件视图
import win.ui;
/*DSG{{*/
var winform = win.form(text="树形文件视图";right=961;bottom=539;bgcolor=16777215)
winform.add(
cbDrivers={cls="combobox";left=24;top=12;right=236;bottom=36;dl=1;dt=1;edge=1;items={};mode="dropdown";z=3};
editStatus={cls="plus";left=266;top=509;right=939;bottom=535;align="right";border={bottom=1;color=-6908266};db=1;dl=1;dr=1;editable=1;font=LOGFONT(h=-13);textPadding={top=6;bottom=2};z=4};
static={cls="static";left=253;top=15;right=937;bottom=493;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;z=2};
treeview={cls="treeview";left=24;top=40;right=236;bottom=494;asel=false;bgcolor=16777215;db=1;dl=1;dt=1;edge=1;z=1}
)
/*}}*/

import win.ui.explorer;
var explorer = win.ui.explorer( winform.treeview );//自动检测顶部的 combobox 并转换为驱动器下拉列表

//打开指定目录,不指定参数则列出所有分区。
explorer.loadFile();

import web.form;
var wb = web.form( winform.static );

wb.shellFolderSelectionChanged = function(filePath) { 
    winform.editStatus.text = filePath;
}

explorer.onClick = function(filePath,hItem ){
    if( fsys.isDir( filePath ) ) {
         wb.goDirectory( filePath ); 
         /*
         wb.wait();
         winform.editStatus.text = wb.document.currentViewMode

         打开目录以后, wb.document 会变为 IShellFolderViewDual 接口对象 
         https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nn-shldisp-ishellfolderviewdual2
         */

    }
    else  winform.editStatus.text = filePath;  
}

import process;
import win.ui.menu;
import fsys.remove;
explorer.onRightClick = function(filePath,hItem,x,y){
    var hItem,tvht = winform.treeview.hitTest(x,y,true);
    var menu = win.ui.popmenu(winform)
    menu.add("浏览...",
        function(){
            process.exploreSelect(filePath); 
        }
    )

    menu.add("删除",
        function(){
             if(winform.msgboxTest(`确认要删除 "` + filePath + `" 吗? 删除后不能恢复!`)){ 
                if( fsys.remove(filePath) ){ 
                    winform.treeview.delItem(hItem);
                }
            }
        }
    ) 

    menu.add("刷新",
        function(){
            explorer.reloadFile(filePath,hItem);
        }
    )
    menu.popup(x,y,true);   
}

import win.util.changeNotification;
var chgDir = win.util.changeNotification(winform);
chgDir.updateExplorer = function(){
    //当前目录下文件已变更,刷新节点
    explorer.reloadFile( chgDir.currentDir,chgDir.currentItem );
}

chgDir.onMakeDir = chgDir.updateExplorer;
chgDir.onCreate = chgDir.updateExplorer
chgDir.onRenameItem = chgDir.updateExplorer
chgDir.onRenameFolder = chgDir.updateExplorer
chgDir.onDelete = chgDir.updateExplorer
chgDir.onRemoveDir = chgDir.updateExplorer

explorer.onSelChanged = function(filePath,hItem){
    chgDir.currentDir = filePath;
    chgDir.currentItem = hItem;

    //监视目录下文件变更
    chgDir.clear().watch(filePath,false).register();
}

winform.show(); 
win.loopMessage();

Markdown 格式