|
|
悬赏4金钱未解决
// 全局变量 (0缩进)
动态数组<浏览器标签页类> 标签页列表 // 存放所有标签页对象(栈对象副本)
整型 _当前激活标签页索引 = -1 // 当前显示的标签页索引
我的主窗口类 我的主窗口 // 实例化主窗口
// 程序入口
函数 整型 入口函数_窗口() //窗口程序入口函数, 程序启动优先进入此函数
//在进入UI前需要运行的代码写在这里
炫彩_初始化(真) //初始化设计器使用的炫彩界面库
炫彩_启用自动重绘UI(真) //当修改UI后将自动调用重绘函数更新UI
#加载资源文件 //指示在此处自动加载资源文件, 根据项目属性设置, 从文件 或 从内存
我的主窗口.运行() //运行上面设计器生成的类中的运行()函数
//在进入UI后需要运行的代码写在这里
炫彩_运行() //运行消息循环
炫彩_退出() //程序退出释放界面库资源
返回 0
// ================== 主窗口类 ==================
类 我的主窗口类 继承 窗口类
[绑定信息]
[编辑框类, _编辑框2, "_编辑框2"]
[按钮类, _前进按钮, "_前进按钮"]
[按钮类, _刷新按钮, "_刷新按钮"]
[按钮类, _后退按钮, "_后退按钮"]
[布局类, _浏览框, "_浏览框"]
[按钮类, _跳转按钮, "_跳转按钮"]
[按钮类, _新建标签按钮, "_新建标签按钮"]
[Tab条类, _标签栏, "_标签栏"]
文本型 _布局文件 = "main.xml"
// 运行函数,窗口创建完成后调用
函数 整型 运行()
显示(真)
初始化()
返回 0
// 初始化:创建第一个默认标签页
函数 整型 初始化()
创建新标签页("https://www.baidu.com")
_编辑框2.置文本("https://www.baidu.com")
返回 0
// 创建新标签页
函数 整型 创建新标签页(文本型 初始URL = "https://www.baidu.com")
// 1. 生成新ID(基于当前数组大小)
整型 新ID = 标签页列表.取大小() + 1
// 2. 创建标签页对象(栈对象)
浏览器标签页类 新标签页
// 3. 初始化标签页,传入父容器句柄和初始URL
新标签页.初始化(新ID, _浏览框._句柄, 初始URL)
// 4. 将标签页对象副本加入数组
标签页列表.添加(新标签页)
// 5. 在Tab条上添加标签头(标题暂时用"新标签页")
_标签栏.添加标签("标签 " + 到文本(新ID))
// 6. 切换到新标签页
切换标签页(标签页列表.取大小() - 1)
返回 0
// 切换标签页
函数 切换标签页(整型 索引)
如果 索引 < 0 或 索引 >= 标签页列表.取大小()
返回
如果 _当前激活标签页索引 != -1
浏览器标签页类 旧标签页 = 标签页列表.取成员(_当前激活标签页索引)
旧标签页.隐藏容器()
浏览器标签页类 新标签页 = 标签页列表.取成员(索引)
新标签页.显示容器()
_当前激活标签页索引 = 索引
_标签栏.置选择(索引)
_编辑框2.置文本(新标签页.取URL())
返回
// 关闭标签页
函数 整型 关闭标签页(整型 索引)
如果 索引 < 0 或 索引 >= 标签页列表.取大小()
返回 0
// 1. 清理标签页资源
标签页列表[标签页列表.取成员(索引)].关闭()
// 2. 从数组中移除
标签页列表.删除(索引)
// 3. 从Tab条移除标签头
_标签栏.删除标签(索引)
// 4. 处理激活标签页切换
如果 标签页列表.取大小() == 0
_当前激活标签页索引 = -1
返回 0
如果 索引 == _当前激活标签页索引
如果 索引 > 0
切换标签页(索引 - 1)
否则
切换标签页(0)
否则 如果 索引 < _当前激活标签页索引
_当前激活标签页索引 = _当前激活标签页索引 - 1
返回 0
// ================== UI事件 ==================
函数 UI事件 整型 新建标签按钮_按钮点击(元素句柄 来源句柄, 逻辑型* 是否拦截)
创建新标签页()
返回 0
函数 UI事件 整型 标签栏_项切换(整型 索引)
切换标签页(索引)
返回 0
函数 UI事件 整型 标签栏_项删除(整型 索引)
关闭标签页(索引)
返回 0
函数 UI事件 整型 跳转按钮_按钮点击(元素句柄 来源句柄, 逻辑型* 是否拦截)
如果 _当前激活标签页索引 == -1
返回 0
文本型 网址 = _编辑框2.取文本()
标签页列表.取成员(_当前激活标签页索引).加载网页(网址)
返回 0
函数 UI事件 整型 刷新按钮_按钮点击(元素句柄 来源句柄, 逻辑型* 是否拦截)
如果 _当前激活标签页索引 == -1
返回 0
标签页列表.取成员(_当前激活标签页索引).刷新()
返回 0
函数 UI事件 整型 前进按钮_按钮点击(元素句柄 来源句柄, 逻辑型* 是否拦截)
如果 _当前激活标签页索引 == -1
返回 0
标签页列表.取成员(_当前激活标签页索引).前进()
返回 0
函数 UI事件 整型 后退按钮_按钮点击(元素句柄 来源句柄, 逻辑型* 是否拦截)
如果 _当前激活标签页索引 == -1
返回 0
标签页列表.取成员(_当前激活标签页索引).后退()
返回 0
// 状态常量 (全局)
整型 标签页状态_空闲 = 0
整型 标签页状态_加载中 = 1
整型 标签页状态_加载完成 = 2
整型 标签页状态_加载失败 = 3
// ================== 浏览器标签页类 ==================
类 浏览器标签页类
// 私有成员
私有:
整型 _标签ID
整型 _状态
文本型 _当前URL
文本型 _当前标题
文本型 _用户数据目录
布局类 _页面容器 // 容器对象
元素句柄 _页面容器句柄 // 容器句柄
WebView2浏览器 _浏览器控件
文本型 执行结果 // 用于执行JS的返回
// 公开成员
公开:
// 构造函数
函数 整型 初始化(整型 标签ID, 元素句柄 父容器句柄, 文本型 初始URL = "")
_标签ID = 标签ID
_状态 = 标签页状态_空闲
// 1. 创建页面容器(布局元素)
_页面容器.创建扩展(父容器句柄)
_页面容器句柄 = _页面容器.取父元素()
// 2. 设置独立用户数据目录(实现数据隔离)
_用户数据目录 = 取运行目录() + "\\UserData\\Tab_" + 到文本(_标签ID)
置环境变量("WEBVIEW2_USER_DATA_FOLDER", _用户数据目录)
// 3. 创建浏览器控件
_浏览器控件.创建自元素(_页面容器句柄)
// 4. 加载初始网页
如果 初始URL != ""
加载网页(初始URL)
返回 0
// 加载网页
函数 整型 加载网页(文本型 URL)
_当前URL = URL
_状态 = 标签页状态_加载中
_浏览器控件.加载网页(URL)
返回 0
// 刷新
函数 整型 刷新()
_浏览器控件.执行JS("window.location.reload();", 执行结果)
返回 0
// 前进
函数 整型 前进()
_浏览器控件.执行JS("window.history.forward();", 执行结果)
返回 0
// 后退
函数 整型 后退()
_浏览器控件.执行JS("window.history.back();", 执行结果)
返回 0
// 关闭标签页,释放资源
函数 整型 关闭()
// 导航到空白页,释放资源
_浏览器控件.加载网页("about:blank")
_页面容器.销毁()
返回 0
// 显示容器
函数 整型 显示容器()
_页面容器.显示(真)
返回 0
// 隐藏容器
函数 整型 隐藏容器()
_页面容器.显示(假)
返回 0
// 获取当前URL
函数 文本型 取URL()
返回 _当前URL
// 获取当前标题
函数 文本型 取标题()
返回 _当前标题
// 获取状态
函数 整型 取状态()
返回 _状态
AI写的代码,我看半天也没看明白错在哪
🚀*解析代码->
🚀*检查代码->
🚀*生成代码->
📄D:\炫彩IDE-3.3.9-(2025-10-24)-完整包\data\示例\项目模板\第一个窗口程序\common.xh
🐞*代码生成失败, D:\炫彩IDE-3.3.9-(2025-10-24)-完整包\data\示例\项目模板\第一个窗口程序\main.xc(124)
----- 🐞错误列表: 错误(0)-----
|
|