[求助]求助swin动态调整大小
1小时前 5

写了个软件安装管理器,根据列表文件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不能实现滚动效果,参考官方实例搞不定,求教,谢谢

奖励
收藏
点赞
分享
最新回复 (1)
  • avatar image
    dhwc 1小时前
    楼主   2

    官方实例中主要起作用是这一句:ENVI @@POS=%&SWIN1_Wid%::::%H

    但我看这样改变的是画布大小?

返回