1151 lines
40 KiB
Plaintext
1151 lines
40 KiB
Plaintext
//message 简单信息框
|
||
//光庆封装
|
||
//..godking.message._version := 3.5;
|
||
//..godking.message._date := "2024-03-05";
|
||
|
||
/*****
|
||
参考文档: https://blog.csdn.net/sdlgq/article/details/129294167
|
||
更新日志:
|
||
3.5 信息框去掉阴影,避免出现窗口隐藏时阴影残留的问题。
|
||
3.4.3 增加信息框实例对winform的操作。
|
||
3.4.2 修复 提示信息高度自动调整后挡住progress进度的问题。
|
||
3.4.1 修复 topmost 导致窗口启动的时候闪烁一下的问题。
|
||
3.4.0 修正 this.trasparent 初始值为100。
|
||
3.3.9 修正 input() 在不同dpi下的错位问题。修正 winform.msgXX() 系列函数失效的问题。
|
||
3.3.8 增加 escClose 属性。
|
||
3.3.7 增加创建屏幕右下角弹出提示框组功能。
|
||
3.3.6 设置窗口在最前,增加透明度和鼠标穿透功能。
|
||
3.3.5 增强 进度条 窗口,增加 getPlus() 函数。
|
||
3.3.4 调整 select 的默认选中值,支持选项内容。
|
||
3.3.3 调整dpi缩放相关算法。
|
||
3.3.2 select函数添加选中值数组参数
|
||
*****/
|
||
|
||
import win.ui;
|
||
import fonts.fontAwesome;
|
||
import win.ui.ctrl.plus;
|
||
import win.region.round;
|
||
import gdi;
|
||
|
||
/*信息框窗口类{{*/
|
||
class simpleWindow_godking{
|
||
ctor( winform,fontSize,width=33,height=27,marginRight=0,marginTop=0){{
|
||
this.targetForm = winform._parentForm || winform;
|
||
var ws = ..win.getStyle(this.targetForm.hwnd);
|
||
var font = LOGFONT(name='Marlett';charset=2/*_SYMBOL_CHARSET*/;h=fontSize);
|
||
winform.add(
|
||
titlebarClose={cls="plus";text="r";top=marginTop;height=height;width=width;marginRight=marginRight;dr=1;dt=1;font=font;z=3};
|
||
titlebar={cls="static";text="";left=0;top=marginTop;marginRight=width*3+marginRight;bottom=height*2;dl=1;dr=1;dt=1;notify=1;center=1;clip=1;transparent=1;z=4}
|
||
)
|
||
winform.titlebarClose.skin(style);
|
||
winform.titlebarClose.oncommand = function(id,event){
|
||
this.targetForm.close()
|
||
};
|
||
if( ws & 0x20000/*_WS_MINIMIZEBOX*/ ){
|
||
winform.add(
|
||
titlebarMin={cls="plus";text="0";top=marginTop;height=height;width=width;marginRight=width+marginRight;dr=1;dt=1;font=font;z=2};
|
||
)
|
||
winform.titlebarMin.skin(style);
|
||
winform.titlebarMin.oncommand = function(id,event){
|
||
this.targetForm.hitMin()
|
||
}
|
||
}
|
||
winform.titlebar.wndproc = {
|
||
[ 0x201/*_WM_LBUTTONDOWN*/ ] = function(hwnd,message,wParam,lParam){
|
||
this.targetForm.hitCaption();
|
||
}
|
||
}
|
||
..win.setPos(winform.titlebar.hwnd,,,,,0x1/*_HWND_BOTTOM*/);
|
||
this._form = winform;
|
||
this.titlebarClose = winform.titlebarClose;
|
||
this.titlebarMin = winform.titlebarMin;
|
||
this.titlebar = winform.titlebar;
|
||
}};
|
||
skin = function(style){
|
||
if(this.titlebarMin) this.titlebarMin.skin(style);
|
||
this.titlebarClose.skin(style);
|
||
};
|
||
}
|
||
namespace simpleWindow_godking{
|
||
style = {
|
||
background = {
|
||
hover = 0xff99ffcc;
|
||
active = 0xffff6666;
|
||
default = 0x00000000;
|
||
}
|
||
color = {
|
||
hover = 0xff666666;
|
||
active = 0xffffffff;
|
||
default = 0xffffffff;
|
||
}
|
||
}
|
||
}
|
||
/*}}*/
|
||
|
||
namespace godking;
|
||
class message{
|
||
ctor(parent){
|
||
this.parent = parent : ..win.getActive();
|
||
this.icon = null;
|
||
this.iconColor = null;
|
||
this.textColor = 0x000000;
|
||
this.bgcolor = 0xFFFFFF;
|
||
this.btnBgColor = 0x7FBF67;
|
||
this.progressBgColor = 0xFFeeeeee;
|
||
this.progressForeColor = 0xFF00ee00;
|
||
this.progressBorderColor = 0xFF00ee00;
|
||
this.progressTextColor = 0xFF000000;
|
||
this.fadeInterval = 12;
|
||
this.fadeDuration = 400;
|
||
this.cancelIcon = '\uF00D'
|
||
this.cancelLabel = '取消';
|
||
this.okIcon = '\uF00C'
|
||
this.okLabel = '确定';
|
||
this.colseUp = true;
|
||
this.noFocus = false;
|
||
this.showTitlebar = true;
|
||
this.round = 0;
|
||
this.pos = null;
|
||
this.showOK = true;
|
||
this.minWidth = 300;
|
||
this.borderWidth = 1;
|
||
this.borderColor = 0x55000000;
|
||
this.modalMode = true;
|
||
this.transparent = 100;
|
||
this.layered = false;
|
||
this.topmost = false;
|
||
this.escClose = true;
|
||
this.trasparent = 100;
|
||
this.disableClose = function(){
|
||
this.escClose = false
|
||
this.modalMode = false
|
||
}
|
||
|
||
this.buttonStyle = {
|
||
color = {
|
||
default = 0xFFFFFFFF;
|
||
hover = 16#FFFFFDC2;
|
||
active = 16#FFFFFDC2;
|
||
}
|
||
border = {
|
||
default = {width=0;}
|
||
hover = { bottom = 2;color= 16#FFFFFDC2; }
|
||
active = { bottom = 2;color= 16#FFFFFDC2; }
|
||
}
|
||
}
|
||
this.titlebarStyle = {
|
||
color = {
|
||
default = 0xFFAAAAAA;
|
||
hover = 0xFFFF0000;
|
||
active = 0xFFFF0000;
|
||
}
|
||
}
|
||
var fade = function(winform,duration=400,interval=12){
|
||
if(duration<interval){
|
||
if this.trasparent<100 winform.transparent(this.transparent*2.55);
|
||
if this.layered winform.modifyStyleEx(,0x80000/*_WS_EX_LAYERED*/|0x20/*_WS_EX_TRANSPARENT*/);
|
||
winform.show();
|
||
return;
|
||
}
|
||
if this.layered winform.modifyStyleEx(,0x80000/*_WS_EX_LAYERED*/|0x20/*_WS_EX_TRANSPARENT*/);
|
||
winform.transparent( 1 );
|
||
winform.show();
|
||
var easeOutQuad = function (timestamp,beginning,change,duration){
|
||
var x = timestamp/duration;
|
||
return beginning+change*(-x*x + 2*x);
|
||
}
|
||
var timestamp = 0;
|
||
winform.setInterval(
|
||
function(){
|
||
var trans = easeOutQuad( timestamp, 0, 255, duration);
|
||
timestamp = timestamp + interval;
|
||
if ( trans > this.transparent*2.55 ) return false;
|
||
winform.transparent( trans );
|
||
if( trans > 245 ){
|
||
winform.transparent(false);
|
||
return false;
|
||
}
|
||
},interval
|
||
)
|
||
if this.escClose {
|
||
winform.onClose = function(hwnd,message,wParam,lParam){
|
||
var timestamp = 0;
|
||
var shadow = winform._shadowWindow;
|
||
var tmId = winform.setInterval(
|
||
function(){
|
||
var trans = easeOutQuad( timestamp, 255,-255 , duration);
|
||
timestamp = timestamp + interval;
|
||
if trans<=this.transparent*2.55 {
|
||
if(trans<=200 && shadow){
|
||
shadow._form.close();
|
||
shadow = null;
|
||
}
|
||
winform.transparent( trans ) ;
|
||
if( trans < 10 ){
|
||
winform.onClose = null;
|
||
winform.close();
|
||
return false;
|
||
}
|
||
}
|
||
} ,interval
|
||
)
|
||
return false
|
||
}
|
||
} else {
|
||
winform.onClose = function(){
|
||
return true;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
create = function(msg,showButtons,show){
|
||
if (!#msg) error("文本不能为空",2);
|
||
if this.iconColor !== null and this.iconColor&0xFF000000 this.iconColor=..gdi.rgbReverse(this.iconColor);
|
||
if this.textColor !== null and this.textColor&0xFF000000 this.textColor=..gdi.rgbReverse(this.textColor);
|
||
if this.bgcolor !== null and this.bgcolor&0xFF000000 this.bgcolor=..gdi.rgbReverse(this.bgcolor);
|
||
if this.btnBgColor !== null and this.btnBgColor&0xFF000000 this.btnBgColor=..gdi.rgbReverse(this.btnBgColor);
|
||
var parentForm = this.parent;
|
||
if(parentForm){
|
||
if( !..win.isWindow(this.parent[["hwnd"]] || this.parent) ){
|
||
parentForm = ..win.getActive() || ..mainForm[["hwnd"]];
|
||
}
|
||
}
|
||
var winform = ..win.form(text="提示:";right=830;bottom=680;bgcolor=this.bgcolor;border="none";exmode="toolwindow";min=false;parent=parentForm;);
|
||
if !winform return;
|
||
winform.add(
|
||
icon={cls="plus";text=this.icon:this.form_icon;left=10;top=10;right=80;bottom=62;color=this.iconColor===null?this.form_iconColor:this.iconColor;dl=1;dt=1;font=LOGFONT(name='FontAwesome';h=-37);z=1};
|
||
message={cls="plus";text=msg;left=80;top=24;right=777;bottom=654;align="left";color=this.textColor;dl=1;dr=1;dt=1;db=0;font=LOGFONT(h=-16);valign="top";z=2};
|
||
);
|
||
if( showButtons or this.showOK ){
|
||
this.cancelIcon :="";
|
||
this.cancelLabel :="";
|
||
this.okIcon :="";
|
||
this.okLabel:="";
|
||
winform.add(
|
||
bk={cls="bk";left=0;top=620;right=831;bottom=681;db=1;dl=1;dr=1;forecolor=this.btnBgColor;z=1};
|
||
);
|
||
if showButtons {
|
||
winform.add(
|
||
btnOk={cls="plus";text=this.okLabel;iconText=this.okIcon;left=280;top=630;right=350;bottom=670;color=16777215;db=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome')};textPadding={left=16};notify=1;z=3};
|
||
btnCancel={cls="plus";text=this.cancelLabel;iconText=this.cancelIcon;left=480;top=630;right=550;bottom=670;color=16777215;db=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome')};textPadding={left=16};notify=1;z=4};
|
||
);
|
||
} else {
|
||
winform.add(
|
||
btnOk={cls="plus";text=this.okLabel;left=300;top=630;right=400;bottom=670;color=16777215;db=1;font=LOGFONT(h=-16);notify=1;z=3};
|
||
);
|
||
}
|
||
if winform.btnOk {
|
||
winform.btnOk.oncommand = function(id,event){
|
||
if winform.timerid winform.clearTimeout(winform.timerid);
|
||
winform.timerid = null;
|
||
winform.endModal(true);
|
||
}
|
||
winform.btnOk.skin( this.buttonStyle );
|
||
}
|
||
if winform.btnCancel {
|
||
winform.btnCancel.oncommand = function(id,event){
|
||
if winform.timerid winform.clearTimeout(winform.timerid);
|
||
winform.timerid = null;
|
||
winform.endModal();
|
||
}
|
||
winform.btnCancel.skin( this.buttonStyle );
|
||
}
|
||
}
|
||
if this.escClose {
|
||
winform.onOk = function(){
|
||
if winform.timerid winform.clearTimeout(winform.timerid);
|
||
winform.timerid = null;
|
||
winform.endModal(true);
|
||
}
|
||
if this.escClose {
|
||
winform.onCancel = function(){
|
||
if winform.timerid winform.clearTimeout(winform.timerid);
|
||
winform.timerid = null;
|
||
winform.endModal();
|
||
}
|
||
}
|
||
}else {
|
||
winform.onClose = function(){
|
||
return true;
|
||
}
|
||
}
|
||
winform.onDestroy = function(){
|
||
if this.destroyCallback this.destroyCallback(winform);
|
||
}
|
||
//根据文字长度,自动调整窗口宽度
|
||
var rect = winform.message.measureString();
|
||
var width = winform.message.left + rect.width + 50;
|
||
if ( width < this.minWidth ) width = this.minWidth;
|
||
winform.width = width;
|
||
var height = winform.message.top + rect.height;
|
||
if ( showButtons or this.showOK ) {
|
||
height = height + winform.btnOk.height + 50;
|
||
if showButtons {
|
||
winform.btnOk.left= width/2-10-winform.btnOk.width;
|
||
winform.btnOk.right = winform.btnOk.left+70;
|
||
winform.btnCancel.left= width/2+10;
|
||
winform.btnCancel.right= winform.btnCancel.left+70;
|
||
} elseif this.showOK {
|
||
winform.btnOk.left= width/2-35;
|
||
winform.btnOk.right = winform.btnOk.left+70;
|
||
}
|
||
} else {
|
||
height = height + 25;
|
||
}
|
||
winform.height = height;
|
||
winform.message.width = rect.width +20;
|
||
winform.message.height = rect.height +5;
|
||
if( ..string.indexOf(msg,'\n') ){
|
||
winform.message.valign="top";
|
||
winform.icon.valign="top";
|
||
winform.icon.top = winform.message.top;
|
||
}
|
||
winform.enableDpiScaling("init");
|
||
if this.showTitlebar { //显示标题栏,就不能使用圆角窗口,不然角部有阴影
|
||
var sw = ..simpleWindow_godking(winform,,,,this.borderWidth,this.borderWidth);
|
||
sw.skin(this.titlebarStyle);
|
||
} elseif this.round {
|
||
..win.region.round(winform,,,this.round,this.round);
|
||
}
|
||
if this.borderWidth {
|
||
var radius = !this.showTitlebar?(this.round?(this.round/2):0):0;
|
||
winform.add(
|
||
{
|
||
borderPlus={cls="plus";dl=1;dt=1;dr=1;db=1;left=0;top=0;right=winform.width;bottom=winform.height;border={color=this.borderColor;radius=radius;width=this.borderWidth};clipBk=false;z=100};
|
||
}
|
||
)
|
||
}
|
||
winform.resize();
|
||
if type(this.pos)==type.table {
|
||
if this.pos.x!==null and this.pos.y!==null winform.setPos(this.pos.x,this.pos.y);
|
||
elseif #this.pos>1 winform.setPos(this.pos[1],this.pos[2]);
|
||
} else {
|
||
winform.center(parentForm);
|
||
}
|
||
winform.showself = function(){
|
||
if(this.fadeInterval) fade(winform,this.fadeDuration,this.fadeInterval);
|
||
else {
|
||
if this.trasparent<100 winform.transparent(this.trasparent*2.55);
|
||
if this.layered winform.modifyStyleEx(,0x80000/*_WS_EX_LAYERED*/|0x20/*_WS_EX_TRANSPARENT*/);
|
||
}
|
||
}
|
||
if show winform.showself();
|
||
winform.waitClose = function(){
|
||
while(::User32.IsWindow(winform.hwnd)){
|
||
..win.delay(1);
|
||
}
|
||
}
|
||
winform.isExist = function(){
|
||
return ::User32.IsWindow(winform.hwnd);
|
||
}
|
||
winform._close_raw := winform.close;
|
||
winform.close = function(){
|
||
winform.onClose = function(hwnd,message,wParam,lParam){
|
||
var timestamp = 0;
|
||
var shadow = winform._shadowWindow;
|
||
var easeOutQuad = function (timestamp,beginning,change,duration){
|
||
var x = timestamp/duration;
|
||
return beginning+change*(-x*x + 2*x);
|
||
}
|
||
var tmId = winform.setInterval(
|
||
function(){
|
||
var trans = easeOutQuad( timestamp, 255,-255 , this.fadeDuration);
|
||
timestamp = timestamp + this.fadeInterval;
|
||
if trans<=this.transparent*2.55 {
|
||
if(trans<=200 && shadow){
|
||
shadow._form.close();
|
||
shadow = null;
|
||
}
|
||
winform.transparent( trans ) ;
|
||
if( trans < 10 ){
|
||
winform.onClose = null;
|
||
winform._close_raw();
|
||
return false;
|
||
}
|
||
}
|
||
} ,this.fadeInterval
|
||
)
|
||
return false;
|
||
}
|
||
winform._close_raw();
|
||
}
|
||
if this.topmost {
|
||
::SetWindowPos(winform.hwnd,-1,0,0,0,0,2/*_SWP_NOMOVE*/|1/*_SWP_NOSIZE*/|0x10/*_SWP_NOACTIVATE*/ );
|
||
}
|
||
return winform;
|
||
}
|
||
createAndShow = function(modal,msg,showButtons,timeOut){
|
||
if(!#msg) error("文本不能为空",2);
|
||
var dlg = this.create(msg,showButtons);
|
||
if(!dlg) return;
|
||
if dlg.borderPlus {
|
||
dlg.borderPlus.bottom = dlg.height;
|
||
dlg.borderPlus.right = dlg.width;
|
||
}
|
||
if(timeOut){
|
||
if(this.fadeInterval) timeOut = timeOut+this.fadeDuration;
|
||
if this.colseUp {
|
||
dlg.timerid = dlg.setTimeout(function(){
|
||
if dlg.btnOk dlg.btnOk.disabled = true;
|
||
for(i=1;15;1){
|
||
if 255-16*i < this.transparent*2.55 dlg.transparent(255-16*i);
|
||
var l,t = dlg.getPos();
|
||
dlg.setPos(l,t-8);
|
||
if !..win.delay(10) ..win.quitMessage();
|
||
}
|
||
dlg.transparent(0);
|
||
dlg.show(false);
|
||
dlg.endModal();
|
||
},timeOut
|
||
)
|
||
} else {
|
||
dlg.timerid = dlg.setTimeout(λ()dlg.endModal(),timeOut);
|
||
}
|
||
}
|
||
dlg.showself();
|
||
if modal===false return dlg;
|
||
if modal or this.modalMode return dlg.doModal();
|
||
return dlg;
|
||
}
|
||
info = function(msg,timeOut){
|
||
this.form_icon = '\uF05A';
|
||
this.form_iconColor = 0xD4883B;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
warn = function(msg,timeOut){
|
||
this.form_icon = '\uF071'
|
||
this.form_iconColor = 0x5654E0;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
ok = function(msg,timeOut){
|
||
this.form_icon = '\uF046'
|
||
this.form_iconColor = 0x54CC2E;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
err = function(msg,timeOut){
|
||
this.form_icon = '\uF05C'
|
||
this.form_iconColor = 0x5654E0;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
great = function(msg,timeOut){
|
||
this.form_icon = '\uF164'
|
||
this.form_iconColor = 0x54CC2E;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
sorry = function(msg,timeOut){
|
||
this.form_icon = '\uF165'
|
||
this.form_iconColor = 0xD4883B;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
smile = function(msg,timeOut){
|
||
this.form_icon = '\uF118'
|
||
this.form_iconColor = 0x54CC2E;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
frown = function(msg,timeOut){
|
||
this.form_icon = '\uF119'
|
||
this.form_iconColor = 0xD4883B;
|
||
return this.createAndShow(null,msg,,timeOut);
|
||
}
|
||
ask = function(msg){
|
||
this.form_icon = '\uF059'
|
||
this.form_iconColor = 0xD4883B;
|
||
return this.createAndShow(true,msg,true);
|
||
}
|
||
link = function(text,callback,timeOut){
|
||
this.form_icon = '\uF05A';
|
||
this.form_iconColor = 0xD4883B;
|
||
var msg = this.createAndShow(false,text,,timeOut);
|
||
msg.message.skin(
|
||
color = {
|
||
default = 0xFF000000;
|
||
hover = 0xFFFF0000;
|
||
active = 0xFFFF0000;
|
||
}
|
||
)
|
||
if type(callback)==type.function {
|
||
msg.message.oncommand = function(id,event){
|
||
callback();
|
||
msg.close();
|
||
}
|
||
}elseif type(callback)==type.string and ..string.startWith(callback,"http",true) {
|
||
msg.message.oncommand = function(id,event){
|
||
import process;
|
||
process.openUrl(callback);
|
||
msg.close();
|
||
}
|
||
}
|
||
if this.modalMode return msg.doModal();
|
||
else return msg;
|
||
}
|
||
input = function(msg,isPassword=false){
|
||
this.form_icon = '\uF044';
|
||
this.form_iconColor = 0xD4883B;
|
||
if (!#msg) msg = "请输入:";
|
||
var dlg = this.create(msg,this.showOK);
|
||
if dlg.borderPlus {
|
||
dlg.borderPlus.bottom = dlg.height;
|
||
dlg.borderPlus.right = dlg.width;
|
||
}
|
||
var icontext,password;
|
||
if (isPassword){
|
||
icontext='\uF023';
|
||
password=1;
|
||
}else{
|
||
icontext='\uF040';
|
||
password=0;
|
||
}
|
||
dlg.add(
|
||
plus={cls="plus";align="left";border={color=..gdi.argbReverse(this.btnBgColor);width=1};bgcolor=16777215;editable=1;left=0;top=0;right=1;bottom=1;font=LOGFONT(h=-16/(dlg.dpiScaleY:1));iconStyle={font=LOGFONT(h=-16/(dlg.dpiScaleY:1);name='FontAwesome');padding={right=200}};iconText=icontext;paddingLeft=26;paddingTop=2;password=password;z=1}
|
||
)
|
||
dlg.height = dlg.height+40;
|
||
if this.showOK {
|
||
dlg.plus.top = dlg.btnOk.top - 60*(dlg.dpiScaleY:1);
|
||
} else {
|
||
dlg.plus.top = dlg.height - 26*(dlg.dpiScaleY:1)-30;
|
||
}
|
||
dlg.plus.height = 26*(dlg.dpiScaleY:1);
|
||
dlg.plus.left = dlg.message.left;
|
||
dlg.plus.right = dlg.width-50;
|
||
dlg.plus.setFocus();
|
||
dlg.plus.iconStyle.padding.right = (dlg.plus.width-dlg.plus.height)/(dlg.dpiScaleY:1);
|
||
dlg.resize();
|
||
dlg.center();
|
||
if this.showOK {
|
||
dlg.btnOk.oncommand = function( id,event ){
|
||
dlg.endModal(dlg.plus.text);
|
||
}
|
||
}
|
||
dlg.plus.editBox.onOk = function(){
|
||
dlg.endModal(dlg.plus.text);
|
||
}
|
||
dlg.plus.editBox.onCancel = function(){
|
||
dlg.endModal();
|
||
}
|
||
dlg.showself();
|
||
return dlg.doModal();
|
||
}
|
||
progress = function(msg,pos=0,text=""){
|
||
this.form_icon = '\uF16C';
|
||
this.form_iconColor = 0xD4883B;
|
||
if (!#msg) msg = "进度:";
|
||
var dlg = this.create(msg,false);
|
||
if dlg.borderPlus {
|
||
dlg.borderPlus.bottom = dlg.height;
|
||
dlg.borderPlus.right = dlg.width;
|
||
}
|
||
dlg.add(
|
||
progress={cls="plus";align="left";border={color=this.progressBorderColor;width=1};bgcolor=this.progressBgColor;forecolor=this.progressForeColor;color=this.progressTextColor;left=0;top=0;right=1;bottom=1;z=3};
|
||
);
|
||
dlg.progress.setProgressRange(0,100);
|
||
dlg.getPlus = function(){
|
||
return dlg.progress;
|
||
}
|
||
dlg.progress.progressPos = pos;
|
||
dlg.progress.align = "center";
|
||
dlg.progress.text = text;
|
||
dlg.height = dlg.height+40;
|
||
if dlg["btnOk"] dlg.progress.top = dlg.btnOk.top-60;
|
||
else dlg.progress.top = dlg.height-60;
|
||
dlg.progress.height = 26;
|
||
dlg.progress.left = dlg.message.left;
|
||
dlg.progress.right = dlg.width-50;
|
||
dlg.resize();
|
||
dlg.center();
|
||
dlg.showself();
|
||
return dlg;
|
||
}
|
||
["select"] = function(multi,msg,item,selected,referer){
|
||
item :={};
|
||
this.form_icon = '\uF0CB';
|
||
this.form_iconColor = 0xD4883B;
|
||
if (!#msg) msg = "请选择:";
|
||
var dlg = this.create(msg,true);
|
||
if dlg.borderPlus {
|
||
dlg.borderPlus.bottom = dlg.height;
|
||
dlg.borderPlus.right = dlg.width;
|
||
}
|
||
var vtop = dlg.message.bottom+10;
|
||
var w = dlg.message.width;
|
||
dlg.message.width = 1000;
|
||
for(i=1;#item;1){
|
||
var rectf = dlg.message.measureString(item[i]);
|
||
w = ..math.max(w,rectf.width);
|
||
}
|
||
for(i=1;#item;1){
|
||
if multi { //多选框
|
||
var checked = false ;
|
||
if selected {
|
||
if referer checked=..table.find(referer,selected[[i]]);
|
||
else checked=..table.find(selected,i):..table.find(selected,item[i]);
|
||
};
|
||
dlg.add({
|
||
["rb"++i] = {cls="checkbox";dl=1;dt=1;text=item[i];bgcolor=this.bgcolor;left=dlg.message.left/(dlg.dpiScaleX:1);top=vtop/(dlg.dpiScaleY:1);right=(dlg.message.left+w+10)/(dlg.dpiScaleX:1);bottom=(vtop+20)/(dlg.dpiScaleY:1);font=LOGFONT(h=-16;name='FontAwesome');checked=checked;}
|
||
});
|
||
} else { //单选框
|
||
var checked = false ;
|
||
if selected {
|
||
if referer checked=referer[[i]]===selected;
|
||
else checked=(i===selected):(item[i]===selected);
|
||
};
|
||
dlg.add({
|
||
["rb"++i] = {cls="radiobutton";dl=1;dt=1;text=item[i];bgcolor=this.bgcolor;left=dlg.message.left/(dlg.dpiScaleX:1);top=vtop/(dlg.dpiScaleY:1);right=(dlg.message.left+w+10)/(dlg.dpiScaleX:1);bottom=(vtop+20)/(dlg.dpiScaleY:1);font=LOGFONT(h=-16;name='FontAwesome');checked=checked;}
|
||
});
|
||
}
|
||
vtop += 25;
|
||
}
|
||
dlg.width = dlg.message.left + w +30;
|
||
dlg.height = dlg.height+25*#item;
|
||
dlg.message.width = w;
|
||
dlg.resize();
|
||
dlg.center();
|
||
if multi { //多选框
|
||
dlg.btnOk.oncommand = function( id,event ){
|
||
var r={};
|
||
for(i=1;#item;1){
|
||
if dlg["rb"++i].checked {
|
||
if referer ..table.push(r,referer[[i]]);
|
||
else ..table.push(r,i);
|
||
}
|
||
}
|
||
dlg.endModal(r);
|
||
}
|
||
} else { //单选框
|
||
dlg.btnOk.oncommand = function( id,event ){
|
||
var r;
|
||
for(i=1;#item;1){
|
||
if dlg["rb"++i].checked{
|
||
if referer r=referer[[i]];
|
||
else r=i;
|
||
}
|
||
}
|
||
dlg.endModal(r);
|
||
}
|
||
}
|
||
dlg.onOk = dlg.btnOk.oncommand;
|
||
dlg.showself();
|
||
return dlg.doModal();
|
||
}
|
||
["form"] = function(msg,form,showcancel,timeOut,okfunc,...){
|
||
this.form_icon = '\uF09D';
|
||
this.form_iconColor = 0xD4883B;
|
||
if (!#msg) msg = "加载子窗口";
|
||
var width,height;
|
||
if type(form) != type.string return ;
|
||
if ..io.exist(form) form=..string.load(form);
|
||
var s = ..string.match(form,"win\.form\s*?\((.+?)\)");
|
||
if !s return ;
|
||
s = eval("{"++s++"}");
|
||
if !s return ;
|
||
width,height = s["right"],s["bottom"];
|
||
if !width or !height return ;
|
||
var dlg = this.create(msg,showcancel);
|
||
if dlg.borderPlus {
|
||
dlg.borderPlus.bottom = dlg.height;
|
||
dlg.borderPlus.right = dlg.width;
|
||
}
|
||
width *= (dlg.dpiScaleX:1);
|
||
height *= (dlg.dpiScaleY:1);
|
||
dlg.add(
|
||
custom={cls="custom";text="自定义控件";left=0;top=0;right=1;bottom=1;dl=1;dt=1;z=1}
|
||
);
|
||
dlg.custom.left = 30; //dlg.message.left;
|
||
dlg.custom.width = width;
|
||
dlg.custom.top = dlg.message.bottom+10;
|
||
dlg.custom.height = height;
|
||
var subform = dlg.custom.loadForm(form,...);
|
||
subform.bgcolor = dlg.bgcolor;
|
||
if type(okfunc)==type.function and dlg.btnOk {
|
||
dlg.btnOk.oncommand = function( id,event ){
|
||
dlg.endModal(okfunc(subform));
|
||
}
|
||
}
|
||
dlg.onOk = function(){
|
||
dlg.endModal(okfunc(subform));
|
||
}
|
||
if dlg.width<width+60 dlg.width=width+60;
|
||
dlg.height = dlg.height+height;
|
||
if dlg.btnOk and !dlg.btnCancel {
|
||
dlg.btnOk.left = (dlg.width-dlg.btnOk.width)/2;
|
||
}
|
||
dlg.resize();
|
||
dlg.center();
|
||
if(timeOut){
|
||
if(this.fadeInterval) timeOut = timeOut+this.fadeDuration;
|
||
if this.colseUp {
|
||
dlg.timerid = dlg.setTimeout(function(){
|
||
if dlg.btnOk dlg.btnOk.disabled = true;
|
||
for(i=1;15;1){
|
||
dlg.transparent(255-16*i);
|
||
var l,t = dlg.getPos();
|
||
dlg.setPos(l,t-8);
|
||
..win.delay(10);
|
||
}
|
||
dlg.transparent(0);
|
||
dlg.show(false);
|
||
dlg.endModal();
|
||
},timeOut
|
||
)
|
||
} else {
|
||
dlg.timerid = dlg.setTimeout(λ()dlg.endModal(),timeOut);
|
||
}
|
||
}
|
||
dlg.showself();
|
||
if this.modalMode {
|
||
return dlg.doModal();
|
||
} else {
|
||
return dlg;
|
||
}
|
||
}
|
||
["img"] = function(msg,img,width,height,showcancel,timeOut){
|
||
this.form_icon = '\uF09D';
|
||
this.form_iconColor = 0xD4883B;
|
||
var bmp = ..gdip.bitmap(img);
|
||
if !bmp return ;
|
||
if !#msg msg=" ";
|
||
width := bmp.width;
|
||
height := bmp.height;
|
||
if !width or !height return ;
|
||
|
||
var dlg = this.create(msg,showcancel);
|
||
|
||
if dlg.borderPlus {
|
||
dlg.borderPlus.bottom = dlg.height;
|
||
dlg.borderPlus.right = dlg.width;
|
||
}
|
||
width *= (dlg.dpiScaleX:1);
|
||
height *= (dlg.dpiScaleY:1);
|
||
dlg.add(
|
||
plus={cls="plus";left=0;top=0;right=1;bottom=1;dl=1;dt=1;foreRepeat="stretch";z=1}
|
||
);
|
||
var top = 0;
|
||
var pad = 0;
|
||
if this.showOK or showcancel or msg!==" " {
|
||
pad = 30*dlg.dpiScaleX;
|
||
top = 30*dlg.dpiScaleX;
|
||
}
|
||
if msg==" " {
|
||
dlg.icon.show(false)
|
||
dlg.message.show(false)
|
||
if this.showTitlebar top = 30*dlg.dpiScaleX;
|
||
} else {
|
||
top = 60*dlg.dpiScaleX;
|
||
}
|
||
|
||
dlg.plus.left = pad;
|
||
dlg.plus.width = width;
|
||
dlg.plus.top = top;
|
||
dlg.plus.height = height;
|
||
dlg.plus.foreground = img;
|
||
|
||
dlg.width = width+pad*2;
|
||
top = top + height + pad;
|
||
|
||
if dlg.btnOk {
|
||
dlg.height = top + dlg.btnOk.height + 20*dlg.dpiScaleX ;
|
||
} else {
|
||
dlg.height = top;
|
||
}
|
||
if dlg.btnOk and !dlg.btnCancel {
|
||
dlg.btnOk.left = (dlg.width-100*dlg.dpiScaleX)/2;
|
||
dlg.btnOk.right = (dlg.width+100*dlg.dpiScaleX)/2;
|
||
} elseif dlg.btnOk and dlg.btnCancel {
|
||
dlg.btnOk.left = dlg.width/8*3-50*dlg.dpiScaleX;
|
||
dlg.btnOk.right = dlg.width/8*3+50*dlg.dpiScaleX;
|
||
dlg.btnCancel.left = dlg.width/8*5-50*dlg.dpiScaleX;
|
||
dlg.btnCancel.right = dlg.width/8*5+50*dlg.dpiScaleX;
|
||
}
|
||
dlg.center();
|
||
|
||
if(timeOut){
|
||
if(this.fadeInterval) timeOut = timeOut+this.fadeDuration;
|
||
if this.colseUp {
|
||
dlg.timerid = dlg.setTimeout(function(){
|
||
if dlg.btnOk dlg.btnOk.disabled = true;
|
||
for(i=1;15;1){
|
||
dlg.transparent(255-16*i);
|
||
var l,t = dlg.getPos();
|
||
dlg.setPos(l,t-8);
|
||
..win.delay(10);
|
||
}
|
||
dlg.transparent(0);
|
||
dlg.show(false);
|
||
dlg.endModal();
|
||
},timeOut
|
||
)
|
||
} else {
|
||
dlg.timerid = dlg.setTimeout(λ()dlg.endModal(),timeOut);
|
||
}
|
||
}
|
||
dlg.showself();
|
||
if this.modalMode {
|
||
return dlg.doModal();
|
||
} else {
|
||
return dlg;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
namespace message {
|
||
|
||
..win.ui.ctrl.metaProperty.mixin({
|
||
msgInfo = function(str,timeOut){
|
||
..godking.message(owner).info( str,timeOut );
|
||
};
|
||
msgErr = function(str,timeOut){
|
||
..godking.message(owner).err( str,timeOut );
|
||
};
|
||
msgWarn = function(str,timeOut){
|
||
..godking.message(owner).warn( str,timeOut );
|
||
};
|
||
msgGreat = function(str,timeOut){
|
||
..godking.message(owner).great( str,timeOut );
|
||
};
|
||
msgSmile = function(str,timeOut){
|
||
..godking.message(owner).smile( str,timeOut );
|
||
};
|
||
msgFrown = function(str,timeOut){
|
||
..godking.message(owner).frown( str,timeOut );
|
||
};
|
||
msgOk = function(str,timeOut){
|
||
..godking.message(owner).ok( str,timeOut );
|
||
};
|
||
msgSorry = function(str,timeOut){
|
||
..godking.message(owner).sorry( str,timeOut );
|
||
};
|
||
msgAsk = function(str){
|
||
return ..godking.message(owner).ask( str );
|
||
};
|
||
msgInput = function(str){
|
||
return ..godking.message(owner).input( str );
|
||
};
|
||
})
|
||
|
||
group = class {
|
||
ctor (winform){
|
||
this.winlist = {};
|
||
this.bottom = 2;
|
||
this.right = 2;
|
||
var hwnd = ..win.find("Shell_TrayWnd","");
|
||
if hwnd {
|
||
var rect = ..win.getRect(hwnd);
|
||
if rect {
|
||
if rect["top"]>0 { // 任务栏在底边
|
||
this.bottom = rect.height()+2;
|
||
} elseif rect["left"]>0 { // 任务栏在右边
|
||
this.right = rect.width()+2;
|
||
this.bottom = 2;
|
||
}
|
||
}
|
||
}
|
||
import win.timer;
|
||
this.timer = ..win.timer(0,0);
|
||
this.timer.onTimer = function(){
|
||
var allright = true
|
||
var allh = this.bottom;
|
||
var _,sch = ..win.getScreen();
|
||
for(i=1;#this.winlist;1){
|
||
allh = allh + this.winlist[i].height + 2;
|
||
var alltop = sch - allh;
|
||
if this.winlist[i].top < alltop {
|
||
var l,t = this.winlist[i].getPos();
|
||
var thistop = t + 10;
|
||
if thistop > alltop thistop = alltop;
|
||
this.winlist[i].setPos(l,thistop);
|
||
allright = false;
|
||
}
|
||
}
|
||
if allright owner.disable();
|
||
}
|
||
this._message = ..godking.message(winform);
|
||
this._message.colseUp = false;
|
||
this._message.destroyCallback = function(winform){
|
||
import thread
|
||
thread.lock("messagegrouplock");
|
||
for(i=1;#this.winlist;1){
|
||
if this.winlist[i].hwnd == winform.hwnd {
|
||
..table.remove(this.winlist,i);
|
||
this.timer.enable(10)
|
||
break;
|
||
}
|
||
}
|
||
thread.unlock("messagegrouplock");
|
||
}
|
||
this._message.showOK = false;
|
||
this._message.modalMode = false;
|
||
|
||
}
|
||
setTopMost = function(v){
|
||
this._message.topmost = v;
|
||
}
|
||
count = function(){
|
||
return #this.winlist;
|
||
}
|
||
addwin = function(msgwin){
|
||
import thread
|
||
thread.lock("messagegrouplock");
|
||
..table.push(this.winlist,msgwin);
|
||
var scw,sch = ..win.getScreen();
|
||
var allh = this.bottom;
|
||
for(i=1;#this.winlist;1){
|
||
allh = allh + this.winlist[i].height + 2;
|
||
}
|
||
var left = scw - msgwin.width - this.right;
|
||
var top = sch - allh;
|
||
msgwin.setPos(left,top);
|
||
thread.unlock("messagegrouplock")
|
||
}
|
||
info = function(...){
|
||
var msgwin = this._message.info(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
err = function(...){
|
||
var msgwin = this._message.err(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
ok = function(...){
|
||
var msgwin = this._message.ok(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
frown = function(...){
|
||
var msgwin = this._message.frown(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
sorry = function(...){
|
||
var msgwin = this._message.sorry(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
warn = function(...){
|
||
var msgwin = this._message.warn(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
smile = function(...){
|
||
var msgwin = this._message.smile(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
great = function(...){
|
||
var msgwin = this._message.great(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
link = function(...){
|
||
var msgwin = this._message.link(...);
|
||
if !msgwin return ;
|
||
this.addwin(msgwin);
|
||
return msgwin;
|
||
}
|
||
closeAll = function(){
|
||
this.timer.disable();
|
||
import thread
|
||
thread.lock("messagegrouplock");
|
||
for(i=1;#this.winlist;1){
|
||
this.winlist[i].close();
|
||
}
|
||
this.winlist = {};
|
||
thread.unlock("messagegrouplock")
|
||
}
|
||
close = function(index){
|
||
this.timer.disable();
|
||
import thread
|
||
thread.lock("messagegrouplock");
|
||
if #this.winlist>=index{
|
||
this.winlist[index].close();
|
||
this.timer.enable(10);
|
||
}
|
||
..table.remove(this.winlist,index);
|
||
thread.unlock("messagegrouplock")
|
||
}
|
||
}
|
||
}
|
||
|
||
/**intellisense()
|
||
godking.message = 简单信息提示框(光庆改)\n导入时为当前线程所有窗口安装msgInfo,msgAsk,msgErr等msg前缀的消息框函数
|
||
godking.message(winform) = 创建简单信息提示框\n参数:父窗口对象或父窗口句柄\n不指定父窗口时默认取当前线程活动窗口作为父窗口\n如果用在非窗口程序中,请用 win.loopMessage() 确保程序不退出。
|
||
godking.message() = !GK_winDlgMessage.
|
||
godking.message.group(winform) = 创建屏幕右下角弹出提示框组\n参数:父窗口对象或父窗口句柄\n不指定父窗口时,默认取当前线程活动窗口作为父窗口\n如果用在非窗口程序中,请用 win.loopMessage() 确保程序不退出。
|
||
godking.message.group() = !GK_winDlgMessage_group.
|
||
end intellisense**/
|
||
|
||
/**intellisense(!GK_winDlgMessage_group)
|
||
count() = 当前信息框数量
|
||
close(1) = 关闭指定信息框。参数:信息框索引
|
||
closeAll() = 关闭全部信息框
|
||
|
||
setTopMost(true) = 信息框是否总在最前显示。
|
||
_message = 简单信息框框架,可做整体设置。\n!GK_winDlgMessage.
|
||
bottom = 最底部距离屏幕底部距离。默认:50
|
||
info(__,0) = 显示提示框,\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
info() = !GK_Message_winform.
|
||
warn(__,0) = 显示警告提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
warn() = !GK_Message_winform.
|
||
ok(__,0) = 显示正确提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
ok() = !GK_Message_winform.
|
||
err(__,0) = 显示错误提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
err() = !GK_Message_winform.
|
||
great(__,0) = 显示竖大拇指图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
great() = !GK_Message_winform.
|
||
sorry(__,0) = 显示倒竖大拇指图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
sorry() = !GK_Message_winform.
|
||
smile(__,0) = 显示微笑图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
smile() = !GK_Message_winform.
|
||
frown(__,0) = 显示皱眉图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
frown() = !GK_Message_winform.
|
||
link(__,"http://",0) = 显示超链接。\n参数1:显示文本;参数2:点击回调函数或网址;参数3:延时关闭的毫秒数
|
||
link() = !GK_Message_winform.
|
||
|
||
end intellisense**/
|
||
|
||
/**intellisense(!GK_winDlgMessage)
|
||
disableClose() = 设置窗口为禁止手动关闭(按ESC键或ALT+F4),可通过close()函数关闭。\n相当于设置了 escClose=false 、modalMode=false\n对于强制使用模态模式的窗口(ask、input等)无效。
|
||
escClose = 是否允许按ESC键(或ALT+F4)关闭(非模态)窗口。\n默认为 true。\n注意:必须设置 modalMode = false 才有效。模态窗口(ask、input等)不受此约束。
|
||
topmost = 窗口是否总在最前。默认为 true
|
||
transparent = 窗口透明度。0(全透明)- 100(不透明)
|
||
layered = 是否启用鼠标穿透。
|
||
modalMode = 是否采用模态窗口。以下窗口不可设置:ask、input、progress、select
|
||
borderWidth = 边框宽度,默认:1
|
||
borderColor = 边框颜色,默认:0x55000000
|
||
minWidth = 窗口最小宽度,默认:300
|
||
showOK = 显示确定按钮
|
||
btnBgColor = 按钮区背景颜色
|
||
pos = 窗口位置\n支持坐标和数组两种格式:{x=1,y=2} 或 {1,2}
|
||
round = 窗口圆角大小。显示标题栏时,圆角设置无效。
|
||
parent = 父窗口\n信息框显示在父窗口中间\n并在信息框关闭前禁用父窗口
|
||
showTitlebar = 是否显示标题栏(右上角关闭按钮)。显示标题栏时,圆角设置无效。
|
||
okLabel = 确定按钮文本,支持fontAwesome字体图标
|
||
okIcon = 确定按钮图标,fontAwesome字体图标
|
||
cancelLabel = 取消按钮文本
|
||
cancelIcon = 取消按钮图标,fontAwesome字体图标
|
||
icon = 提示图标,fontAwesome字体图标
|
||
iconColor = 提示图标颜色
|
||
textColor = 文本颜色
|
||
bgcolor = 窗口背景颜色
|
||
progressBgColor = 进度条背景颜色,默认:0xFFeeeeee;
|
||
progressForeColor = 进度条前景颜色,默认0xFF00ee00;
|
||
progressTextColor = 进度条文本颜色,默认0xFF000000;
|
||
progressBorderColor = 进度条边框颜色,默认0xFF00ee00;
|
||
fadeInterval = 淡入淡出动画时间间隔,设为0不显示动画
|
||
fadeDuration = 淡入淡出动画时长
|
||
colseUp = 超时关闭时窗口时,窗口位置是否向上移动
|
||
create(.(显示信息,是否显示确认取消按钮) = 创建信息框,返回窗体对象
|
||
create() = !GK_winDlgMessageForm.
|
||
createAndShow(.(是否为模态窗口,显示的信息文本,是否显示确认取消按钮,超时关闭时间) = 创建并显示信息框
|
||
createAndShow() = !GK_Message_winform.
|
||
info(__,0) = 显示提示框,\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
info() = !GK_Message_winform.
|
||
warn(__,0) = 显示警告提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
warn() = !GK_Message_winform.
|
||
ok(__,0) = 显示正确提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
ok() = !GK_Message_winform.
|
||
err(__,0) = 显示错误提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
err() = !GK_Message_winform.
|
||
great(__,0) = 显示竖大拇指图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
great() = !GK_Message_winform.
|
||
sorry(__,0) = 显示倒竖大拇指图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
sorry() = !GK_Message_winform.
|
||
smile(__,0) = 显示微笑图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
smile() = !GK_Message_winform.
|
||
frown(__,0) = 显示皱眉图标提示框\n参数1:信息内容;参数2:延时关闭的毫秒数
|
||
frown() = !GK_Message_winform.
|
||
link(__,"http://",0) = 显示超链接。\n参数1:显示文本;参数2:点击回调函数或网址;参数3:延时关闭的毫秒数
|
||
link() = !GK_Message_winform.
|
||
|
||
progress(__,0,"0%") = 显示进度提示框(非模态窗口)\n参数1:提示内容。参数2:初始进度值。参数3:初始进度文本\n为了便于随时更新进度,强制采用非模态窗口,不阻塞代码向下执行\n可以使用 waitClose() 函数等待窗口关闭
|
||
progress() = !GK_Message_progress.
|
||
img(msg,img,0,0,false,0) = 图像提示框\n参数1:提示内容。参数2:图片。参数3:宽度(可空)。参数4:高度(可空)。参数5:是否显示取消按钮。参数6:超时时间
|
||
img() = !GK_Message_progress.
|
||
|
||
ask(__) = 显示询问提示框(模态窗口)\n用户按确定或回车返回true,其他返回false或null\n强制采用模态窗口,等待窗口关闭。
|
||
input(__,false) = 显示输入框(模态窗口)\n用户按确定或回车返回输入的内容,其他返回null\n参数:1、输入框提示信息 2、是否密码模式\n强制采用模态窗口,等待窗口关闭。
|
||
select( false,"请选择",{},, ) = 选择框(模态窗口)\n参数:\n1:是否多选;\n2:提示信息;\n3:项目文本数组;\n4:默认选中项(索引或值,单选时为单个值,多选时为数组)\n 如果提供参数5,默认选中项与参数5中的成员做对比\n 否则,默认选中项与项目索引、项目值做对比;\n5:自定义项目返回值数组,项目选中时从该数组中获取对应的值作为返回值。\n 必须与项目一一对应。如果提供,则返回值从该数组中获取,如果省略,则返回选中的项目索引。\n\n返回值:单选时返回单个值,多选时返回数组\n强制采用模态窗口,等待窗口关闭。
|
||
form = @.form( "加载子窗口", "/a.aardio",true,0,function(winform){
|
||
/*在信息框中加载子窗口,参数:1、信息文本;2、form子窗体代码;3、是否显示确认取消按钮;4、超时关闭时间;5、确定按钮事件函数;
|
||
该函数的参数为加载的子窗体对象,该函数的返回值作为 modalMode=true 时 form() 函数的返回值*/
|
||
return winform.text;
|
||
});
|
||
form() = !GK_Message_winform.
|
||
|
||
buttonStyle = @.buttonStyle = {
|
||
/*确认、取消按钮风格*/
|
||
color = {
|
||
default = 0xFFFFFFFF;
|
||
hover = 16#FFFFFDC2;
|
||
active = 16#FFFFFDC2;
|
||
}
|
||
border = {
|
||
default = {width=0;}
|
||
hover = { bottom = 2;color= 16#FFFFFDC2; }
|
||
active = { bottom = 2;color= 16#FFFFFDC2; }
|
||
}
|
||
}
|
||
titlebarStyle = @.titlebarStyle = {
|
||
/*标题栏×按钮文本风格*/
|
||
color = {
|
||
default = 0xFFAAAAAA;
|
||
hover = 0xFFFF0000;
|
||
active = 0xFFFF0000;
|
||
}
|
||
}
|
||
end intellisense**/
|
||
|
||
/**intellisense(!GK_winDlgMessageForm)
|
||
icon = 显示文字图标的plus控件\n!ui_ctrl_plus.
|
||
message = 显示文本消息的plus控件\n!ui_ctrl_plus.
|
||
btnOk = 确定按钮\n!ui_ctrl_plus.
|
||
btnCancel = 取消按钮\n!ui_ctrl_plus.
|
||
progress = 进度条,plus控件\n!ui_ctrl_plus.
|
||
icon = 图标控件\n!ui_ctrl_plus.
|
||
onMouseClick = @.onMouseClick = function(wParam,lParam){\n var x,y = win.getMessagePos(lParam);__/*在窗口上单击并弹起鼠标左键触发此事件*/\n}
|
||
valid = 窗口是否有效\n如果用户关闭窗体则返回false
|
||
text = 窗口标题
|
||
hwnd = 窗口句柄\n\n句柄是一个数值,用于标识一种系统资源,如窗口、位图等等,\n如果你要操作一种系统资源,必须先获得句柄。 \n\n句柄在aardio中通常转换为指针(pointer)类型,\n而窗口句柄是个特例,onDestroy = @.onDestroy = function(){\n __/*指定在窗体销毁以前执行的代码*/\n \n}
|
||
beforeDestroy = @.beforeDestroy = function(){\n __/*指定在窗体销毁以前执行的代码\n早于onDestroy触发*/\n \n}
|
||
setPos(.(x坐标,y坐标,宽,高,插入位置,参数) = 调整窗口位置或排序,所有参数可选\n同时指定x,y坐标则移动位置\n同时指定宽高则改变大小\n指定插入位置(句柄或_HWND前缀常量)则调整Z序
|
||
show(.(true) = 显示窗口
|
||
show(.(false) = 隐藏窗口
|
||
setRect(rc) = 设置窗口区块位置(::RECT结构体)
|
||
center(.(目标窗口句柄) = 居中窗口,并调整以保证显示在可见范围内\n目标窗口句柄如果为空则取父窗口或所有者窗口,为0表示桌面
|
||
bgcolor = 背景颜色
|
||
close() = 关闭窗口
|
||
waitClose() = 等待窗口关闭
|
||
isExist() = 窗口是否存在
|
||
doModal(__/*请指定所有者窗口\n可省略此参数*/) = 此函数弹出模态对话框
|
||
endModal(__/*请指定模态对话框返回值*/) = 关闭模态对话框,\n调用endModal()函数的参数会被设置为 doModal()函数的返回值。
|
||
setInterval(回调函数,延时毫秒数,->->->) = @.setInterval( \n function(){\n __/*参数@1指定执行函数,参数@2指定执行间隔,\n可选指定一个或多个回调参数,不指定回调参数则默认为:\n hwnd,message,timerId,tick,\n\n如果在定时器中执行了win.delay等继续消息循环的代码,\n在定时器退出前不会再触发同一定时器(重入)。\n\n定时器回调函数返回数值可修改时间间隔,\n返回false取消该定时器*/\n },1000 \n)
|
||
end intellisense**/
|
||
|
||
/**intellisense(!GK_Message_progress.)
|
||
winform = !GK_winDlgMessageForm.
|
||
close() = 关闭窗口。仅非模态窗口时有效。
|
||
waitClose() = 等待窗口关闭。仅非模态窗口时有效。
|
||
isExist() = 窗口是否存在。仅非模态窗口时有效。
|
||
getPlus() = 取进度条plus组件\n!ui_ctrl_plus.
|
||
progress.progressPos = 设置进度值,0 到 100
|
||
progress.text = 设置进度文本,如 “ 50% ”
|
||
progress.align = 设置进度文本对齐方式。"left" "center" "right"
|
||
end intellisense**/
|
||
|
||
/**intellisense(!GK_Message_winform.)
|
||
winform = !GK_winDlgMessageForm.
|
||
close() = 关闭窗口。仅非模态窗口时有效。
|
||
waitClose() = 等待窗口关闭。仅非模态窗口时有效。
|
||
isExist() = 窗口是否存在。仅非模态窗口时有效。
|
||
end intellisense**/
|
||
|
||
..godking.message._version := 3.5;
|
||
..godking.message._date := "2024-03-05"; |