找回密码
 加入
搜索
查看: 5806|回复: 13

[AU3基础] [已解决]根据txt文件的行数批量创建 lable 如何将文件名赋值到各个lable?

[复制链接]
发表于 2014-12-14 15:43:35 | 显示全部楼层 |阅读模式
本帖最后由 laomeng 于 2014-12-15 14:31 编辑

想根据txt中的各行 创建一个lable, 这个txt中的文件数不是固定的 。 目前可以根据行数创建labe 但是lable对应的文件名不知道怎么显示上去。这样做的话 lable的背景和上面的字体的背景 可以单独 设置吗?还有一个问题就是 如果点了lable 1 那么就执行c:\111\lable1\*.exe , 点了lable 2  c:\111\lable2\*.exe以此类推 . 谢谢指教!!
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
 #Include <File.au3>
Local $Lines = _FileCountLines("wz.txt") ;返回指定文件的总行数
Global $aButNum[$Lines] ;按钮总数
Global $iNumber = 3 ;
Global $X = 50, $Y = 50 
Opt('GUIOnEventMode', 1) 
GUICreate('循环创建按钮', 300, 300)
GUISetOnEvent(-3, '_ButtonEvents')
for $j = 1 To $Lines Step 1                              

$line = FileReadLine(".\wz.txt", $j) 
;InputBox("读取", "读取第 "& $j &"行: ", $Line); 每次读取一行文本,直到文件结束.
Next
For $i = 0 To UBound($aButNum) - 1
        $aButNum[$i] = GUICtrlCreateLabel($Line, $X * Mod($i, $iNumber) + 25, $Y * Floor($i / $iNumber) + 25, 50, 50)
        GUICtrlSetOnEvent(-1, '_ButtonEvents')
Next
GUISetState()
 
While 1
        Sleep(250)
WEnd
 
Func _ButtonEvents()
        Switch @GUI_CtrlId
                Case -3
                        Exit
                Case $aButNum[0] To $aButNum[UBound($aButNum) - 1]
                        MsgBox(0, '', '按钮 - ' & @GUI_CtrlId - $aButNum[0] + 1)
        EndSwitch
EndFunc  
wz.txt
第1个按钮
第2个按钮
第3个按钮
第4个按钮
第5个按钮
第6个按钮
第7个按钮
第8个按钮
第9个按钮
第10个按钮
第N个按钮
发表于 2014-12-14 16:31:38 | 显示全部楼层
回复 1# laomeng

Local $aLines
If Not _FileReadToArray("wz.txt", $aLines) Then Exit
Global $aBut[$aLines[0]] ;按钮总数
Global $iNumber = 3 ;
Global $X = 50, $Y = 50 
Opt('GUIOnEventMode', 1) 
GUICreate('循环创建按钮', 300, 300)
GUISetOnEvent(-3, '_ButtonEvents')
For $i = 1 To $aLines[0]
        $aBut[$i-1] = GUICtrlCreateLabel($aLines[$i], $X * Mod($i, $iNumber) + 25, $Y * Floor($i / $iNumber) + 25, 50, 50)
    GUICtrlSetOnEvent(-1, '_ButtonEvents')
Next
发表于 2014-12-14 17:53:34 | 显示全部楼层
本帖最后由 netegg 于 2014-12-14 17:57 编辑

回复 2# user3000
这样恐怕不行吧,创建出来的按钮,只执行相同操作 ,lz后面那个判断似乎不能省
不过楼主那个guisetonevent,好像也有点问题,退出的时候才执行,还建立什么按钮
 楼主| 发表于 2014-12-14 18:27:46 | 显示全部楼层
回复 2# user3000


    谢 我回去试下
 楼主| 发表于 2014-12-14 18:28:07 | 显示全部楼层
回复 3# netegg


    请指教
发表于 2014-12-14 19:01:48 | 显示全部楼层
回复 4# laomeng
已经记录下控件ID,当然它的背景色由你喜欢设成什么样了,这个自己试.
上个完整代码吧,我也不知道蛋老大具体指的什么地方.

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <File.au3>
Global $iNumber = 3 ;
Global $X = 380, $Y = 350
;Local $aLines
;If Not _FileReadToArray("wz.txt", $aLines) Then Exit
Local $aLines[11] = [10]
For $i = 1 To $aLines[0]
        $aLines[$i] = '第' & $i & '个按钮'
Next

Global $aBut[$aLines[0]] ;按钮总数
Global $iNumber = 3 ;
Global $X = 100, $Y = 30 
Opt('GUIOnEventMode', 1) 
GUICreate('循环创建按钮', 350, 200)
GUISetOnEvent(-3, '_ButtonEvents')
For $i = 0 To UBound($aBut) -1
         $aBut[$i] = GUICtrlCreateButton($aLines[$i+1], $X * Mod($i, $iNumber) + 25, $Y * Floor($i / $iNumber) + 25, 95, 28)
    GUICtrlSetOnEvent(-1, '_ButtonEvents')
Next
GUISetState()
While 1
        Sleep(250)
WEnd
 
Func _ButtonEvents()
        Switch @GUI_CtrlId
                Case -3
                        Exit
                                        Case $aBut[0] To $aBut[UBound($aBut) - 1]
                                                Local $seq = @GUI_CtrlId - $aBut[0] + 1
                                                Local $sPath = 'c:\111\lable' & $seq & '\'
                        MsgBox(0, '运行:', $sPath & '*.exe')
                                                ;local $aFile = _FileListToArray('c:\111\lable' & $seq, '*.exe', 1)
                                                ;If @error Then ContinueLoop
                                                ;For $i = 1 To $aFile[0]
                                                ;        Run($sPath & $aFile[$i])
                                                ;Next                                                
        EndSwitch
EndFunc  
发表于 2014-12-14 19:16:42 | 显示全部楼层
回复 6# user3000
lz的意思貌似是要执行不同的exe
 楼主| 发表于 2014-12-14 20:55:02 | 显示全部楼层
回复 6# user3000


    多谢  可以实现 想要的功能
 楼主| 发表于 2014-12-14 20:56:57 | 显示全部楼层
回复 7# netegg


    蛋哥 如果是这样的 话 是不是 还得到txt配置路径
发表于 2014-12-14 21:39:58 | 显示全部楼层
user3000写的差不多了,不过还需要注意一定,那么写的话,一定要注意运行的时间性,就是说一个程序运行的时候,要避免再点击其他按钮
 楼主| 发表于 2014-12-14 23:27:30 | 显示全部楼层
回复 10# netegg


    在run的时候 禁用一会其他 lable吗
发表于 2014-12-15 11:07:29 | 显示全部楼层
学习了,感谢分享!!
发表于 2014-12-15 14:04:32 | 显示全部楼层
其实可能有更简单的方式,点击的时候,run(guictrlread($label))估计就行了
 楼主| 发表于 2014-12-15 14:31:32 | 显示全部楼层
回复 14# netegg


    多谢 结帖!1
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-28 19:42 , Processed in 0.082924 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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