写了个软件安装管理器,根据列表文件list.ini文件里的内容自动创建复选框,软件数量不固定,预设的swin太大滚动条下面会空很多,swin太小会放不下,代码如下:
_SUB MainWindow,W300H360,软件列表选择,,%windir%\system32\shell32.dll#316,15,,-top -disminb SWIN SWIN1:Page11:-SWINMAIN,L10T33W273H240,,0x140 ENVI @SWINMAIN:SWIN1.ID=?&Swin1_Wid //画框ID ENVI @SWINMAIN.ID=?&SWINMAIN_Wid //与Page11窗口ID相同%&Page1_WID% LABE TitleLabel,L10T10W200H20,请选择要安装的软件: ITEM OKButton,L120T280W60H30,安装,CALL OnOK _END _SUB Page11,W600H240,,,,:0xFFFFFF ENVI &YPos=10 ENVI &Index=0 ENVI &inList=0 ENVI AllList= SET$ NL=0D 0A READ list.ini,*,&&AllContent FORX *NL &AllContent,&&line, { mstr * &line1=1,1,&line find $%&line1%=[, { find $%&line%=[softlist], ENVI &inList=1!ENVI &inList=0 }! { IFEX $%&inList%=1, { FIND $%&line%=, exit - // 解析软件名称、路径、默认是否选中 MSTR * -delims:| SoftName,SoftPath,SoftStatus=<1><2><3>&line CHEK Checkbox_%&Index%,L40T%&YPos%W250H20,%SoftName% IFEX $%SoftStatus%=0,ENVI @Checkbox_%&Index%.Check=1 IFEX $%SoftStatus%=2,team ENVI @Checkbox_%&Index%.Check=1|ENVI @Checkbox_%&Index%.Enable=0 ENVI &Checkbox_Name=Checkbox_%&Index% ENVI &Checkbox_Name_Path=%SoftPath% ENVI Checkbox_Name_Status=%SoftStatus% CALC &YPos=%&YPos% + 25 CALC &Index=%&Index% + 1 ENVI AllList=%Checkbox_Name_Path%%NL%%AllList% //mess %&AllList% //mess %Checkbox_Name%:%&SoftName%:%&Checkbox_Name_Path%:%Checkbox_Name_Status% } } } ENVI TotalCount=%&Index% //MESS %TotalCount% IFEX #%TotalCount%>=9,TEAM MESS %H%|CALC H=(%TotalCount%-9)*35+%H%| MESS %H%|ENVI @@POS=%&SWIN1_Wid%::::%H% _END _SUB OnOK ENVI &AllList=%AllList% ENVI &InstPath= ENVI &Index=0 LOOP #%&Index% <= %TotalCount%, { READ -*,%&Index%,&InstPath,&AllList Find $%Checkbox_%&Index%.Check%=1,mess Checkbox_%&Index%选中\n%&InstPath% CALC &Index=%&Index% + 1 } _END CALL @MainWindow
代码运行后,swin不能实现滚动效果,参考官方实例搞不定,求教,谢谢
官方实例中主要起作用是这一句:ENVI @@POS=%&SWIN1_Wid%::::%H
但我看这样改变的是画布大小?
顶一下
直接识别文本的具体行数,保存为变量,复选框直接用变量生成,然后再根据复选框的多少来进行计算swin的大小?不知道这种方式是否可行
现在复选框本来就是识别项目行数自动生成的啊?问题是复选框放在swin上,假如预设swin的高度为10个复选框,如果项目太多比如20,窗体会太高不好看,所以要弄成滚动条,怎样动态调整这个高度?超过高度就出现滚动条
dhwc 官方实例中主要起作用是这一句:ENVI @@POS=%&SWIN1_Wid%::::%H 但我看这样改变的是画布大小?
这个问题搞定了,现在有新的问题:
1、怎样实现主窗体透明,swim不透明?
2、主窗体添加了全选/全不选按钮,好像不能穿透到swim去操作复选框?
3、添加了全选/全不选按钮,程序运行后,安装按钮文字不可见,随便点下某个复选框才会显示出来?