找回密码
 加入
搜索
查看: 5775|回复: 7

[GUI管理] 【已解决】父窗体如何在不重启软件的情况下读取子窗体写入的配置文件

  [复制链接]
发表于 2011-8-30 15:30:26 | 显示全部楼层 |阅读模式
本帖最后由 .個朲綉√ 于 2011-9-1 12:54 编辑

   

点击父窗的配置控件后,进入子窗配置,配置好以后,保存,返回父窗

如果在返回父窗后,父窗能读取子窗写好的最新ini配置文件

不论我怎么弄,父窗读取的都是我之前一次子窗保存的数据,意思就是配置好以后,必需关掉软件,重新打开,父窗才能读取新配置。

如何不重启软件,读取最新配置呢?



应二楼这位兄台要求,秀一下GUI这段代码吧:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ExcelCOM_UDF.au3>
While 1
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("测试", 213, 178, 314, 177)
$Group1 = GUICtrlCreateGroup("数据查询系统", 0, 0, 209, 177)
GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
$Button1 = GUICtrlCreateButton("开始", 120, 136, 75, 33)
$Button2 = GUICtrlCreateButton("配置",10,136,75,33)
$Label2 = GUICtrlCreateLabel("现在查询到第:", 15, 43, 100, 25)
$Label3 = GUICtrlCreateLabel("行。", 168, 43, 28, 25)
$Input2 = GUICtrlCreateInput("", 106, 37, 46, 25)
GUICtrlSetFont(-1, 11, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFF0000)
$Input1 = GUICtrlCreateInput("手机号码", 34, 75, 145, 28)
GUICtrlSetFont(-1, 11, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFF0000)
$Label1 = GUICtrlCreateLabel("请点击开始按钮", 68, 112, 116, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
; GUISetState(@SW_SHOW)
;------------------第二个窗体----------------
Local $Config_File = @ScriptDir & "\Config.ini"
Local $Xls_File = IniRead($Config_File, "System", "Xls路径", "")
Local $Num_N = Number(IniRead($Config_File, "System", "号码列", ""));号码列
Local $Read_N = Number(IniRead($Config_File, "System", "读初始行", "3"));读初始行
Local $Write_N = Number(IniRead($Config_File, "System", "写记录列", "17"));写记录列
Local $Stop_N = Number(IniRead($Config_File, "System", "读号结束行", "502"));读号结束行

$Form2_2 = GUICreate("数据配置程序                   by Subp", 326, 225, 192, 125)
$Label4 = GUICtrlCreateLabel("Excel路径:", 8, 16, 66, 17)
$XLS = GUICtrlCreateInput($Xls_File, 80, 16, 153, 21)
$Label9 = GUICtrlCreateLabel("例如:D:\数据库\数据.xls", 80, 40, 152, 17)
$Button3 = GUICtrlCreateButton("打开", 248, 16, 59, 25)
$Label6 = GUICtrlCreateLabel("号码列", 16, 72, 40, 17)
$Label8 = GUICtrlCreateLabel("写入列", 152, 72, 40, 17)
$Write = GUICtrlCreateInput($Write_N, 200, 72, 57, 21)
$Number = GUICtrlCreateInput($Num_N, 64, 72, 57, 21)
$Label7 = GUICtrlCreateLabel("开始行", 16, 128, 40, 17)
$Stop = GUICtrlCreateInput($Stop_N, 200, 128, 57, 21)
$Read = GUICtrlCreateInput($Read_N, 64, 128, 57, 21)
$Label5 = GUICtrlCreateLabel("结束行", 152, 128, 40, 17)
$Button4 = GUICtrlCreateButton("保存", 112, 176, 75, 25)
GUISetState(@SW_SHOW,$Form1_1)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        If $nMsg[1] == $Form1_1 Then
                                Exit
                        ElseIf $nMsg[1] == $Form2_2 Then
                                GUISetState(@SW_SHOW, $Form1_1)
                                GUISetState(@SW_HIDE, $Form2_2)
                        EndIf
        Case $Button2
                GUISetState(@SW_SHOW, $Form2_2)
                GUISetState(@SW_HIDE, $Form1_1)
        Case $Button3
                open()
        Case $Button4
                        IniWrite($Config_File,'System','Xls路径',GUICtrlRead($XLS))
                        IniWrite($Config_File,'System','号码列',GUICtrlRead($Number))
                        IniWrite($Config_File,'System','读初始行',GUICtrlRead($Read))
                        IniWrite($Config_File,'System','读号结束行',GUICtrlRead($Stop))
                        IniWrite($Config_File,'System','写记录列',GUICtrlRead($Write))
                        $oExcel = _ExcelBookOpen($Xls_File, 1)
                        If $oExcel = 0 Then
                                MsgBox(64, "提示:", $Xls_File & "打开失败.")
                                Exit
                        EndIf
;                        MsgBox(0,'保存配置文件','配置文件保存成功。',3)
                GUISetState(@SW_SHOW, $Form1_1)
                GUISetState(@SW_HIDE, $Form2_2)
        Case $Button1
                        For $i = $Read_N To $Stop_N;遍历表格所有行
                                _Get_Num($i);读取号码
                                GUICtrlSetData($Input2,$i)
                                If _main($testnum,$i) = 1 Then ExitLoop 
                                If $user_info[7][1] = 1200 Then 
                                _ExcelWriteCell($oExcel,"到账",$i,$Write_N)
                                Else
                                _ExcelWriteCell($oExcel, $user_info[7][1], $i, $Write_N)
                        EndIf
                        Next
        EndSwitch
WEnd
WEnd


Func open();浏览按钮,
  $file=FileOpenDialog("请选择Excel文件",@ScriptDir,'Excel文件(*.xls)')
  If FileExists($file) Then
          GUICtrlSetData($XLS,$file)
          EndIf
EndFunc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-8-30 16:04:48 | 显示全部楼层
那为何不把你"无论我怎么弄"的代码传上来呢?

评分

参与人数 1金钱 +20 贡献 +2 收起 理由
.個朲綉√ + 20 + 2 额。。。搞错了,代码奉上

查看全部评分

发表于 2011-8-30 16:15:24 | 显示全部楼层
把INIREAD放在界面循环中行不

评分

参与人数 1金钱 +20 贡献 +2 收起 理由
.個朲綉√ + 20 + 2 代码奉上,围观1楼

查看全部评分

 楼主| 发表于 2011-8-30 16:16:09 | 显示全部楼层
那为何不把你"无论我怎么弄"的代码传上来呢?
happytc 发表于 2011-8-30 16:04



    呵呵,代码已附上,在1楼,我的代码可能本身就是错的,所以开始没发,希望能看看高人写的代码,谢谢。
 楼主| 发表于 2011-8-30 16:19:29 | 显示全部楼层
把INIREAD放在界面循环中行不
骗子 发表于 2011-8-30 16:15



    貌似不行软件一打开,已经读取配置到变量里面了。
发表于 2011-8-31 20:29:33 | 显示全部楼层
本帖最后由 lixiaolong 于 2011-8-31 20:45 编辑

回复 1# .個朲綉√


Local $Config_File = @ScriptDir & "\Config.ini"
Local $Xls_File = IniRead($Config_File, "System", "Xls路径", "")
Local $Num_N = Number(IniRead($Config_File, "System", "号码列", ""));号码列
Local $Read_N = Number(IniRead($Config_File, "System", "读初始行", "3"));读初始行
Local $Write_N = Number(IniRead($Config_File, "System", "写记录列", "17"));写记录列
Local $Stop_N = Number(IniRead($Config_File, "System", "读号结束行", "502"));读号结束行


要读取INI里面的默认值不用指定"默认值".
Local $Config_File = @ScriptDir & "\Config.ini"
Local $Xls_File = IniRead($Config_File, "System", "Xls路径", "")
Local $Num_N = Number(IniRead($Config_File, "System", "号码列", ""));号码列
Local $Read_N = Number(IniRead($Config_File, "System", "读初始行", ""));读初始行
Local $Write_N = Number(IniRead($Config_File, "System", "写记录列", ""));写记录列
Local $Stop_N = Number(IniRead($Config_File, "System", "读号结束行", ""));读号结束行



你启动程序时声明变量($Stop_N) 并设定初值, 初值是读取INI的默认值(比如502)
Local $Stop_N = Number(IniRead($Config_File, "System", "读号结束行", "502"));读号结束行

那么 $Stop_N 是从头到尾都是502.

For $i = $Read_N To $Stop_N 就是 $Read_N To 502.

你想读取现在的默认值就得需要初始化.

Case $Button1
$Stop_N = Number(IniRead($Config_File, "System", "读号结束行", "")) ; 加这行就可以了.
For $i = $Read_N To $Stop_N

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
.個朲綉√ + 30 + 5 谢谢,明白问题出在哪了。

查看全部评分

 楼主| 发表于 2011-9-1 12:53:16 | 显示全部楼层
回复  .個朲綉√




要读取INI里面的默认值不用指定"默认值".



你启动程序时声明变量($Stop_N ...
lixiaolong 发表于 2011-8-31 20:29



    谢谢您的帮助,问题解决了。。
发表于 2012-12-28 17:21:38 | 显示全部楼层
先收藏等有时间在看!!!!!!!!啊啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-18 11:17 , Processed in 0.100538 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表