找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 463|回复: 2

[教程] 超级记事本案例

[复制链接]
  • TA的每日心情
    无聊
    2024-3-3 20:52
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    10

    主题

    5

    回帖

    116

    积分

    版主

    积分
    116
    来自: 中国广东广州
    发表于 2024-1-22 14:13:16 | 显示全部楼层 |阅读模式 来自: 中国广东广州
    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    本帖最后由 axuanup 于 2024-1-22 14:23 编辑
    1. import fonts.ionicons;
    2. import fonts.fontAwesome;
    3. import fonts.imtip;
    4. import win.ui;
    5. /*DSG{{*/
    6. mainForm = win.form(text="超级记事本";left=0;top=0;right=745;bottom=474;bgcolor=15780518;border="none";max=false)
    7. mainForm.add(
    8. bk={cls="bk";text='\uF040';left=5;top=5;right=38;bottom=25;dl=1;dt=1;font=LOGFONT(h=-18;name='FontAwesome');z=9};
    9. listbox={cls="listbox";left=5;top=60;right=182;bottom=470;db=1;dl=1;dt=1;integralHeight=0;items={};vscroll=1;z=1};
    10. ["plus_删除"]={cls="plus";text='\uF4C5';left=78;top=36;right=108;bottom=56;dl=1;dt=1;font=LOGFONT(h=-18;name='Ionicons');notify=1;z=4};
    11. ["plus_同步"]={cls="plus";text='\uF0E2';left=148;top=36;right=178;bottom=56;dl=1;dt=1;font=LOGFONT(h=-18;name='FontAwesome');notify=1;z=7};
    12. ["plus_命名"]={cls="plus";text='\uF472';left=43;top=36;right=73;bottom=56;dl=1;dt=1;font=LOGFONT(h=-18;name='Ionicons');notify=1;z=5};
    13. ["plus_导入"]={cls="plus";text='\uF4C7';left=113;top=36;right=143;bottom=56;dl=1;dt=1;font=LOGFONT(h=-18;name='Ionicons');notify=1;z=6};
    14. ["plus_新建"]={cls="plus";text='\uF07C';left=8;top=36;right=38;bottom=56;dl=1;dt=1;font=LOGFONT(h=-18;name='imtip');notify=1;z=2};
    15. richedit={cls="richedit";left=188;top=32;right=742;bottom=470;db=1;dl=1;dr=1;dt=1;link=1;multiline=1;vscroll=1;z=3};
    16. static={cls="static";text="超级记事本";left=36;top=5;right=167;bottom=27;center=1;dl=1;dt=1;transparent=1;z=8}
    17. )
    18. /*}}*/

    19. import console;
    20. import fsys;
    21. import fsys.dlg;
    22. import godking.message;
    23. import win.ui.tooltip;
    24. import process;


    25. //实例化消息框
    26. var m = godking.message(mainForm)

    27. //初始化窗体
    28. var init = function() {
    29.     //判断路径是否存在
    30.     var fullpath = io.exist("\data")
    31.     if (fullpath) {
    32.         //搜索路径,返回目录下文件,目录数组
    33.         var fileList = fsys.list("\data")
    34.         mainForm.listbox.items = fileList;
    35.         mainForm.listbox.selIndex = 1;
    36.         mainForm.richedit.text = string.load("\data"++mainForm.listbox.selText)
    37.     }
    38.     mainForm.text = "超级记事本 V1.0.7"
    39.     mainForm.static.text = mainForm.text;
    40.    
    41.     import win.ui.menu;
    42.     //创建弹出菜单
    43.     mainForm.popmenu = win.ui.popmenu(mainForm);
    44.     mainForm.popmenu.add('打开路径', function(id) {
    45.         if (#mainForm.listbox.items > 0) {
    46.             process.explore(fsys.getParentDir("\data"++mainForm.listbox.selText))
    47.         }
    48.     })
    49.    
    50.     //如果 winform 的最大化按钮设为隐藏(false),则最大化按钮以及可拖动边框不会出现。
    51.     import win.ui.simpleWindow;
    52.     win.ui.simpleWindow(mainForm);
    53.    
    54.     //在所有者窗口 winform 上创建 tooltip 提示控件
    55.     var tooltipCtrl = win.ui.tooltip(mainForm);
    56.     tooltipCtrl.addTool(mainForm.plus_新建, "新建txt文件")
    57.     tooltipCtrl.addTool(mainForm.plus_删除, "删除txt文件")
    58.     tooltipCtrl.addTool(mainForm.plus_命名, "重命名txt文件")
    59.     tooltipCtrl.addTool(mainForm.plus_导入, "导入txt文件")
    60.     tooltipCtrl.addTool(mainForm.plus_同步, "同步txt文件列表")
    61.     win.center(mainForm.hwnd, 0)
    62.    
    63.    
    64.     //***************************************************************************************
    65.     //下面创建托盘图标
    66.         import win.util.tray;
    67.         mainForm.tray = win.util.tray(mainForm)  
    68.         mainForm.tray.tip = "超级记事本" //提示超级记事本
    69.         
    70.         mainForm.onMinimize = function(lParam){
    71.         mainForm.tray = win.util.tray(mainForm);
    72.         mainForm.show(false); //隐藏窗口
    73.         return true;//阻击默认消息传递,取消最小化过程
    74.         }

    75.         mainForm.onTrayMessage = {
    76.                 //鼠标右击
    77.                 [0x205/*_WM_RBUTTONUP*/  ] = function(wParam){
    78.                     //弹出托盘菜单以前,一定要前置主窗口中,避免不点击菜单不会消失,父窗口隐藏也要这样做
    79.                     win.setForeground(mainForm.hwnd)
    80.                      
    81.                         /*
    82.                         下面创建托盘弹出菜单。
    83.                         如果程序要开机启动到托盘,最好在这里创建菜单,在用户点击前不要创建菜单,
    84.                         避免系统启动时 DPI 缩放前创建的菜单字体偏小(出现这情况的机率很小)。
    85.                         如果不想重复创建菜单最好写到一个库里,然后在这里 import 即可避免上述问题。
    86.                         */
    87.                         import win.ui.menu;
    88.                         mainForm.popmenu = win.ui.popmenu(mainForm);//创建弹出菜单
    89.                         mainForm.popmenu.add('&打开软件',function(id){
    90.                                 //在下面输入菜单响应代码
    91.                                 mainForm.show(true);
    92.                         });
    93.                         mainForm.popmenu.add();//分隔线
    94.                         mainForm.popmenu.add('&关闭软件',function(id){ mainForm.close() })            
    95.                                     
    96.                     mainForm.popmenu.popup();
    97.                     mainForm.popmenu.close();
    98.                 };
    99.                 [0x201/*_WM_LBUTTONDOWN*/] = function(wParam){
    100.                         //鼠标左击
    101.                         mainForm.show(true);
    102.                 };
    103.         }
    104.         //***************************************************************************************
    105.         
    106.         
    107.         //请先在 richedit 控件的设计器属性中指定「识别链接」为 true
    108.         mainForm.richedit.onHyperlink =function(message,href){
    109.                 //在链接上弹起鼠标左键
    110.                 if( message = 0x202 /*_WM_LBUTTONUP*/ ) {
    111.                         import process;
    112.                         process.openUrl(href);
    113.                 }
    114.         }
    115.         
    116.         //多行文本框如下支持按 tab 输入制表符,控件设计属性「tab控制键」必须为 false(默认值)。
    117.         mainForm.richedit.isDialogMessage = function(hParent,msg){}
    118. }
    119. init()



    120. mainForm.listbox.wndproc = function(hwnd, message, wParam, lParam) {
    121.     select (message) {
    122.         case 0x205 /*_WM_RBUTTONUP*/ {
    123.             var x, y = win.getMessagePos();
    124.             var item = mainForm.listbox.hitTest(x, y, true);
    125.             if (item) {
    126.                 mainForm.listbox.selIndex = item;
    127.                 mainForm.popmenu.popup(x, y, true)
    128.             }
    129.         }
    130.     }
    131. }

    132. mainForm.listbox.oncommand = function(id, event) {
    133.     var fullpath = io.exist("\data")
    134.     if (fullpath) {
    135.         if (#mainForm.listbox.items > 0) {
    136.             var s = string.load("\data"++mainForm.listbox.selText)
    137.             mainForm.richedit.text = s;
    138.         }
    139.         
    140.     }
    141. }

    142. mainForm.richedit.enablePopMenu() //开启右键菜单
    143. mainForm.richedit.onChange = function() {
    144.     if (owner.onModified) owner.onModified(true);
    145.     var fullpath = io.exist("\data")
    146.     if (fullpath) {
    147.         string.save("\data"++mainForm.listbox.selText, owner.text, false)
    148.     }
    149.    
    150. }

    151. mainForm.plus_新建.skin(
    152.     background = {
    153.         hover = "/res/images/btn-hover.png";
    154.         focus = "/res/images/btn-focus.jpg";
    155.         active = "/res/images/btn-active.png";
    156.         disabled = "/res/images/btn-disabled.png";
    157.     }
    158. )

    159. mainForm.plus_新建.oncommand = function(id, event) {
    160.     var name = m.input("新建文件", false)
    161.     if (name) {
    162.         string.save("\data"++name++".txt", "", true)
    163.         var fileList = fsys.list("\data")
    164.         mainForm.listbox.items = fileList;
    165.         mainForm.listbox.selText = name ++".txt";
    166.         mainForm.richedit.text = string.load("\data"++mainForm.listbox.selText)
    167.     }
    168. }

    169. mainForm.plus_删除.skin(
    170.     background = {
    171.         hover = "/res/images/btn-hover.png";
    172.         focus = "/res/images/btn-focus.jpg";
    173.         active = "/res/images/btn-active.png";
    174.         disabled = "/res/images/btn-disabled.png";
    175.     }
    176. )

    177. mainForm.plus_删除.oncommand = function(id, event) {
    178.     var fullpath = io.exist("\data")
    179.     if (fullpath) {
    180.         if (#mainForm.listbox.items > 0) {
    181.             var state = m.ask("是否删除->"++mainForm.listbox.selText)
    182.             if (state) {
    183.                 fsys.delete("\data"++mainForm.listbox.selText);
    184.                 var fileList = fsys.list("\data")
    185.                 mainForm.listbox.items = fileList;
    186.                 mainForm.listbox.selIndex = 1;
    187.                 mainForm.richedit.text = string.load("\data"++mainForm.listbox.selText)
    188.             }
    189.             
    190.         }
    191.     }
    192. }

    193. mainForm.plus_命名.skin(
    194.     background = {
    195.         hover = "/res/images/btn-hover.png";
    196.         focus = "/res/images/btn-focus.jpg";
    197.         active = "/res/images/btn-active.png";
    198.         disabled = "/res/images/btn-disabled.png";
    199.     }
    200. )
    201. mainForm.plus_命名.oncommand = function(id, event) {
    202.     var fullpath = io.exist("\data")
    203.     if (fullpath) {
    204.         if (#mainForm.listbox.items > 0) {
    205.             var name = m.input("修改名称", false)
    206.             if (name) {
    207.                 fsys.rename("\data"++mainForm.listbox.selText, "\data"++name++".txt")
    208.                 var fileList = fsys.list("\data")
    209.                 mainForm.listbox.items = fileList;
    210.                         mainForm.listbox.selText = name ++".txt";
    211.                         mainForm.richedit.text = string.load("\data"++mainForm.listbox.selText)
    212.             }
    213.         }
    214.     }
    215. }

    216. mainForm.plus_导入.skin(
    217.     background = {
    218.         hover = "/res/images/btn-hover.png";
    219.         focus = "/res/images/btn-focus.jpg";
    220.         active = "/res/images/btn-active.png";
    221.         disabled = "/res/images/btn-disabled.png";
    222.     }
    223. )
    224. mainForm.plus_导入.oncommand = function(id, event) {
    225.    
    226. }

    227. mainForm.plus_同步.skin(
    228.     background = {
    229.         hover = "/res/images/btn-hover.png";
    230.         focus = "/res/images/btn-focus.jpg";
    231.         active = "/res/images/btn-active.png";
    232.         disabled = "/res/images/btn-disabled.png";
    233.     }
    234. )
    235. mainForm.plus_同步.oncommand = function(id, event) {
    236.     var fullpath = io.exist("\data")
    237.     if (fullpath) {
    238.         var fileList = fsys.list("\data")
    239.         mainForm.listbox.items = fileList;
    240.         mainForm.listbox.selIndex = 1;
    241.         mainForm.richedit.text = string.load("\data"++mainForm.listbox.selText)
    242.     }
    243.    
    244. }


    245. mainForm.show();
    246. return win.loopMessage();
    复制代码


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-9-9 17:19
  • 签到天数: 111 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    142

    回帖

    1194

    积分

    金牌会员

    积分
    1194
    来自: 中国安徽
    发表于 2024-2-9 11:33:27 | 显示全部楼层 来自: 中国安徽
    代码运行似乎有些问题
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-9-9 17:19
  • 签到天数: 111 天

    连续签到: 1 天

    [LV.6]常住居民II

    35

    主题

    142

    回帖

    1194

    积分

    金牌会员

    积分
    1194
    来自: 中国安徽
    发表于 2024-2-9 15:34:26 | 显示全部楼层 来自: 中国安徽
    本帖最后由 rmajly 于 2024-2-9 15:40 编辑

    报错,而且新建的txt文件很乱,不便管理

    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区

    GMT+8, 2024-9-17 03:29 , Processed in 0.142558 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表