【第七章7.6】提示控件 -- 跟踪超链接

贴主:admin 发贴:2024-07-31 08:41 浏量:17
//跟踪超链接
import win.ui;
/*DSG{{*/
var winform = win.form(text="提示控件 / 跟踪模式 / 启用超链接";right=759;bottom=469)
winform.add(
button={cls="button";text="点这里显示提示控件";left=176;top=155;right=404;bottom=226;z=1}
)
/*}}*/

// 导入提示控件库
import win.ui.tooltip;

// 创建一个跟踪模式的提示控件,并将其关联到窗口
var tooltipCtrl = win.ui.tooltip.tracking(winform);

// 设置提示控件的标题,启用关闭按钮
tooltipCtrl.setInfo("提示标题");


 
// 创建一个跟踪工具,用于跟踪按钮的提示信息
var toolInfo = tooltipCtrl.addTrackingTool(winform.button);

// 为按钮添加点击事件处理函数
winform.button.oncommand = function(id, event){
    // 获取按钮的位置信息 : 坐标[x,y] ,宽,高
    var x, y, cx, cy = winform.button.getPos(true);

    // 设置提示信息(信息里面包含一个超链接),并弹出显示(设置显示位置坐标)
    toolInfo.setText(`点链接试试:<a href="https://www.aardio.com">aardio.com</a>`).trackPopup(true, x+20, y+cy);

    // 设置提示控件捕获鼠标事件,以便点击提示中的链接时,可以响应点击事件
    tooltipCtrl.capture = true; // 捕获鼠标事件
};


// 处理鼠标点击事件,关闭提示控件
tooltipCtrl.wndproc = function(hwnd, message, wParam, lParam){
    // 检查消息类型是否为鼠标左键按下消息
    if(message == 0x201 /*_WM_LBUTTONDOWN*/){
        // 判断鼠标点击位置是否在提示控件的客户区内
        if(!tooltipCtrl.ptInClientRect(lParam)){
            // 如果不在,则关闭提示控件
            tooltipCtrl.popup(false); // 关闭提示控件
        }
    }
};


// 导入进程库,用于打开超链接
import process; 
// 设置跟踪工具里面的超链接点击事件的处理函数
tooltipCtrl.onHyperlinkClick = function(href, title){
    // 使用进程库的 openUrl 函数打开超链接
    process.openUrl(href); // 打开超链接
};


// 显示窗口并启动消息循环
winform.show();
win.loopMessage();


相关回复


    暂无评论!

发表回复