写了个软件安装管理器,根据列表文件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
但我看这样改变的是画布大小?