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