delux2004 发表于 2020-4-8 09:18:31

(已解决)根据ini内的key值对窗体控件赋值

本帖最后由 delux2004 于 2020-4-10 20:59 编辑

求助各位大神,小弟想制作一个程序,窗体内有较多控件;目的是想根据ini内的key值来对控件进行循环赋值,采用循环嵌套,但不成功,请大神指教,谢谢!

以下是代码和截图:


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 289, 305, 192, 124)
$Label1 = GUICtrlCreateLabel("姓名:", 32, 48, 40, 17)
$Name=GUICtrlCreateInput("", 85, 46, 121, 21)
$Label2 = GUICtrlCreateLabel("性别:", 32, 84, 40, 17)
$Sex =GUICtrlCreateInput("", 85, 82, 121, 21)
$Label3 = GUICtrlCreateLabel("年龄:", 32, 120, 40, 17)
$Age =GUICtrlCreateInput("", 85, 118, 121, 21)
$Label4 = GUICtrlCreateLabel("工号:", 32, 156, 40, 17)
$Number = GUICtrlCreateInput("", 85, 154, 121, 21)
$Label5= GUICtrlCreateLabel("基本工资", 32, 192, 52, 17)
$Wages =GUICtrlCreateInput("", 85, 190, 121, 21)
$Button1 = GUICtrlCreateButton("退出", 104, 248, 75, 25)
Data_Set()   ;调用函数赋值
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        Exit
      EndSwitch
WEnd

Func Data_Set()
      Local $data=[["姓名",$Name],["性别",$Sex],["年龄",$Age],["工号",$Number],["基本工资",$Wages]];将控件变量与控件名字合并为二维数组
      Local $var=IniReadSection("C:\config.ini", "config");读取config内的参数
                If @error Then
                        MsgBox(4096, "提示", "错误, 读取INI文件失败,请联系管理员!")
                Else
                        For $i=1 To $var
                              For $j= 0 To $data
                                        If $var[$i]=$data[$j] Then
                                                GUICtrlSetData($data[$j],$var[$i])                                                
                                        Endif
                              Next
                        Next
                Endif
               
Endfunc

chishingchan 发表于 2020-4-8 09:39:14

变通方法:在每个 $Labelx 的“下下”面读取 ini 并赋值。

afan 发表于 2020-4-8 09:45:55

Func Data_Set()
      Local $data=[["姓名",$Name],["性别",$Sex],["年龄",$Age],["工号",$Number],["基本工资",$Wages]];将控件变量与控件名字合并为二维数组
;~         Local $var=IniReadSection("C:\config.ini", "config");读取config内的参数
;~               If @error Then
;~                         MsgBox(4096, "提示", "错误, 读取INI文件失败,请联系管理员!")
;~               Else
;~                         For $i=1 To $var
;~                                 For $j= 0 To $data
;~                                       If $var[$i]=$data[$j] Then
;~                                                 GUICtrlSetData($data[$j],$var[$i])
;~                                       Endif
;~                                 Next
;~                         Next
;~               Endif
        Local $var
        For $ii = 0 To 4
                $var = IniRead("C:\config.ini", 'config', $data[$ii], '')
                GUICtrlSetData($data[$ii], $var)
        Next
Endfunc

delux2004 发表于 2020-4-8 10:42:56

chishingchan 发表于 2020-4-8 09:39
变通方法:在每个 $Labelx 的“下下”面读取 ini 并赋值。

好的,感谢!

delux2004 发表于 2020-4-8 10:45:46

afan 发表于 2020-4-8 09:45


原来这么少代码就可以解决的问题,我还在里面绕了很久!
谢谢afan大神!:face (1):
页: [1]
查看完整版本: (已解决)根据ini内的key值对窗体控件赋值