aardio 文档
aardio 范例: 免注册调用 COM 控件
//免注册调用 COM 控件
import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="免注册嵌入 VB 控件";right=700;bottom=266)
winform.add(
edit={cls="edit";left=356;top=20;right=665;bottom=243;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=2};
static={cls="static";text="Static";left=21;top=20;right=330;bottom=243;dl=1;dt=1;transparent=1;z=1}
)
/*}}*/
import com.lite;
/*
支持内存加载的 COM 控件可以写为 com.lite($"ocx 或 dll 文件路径") ,
发布后就不需要原 OCX 了。
不支持内存加载的 COM 控件,
也可在发布完成界面点击『转换为独立 EXE』按钮。
可以免注册调用 VB6 写的 OCX,但 VB 控件不支持内存加载。
不支持免注册的控件也可以用 com.activeX.regsvr32 静默注册,不需要管理权限。
或者 com.activeX.appData() 释放到 appData 目录并且自动注册(发布后不需要原 OCX)。
*/
var dll = com.lite.appData("aardio\vb6\Vb6Control.ocx" //dll 后缀名也可以
,$"~/example/Languages/VB/.vb6/Vb6Control.ocx")
//不需要注册直接创建控件,不是内存 DLL可省略参数@2里指定的类名
var vbCtrl = dll.createEmbedEx(winform.static);
//响应 COM 事件
vbCtrl.OnImageClick = function(value){
winform.edit.print("VB控件里点击了图像,事件参数:"+value)
return 100; //VB里这个事件的参数声明为 ByRef,所以添加返回值可以修改参数
}
//修改 VB 控件的属性
vbCtrl.Picture = com.picture.loadObject( "~/example/Graphics/.gdip.jpg" )
winform.show();
//调用 VB 函数,aardio 对象可以直接作为参数传给 VB
vbCtrl.CallAnything({
Name = "aardio";
Log = function(str){
//VB 中访问 obj.Log 也会自动调自 obj.Log()
if(str === null ) return;
//winform.msgbox(str,"在 VB 中可以直接调用 aardio 对象")
}
})
winform.edit.print("请点击图像试试");
win.loopMessage();
Markdown 格式