找回密码
 加入
搜索
楼主: We!

[GUI管理] GUI 內部控件由外部文件產生。[已解決]

  [复制链接]
 楼主| 发表于 2010-4-1 13:47:31 | 显示全部楼层
嗯! 了解!

我先把主題問題解決再來交流...
发表于 2010-4-7 19:50:42 | 显示全部楼层
一百五十几个,那用组或用Tab标签都不合适了,装不下或不好看。
建议采用Combo下拉选择。
 楼主| 发表于 2010-4-7 21:02:07 | 显示全部楼层
嗯! 如果不用 Combo 還有別的好方法嗎?

因為最後的時候, GUI 上 Group 會在做出一個顯示連線成功、失敗的 GUI

想不出別的辦法 囧!
发表于 2010-4-7 21:06:18 | 显示全部楼层
回复 18# We!


    我认为 Combo 是最理想的。155个项目……
选择某个项目,整个Gui都可以给它用,你还担心什么?

我写了个例子,一会给你
 楼主| 发表于 2010-4-7 21:14:43 | 显示全部楼层
這個 GUI 會按照上到下一直 RUN 下去的,

Group 裡或許還會加上一些 Checkbox 、CreateIcon、Button 等等 . . .

主要是由文件產生 GUI 這個地方就卡住了! 後面還有很多的想法沒辦法實現 :(
发表于 2010-4-7 21:20:01 | 显示全部楼层
不知道你的具体应用,不过以下代码可以拓展更多的需求
;
If Not FileExists('config.ini') Then
        For $i = 1 To 155
                IniWrite('config.ini', 'tip' & $i, 'name', '可点击的Label' & $i)
                IniWrite('config.ini', 'tip' & $i, 'ip', '127.0.0.' & $i)
        Next
        Msgbox(0, 0, 'config.ini 创建完毕~ ')
EndIf
;--------------以上会生成测试用的ini文件,以下脚本正式开始。

#include <ComboConstants.au3>
$ini = 'config.ini'

GUICreate('根据ini生成控件例子', 260, 120)
GUICtrlCreateLabel('请下拉选择项目:', 20, 24, 100, 17)
$Combo = GUICtrlCreateCombo("", 120, 20, 120, 20, BitOr($GUI_SS_DEFAULT_COMBO,0x0800,0x0003))
$Label = GUICtrlCreateLabel('', 20, 50, 120, 17)
GUICtrlSetColor(-1, 0x06366c)
GUICtrlSetFont(-1, 9, 800, 0)
GUICtrlSetCursor(-1, 0)
GUISetState()

$iniRSN = IniReadSectionNames($ini)
Dim $tmp, $ip = '还未选择'
For $i = 1 To $iniRSN[0] - 1
        $tmp &= $iniRSN[$i] & '|'
Next
$tmp &= $iniRSN[$i]
GUICtrlSetData($Combo, $tmp)

GUIRegisterMsg(0x0111, "WM_COMMAND")
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                Case $Label
                        MsgBox(0, 0, $ip)
        EndSwitch
WEnd

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
        Local $IdFrom, $iCode, $zdm, $name
        $IdFrom = BitAND($wParam, 0x0000FFFF)
        $iCode = BitShift($wParam, 16)
        If $iCode = 1 Then
                If $IdFrom = $Combo Then
                        $zdm = GUICtrlRead($Combo)
                        $name = IniRead($ini, $zdm, 'name', '')
                        GUICtrlSetData($Label, $name)
                        $ip = IniRead($ini, $zdm, 'ip', '')
                EndIf
        EndIf
EndFunc   ;==>WM_COMMAND
 楼主| 发表于 2010-4-7 21:30:19 | 显示全部楼层
萬分感謝!

我晚點再測試看看,目前還在上班中 囧!
 楼主| 发表于 2010-4-13 02:56:43 | 显示全部楼层
抱歉! 這麼久才上來測試、結貼,最近小弟有點忙碌...

近期要先寫別的,沒時間完善!

過些日子有寫一個大概,會在放上來請大家指教一下 :)

經測試 afan #21 是可行的,謝謝您的幫忙!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-9 05:01 , Processed in 0.073276 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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