找回密码
 加入
搜索
查看: 18453|回复: 34

[AU3基础] 发一个AU3的活动表格(试验品)

 火... [复制链接]
发表于 2011-11-27 21:17:19 | 显示全部楼层 |阅读模式
本帖最后由 dnbj2010 于 2011-11-27 22:54 编辑

发一个AU3的活动表格
奇怪,RAR附件发不上,看不到上传选择,网络问题?
汗死!这垃圾网络...

本帖子中包含更多资源

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

×
发表于 2011-11-27 21:41:36 | 显示全部楼层
沙发上有人等待楼主上传呢!
 楼主| 发表于 2011-11-27 22:55:48 | 显示全部楼层
不易啊,终于传上了。
截图:

本帖子中包含更多资源

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

×
发表于 2011-11-27 23:13:43 | 显示全部楼层
看看啦!!!!
发表于 2011-11-27 23:48:42 | 显示全部楼层
咦,这个不错,看看,哈哈哈,谢谢楼主分享..
发表于 2011-11-28 09:12:54 | 显示全部楼层
没有源码的哈。。
 楼主| 发表于 2011-11-28 10:15:00 | 显示全部楼层
上源码:
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>

Opt("GUIOnEventMode", 1) 

Local $Edit[100][100],$Hount=3,$WCount=3,$Ctr[10][10],$j=0 

$Form1 = GUICreate("Form1", 700, 444, 150, 120)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

For $b = 1 to $Hount
    For $a = 1 to $WCount
                $j = $j + 1
                $Edit[$a][$b] =  GUICtrlCreateEdit($j, 130+($a-1)*170, 66+($b-1)*90, 170, 90, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
    Next        
Next
$Label1 = GUICtrlCreateLabel("把鼠标移到边线 按下左键 可以调整单元格的大小", 200, 10, 300, 17)

GUISetState(@SW_SHOW)

While 1
     Sleep(1)
         $GUICur = GUIGetCursorInfo($Form1)         
                 If $GUICur[2] = 1 Then
                 lashen()
         EndIf
WEnd

Func lashen()
                $k = 1
        $Ctr1 = ControlGetPos("Form1","",$Edit[1][1])          ;控件信息
                $Ctr2 = ControlGetPos("Form1","",$Edit[2][1])               
                $Ctr3 = ControlGetPos("Form1","",$Edit[3][1])               
                
                $Ctr4 = ControlGetPos("Form1","",$Edit[1][2])              
                $Ctr5 = ControlGetPos("Form1","",$Edit[2][2])              
                $Ctr6 = ControlGetPos("Form1","",$Edit[3][2])
                
                $Ctr7 = ControlGetPos("Form1","",$Edit[1][3])
                $Ctr8 = ControlGetPos("Form1","",$Edit[2][3])
                $Ctr9 = ControlGetPos("Form1","",$Edit[3][3])
                 
                $nPos = WinGetPos("Form1") ;主窗信息
        
        ;-------------------------------------------------------------------------------右边                
                $La1x1 = ($GUICur[0] > $Ctr1[0] + $Ctr1[2]- 8)    
                $La1x2 = ($GUICur[0] < $Ctr1[0] + $Ctr1[2])      

                $La2x1 = ($GUICur[0] > $Ctr2[0] + $Ctr2[2]- 8)    
                $La2x2 = ($GUICur[0] < $Ctr2[0] + $Ctr2[2])      
                                
                $La3x1 = ($GUICur[0] > $Ctr3[0] + $Ctr3[2]- 8)    
                $La3x2 = ($GUICur[0] < $Ctr3[0] + $Ctr3[2])     
       ;--------------------------------------------------------------------------------左边        
                                 $Ra1x1 = ($GUICur[0] < $Ctr1[0]+ 8)       
                $Ra1x2 = ($GUICur[0] > $Ctr1[0])          
                                
                                $Ra2x1 = ($GUICur[0] < $Ctr2[0]+ 8)      
                $Ra2x2 = ($GUICur[0] > $Ctr2[0])        

                                $Ra3x1 = ($GUICur[0] < $Ctr3[0]+ 8)      
                $Ra3x2 = ($GUICur[0] > $Ctr3[0])        
        ;------------------------------------------------------------------------------        上边        
                $Ta1y1 = ($GUICur[1] < $Ctr1[1]+ 8)      
                        $Ta1y2 = ($GUICur[1] > $Ctr1[1])     
                                
                                $Ta4y1 = ($GUICur[1] < $Ctr4[1]+ 8)     
                        $Ta4y2 = ($GUICur[1] > $Ctr4[1])     
                                
                                $Ta7y1 = ($GUICur[1] < $Ctr7[1]+ 8)      
                        $Ta7y2 = ($GUICur[1] > $Ctr7[1])      
        ;------------------------------------------------------------------------------下边
                                $Ea1y1 = ($GUICur[1] > $Ctr1[1] + $Ctr1[3]- 8)      
                            $Ea1y2 = ($GUICur[1] < $Ctr1[1] + $Ctr1[3])      
                                
                                $Ea4y1 = ($GUICur[1] > $Ctr4[1] + $Ctr4[3]- 8)      
                            $Ea4y2 = ($GUICur[1] < $Ctr4[1] + $Ctr4[3])      
                                
                                $Ea7y1 = ($GUICur[1] > $Ctr7[1] + $Ctr7[3]- 8)      
                            $Ea7y2 = ($GUICur[1] < $Ctr7[1] + $Ctr7[3])      
        ;------------------------------------------------------------------------------
        If $La1x1 And $La1x2 Then 
                        If $k = 1 Then
                           ControlMove ("Form1","", $Edit[1][1],$Ctr1[0],$Ctr1[1],$GUICur[0]+4-$Ctr1[0],$Ctr1[3])
                           ControlMove ("Form1","", $Edit[1][2],$Ctr4[0],$Ctr4[1],$GUICur[0]+4-$Ctr4[0],$Ctr4[3])
                           ControlMove ("Form1","", $Edit[1][3],$Ctr7[0],$Ctr7[1],$GUICur[0]+4-$Ctr7[0],$Ctr7[3])                                                      
                           ControlMove ("Form1","", $Edit[2][1],$GUICur[0]+8-4,$Ctr2[1],$Ctr2[2]-($GUICur[0]+8-4-$Ctr2[0]),$Ctr2[3])
                           ControlMove ("Form1","", $Edit[2][2],$GUICur[0]+8-4,$Ctr5[1],$Ctr5[2]-($GUICur[0]+8-4-$Ctr5[0]),$Ctr5[3])
                           ControlMove ("Form1","", $Edit[2][3],$GUICur[0]+8-4,$Ctr8[1],$Ctr8[2]-($GUICur[0]+8-4-$Ctr8[0]),$Ctr8[3])
                        EndIf
                EndIf

        If $Ra1x1 And $Ra1x2 Then 
                        If $k = 1 Then
               ControlMove ("Form1","", $Edit[1][1],$GUICur[0]-4,$Ctr1[1],$Ctr1[2]-($GUICur[0]-4-$Ctr1[0]),$Ctr1[3])
               ControlMove ("Form1","", $Edit[1][2],$GUICur[0]-4,$Ctr4[1],$Ctr4[2]-($GUICur[0]-4-$Ctr4[0]),$Ctr4[3])
               ControlMove ("Form1","", $Edit[1][3],$GUICur[0]-4,$Ctr7[1],$Ctr7[2]-($GUICur[0]-4-$Ctr7[0]),$Ctr7[3])                           
                        EndIf
                EndIf                           
        
        If $Ta1y1 And $Ta1y2 Then  
                        If $k = 1 Then
               ControlMove ("Form1","", $Edit[1][1],$Ctr1[0],$GUICur[1]-4,$Ctr1[2],$Ctr1[3]-($GUICur[1]-4-$Ctr1[1])) 
                           ControlMove ("Form1","", $Edit[2][1],$Ctr2[0],$GUICur[1]-4,$Ctr2[2],$Ctr2[3]-($GUICur[1]-4-$Ctr2[1]))
                           ControlMove ("Form1","", $Edit[3][1],$Ctr3[0],$GUICur[1]-4,$Ctr3[2],$Ctr3[3]-($GUICur[1]-4-$Ctr3[1]))
                        EndIf
                EndIf                

        If $Ea1y1 And $Ea1y2 Then 
                        If $k = 1 Then
               ControlMove ("Form1","", $Edit[1][1],$Ctr1[0],$Ctr1[1],$Ctr1[2],$GUICur[1]+4-$Ctr1[1]) 
               ControlMove ("Form1","", $Edit[2][1],$Ctr2[0],$Ctr2[1],$Ctr2[2],$GUICur[1]+4-$Ctr2[1])
               ControlMove ("Form1","", $Edit[3][1],$Ctr3[0],$Ctr3[1],$Ctr3[2],$GUICur[1]+4-$Ctr3[1])
               ControlMove ("Form1","", $Edit[1][2],$Ctr4[0],$GUICur[1]+8-4,$Ctr4[2],$Ctr4[3]-($GUICur[1]+8-4-$Ctr4[1])) 
                              ControlMove ("Form1","", $Edit[2][2],$Ctr5[0],$GUICur[1]+8-4,$Ctr5[2],$Ctr5[3]-($GUICur[1]+8-4-$Ctr5[1]))
                              ControlMove ("Form1","", $Edit[3][2],$Ctr6[0],$GUICur[1]+8-4,$Ctr6[2],$Ctr6[3]-($GUICur[1]+8-4-$Ctr6[1]))
                        EndIf
                   EndIf

                If $Ra2x1 And $Ra2x2 Then 
                        If $k = 1 Then
                              ControlMove ("Form1","", $Edit[1][1],$Ctr1[0],$Ctr1[1],$GUICur[0]-8+4-$Ctr1[0],$Ctr1[3])
               ControlMove ("Form1","", $Edit[2][1],$GUICur[0]-4,$Ctr2[1],$Ctr2[2]-($GUICur[0]-4-$Ctr2[0]),$Ctr2[3])                          
                           ControlMove ("Form1","", $Edit[1][2],$Ctr4[0],$Ctr4[1],$GUICur[0]-8+4-$Ctr4[0],$Ctr4[3])
                           ControlMove ("Form1","", $Edit[1][3],$Ctr7[0],$Ctr7[1],$GUICur[0]-8+4-$Ctr7[0],$Ctr7[3])                                                      
                           ControlMove ("Form1","", $Edit[2][2],$GUICur[0]-4,$Ctr5[1],$Ctr5[2]-($GUICur[0]-4-$Ctr5[0]),$Ctr5[3])
                           ControlMove ("Form1","", $Edit[2][3],$GUICur[0]-4,$Ctr8[1],$Ctr8[2]-($GUICur[0]-4-$Ctr8[0]),$Ctr8[3])
                        EndIf
                   EndIf        

                If $La2x1 And $La2x2 Then 
                        If $k = 1 Then
                           ControlMove ("Form1","", $Edit[2][1],$Ctr2[0],$Ctr2[1],$GUICur[0]+4-$Ctr2[0],$Ctr2[3])
                           ControlMove ("Form1","", $Edit[2][2],$Ctr5[0],$Ctr5[1],$GUICur[0]+4-$Ctr5[0],$Ctr5[3])
                           ControlMove ("Form1","", $Edit[2][3],$Ctr8[0],$Ctr8[1],$GUICur[0]+4-$Ctr8[0],$Ctr8[3])                                                      
                           ControlMove ("Form1","", $Edit[3][1],$GUICur[0]+8-4,$Ctr3[1],$Ctr3[2]-($GUICur[0]+8-4-$Ctr3[0]),$Ctr3[3])
                           ControlMove ("Form1","", $Edit[3][2],$GUICur[0]+8-4,$Ctr6[1],$Ctr6[2]-($GUICur[0]+8-4-$Ctr6[0]),$Ctr6[3])
                           ControlMove ("Form1","", $Edit[3][3],$GUICur[0]+8-4,$Ctr9[1],$Ctr9[2]-($GUICur[0]+8-4-$Ctr9[0]),$Ctr9[3])
                        EndIf

                   EndIf

                If $Ra3x1 And $Ra3x2 Then 
                        If $k = 1 Then
                              ControlMove ("Form1","", $Edit[2][1],$Ctr2[0],$Ctr2[1],$GUICur[0]-8+4-$Ctr2[0],$Ctr2[3])
               ControlMove ("Form1","", $Edit[3][1],$GUICur[0]-4,$Ctr3[1],$Ctr3[2]-($GUICur[0]-4-$Ctr3[0]),$Ctr3[3])                           
                           ControlMove ("Form1","", $Edit[2][2],$Ctr5[0],$Ctr5[1],$GUICur[0]-8+4-$Ctr5[0],$Ctr5[3])
                           ControlMove ("Form1","", $Edit[2][3],$Ctr8[0],$Ctr8[1],$GUICur[0]-8+4-$Ctr8[0],$Ctr8[3])           
                           ControlMove ("Form1","", $Edit[3][2],$GUICur[0]-4,$Ctr6[1],$Ctr6[2]-($GUICur[0]-4-$Ctr6[0]),$Ctr6[3])
                           ControlMove ("Form1","", $Edit[3][3],$GUICur[0]-4,$Ctr9[1],$Ctr9[2]-($GUICur[0]-4-$Ctr9[0]),$Ctr9[3])                              
                        EndIf
                   EndIf

                If $La3x1 And $La3x2 Then 
                        If $k = 1 Then
                           ControlMove ("Form1","", $Edit[3][1],$Ctr3[0],$Ctr3[1],$GUICur[0]+4-$Ctr3[0],$Ctr3[3])
                           ControlMove ("Form1","", $Edit[3][2],$Ctr6[0],$Ctr6[1],$GUICur[0]+4-$Ctr6[0],$Ctr6[3])
                           ControlMove ("Form1","", $Edit[3][3],$Ctr9[0],$Ctr9[1],$GUICur[0]+4-$Ctr9[0],$Ctr9[3])
                        EndIf
                   EndIf

        If $Ta4y1 And $Ta4y2 Then 
                        If $k = 1 Then
               ControlMove ("Form1","", $Edit[1][1],$Ctr1[0],$Ctr1[1],$Ctr1[2],$GUICur[1]-8+4-$Ctr1[1]) 
               ControlMove ("Form1","", $Edit[2][1],$Ctr2[0],$Ctr2[1],$Ctr2[2],$GUICur[1]-8+4-$Ctr2[1])
               ControlMove ("Form1","", $Edit[3][1],$Ctr3[0],$Ctr3[1],$Ctr3[2],$GUICur[1]-8+4-$Ctr3[1])                                   
               ControlMove ("Form1","", $Edit[1][2],$Ctr4[0],$GUICur[1]-4,$Ctr4[2],$Ctr4[3]-($GUICur[1]-4-$Ctr4[1])) 
                              ControlMove ("Form1","", $Edit[2][2],$Ctr5[0],$GUICur[1]-4,$Ctr5[2],$Ctr5[3]-($GUICur[1]-4-$Ctr5[1]))
                              ControlMove ("Form1","", $Edit[3][2],$Ctr6[0],$GUICur[1]-4,$Ctr6[2],$Ctr6[3]-($GUICur[1]-4-$Ctr6[1]))
                        EndIf
                   EndIf

        If $Ea4y1 And $Ea4y2 Then 
                        If $k = 1 Then
               ControlMove ("Form1","", $Edit[1][2],$Ctr4[0],$Ctr4[1],$Ctr4[2],$GUICur[1]+4-$Ctr4[1]) 
               ControlMove ("Form1","", $Edit[2][2],$Ctr5[0],$Ctr5[1],$Ctr5[2],$GUICur[1]+4-$Ctr5[1])
               ControlMove ("Form1","", $Edit[3][2],$Ctr6[0],$Ctr6[1],$Ctr6[2],$GUICur[1]+4-$Ctr6[1])                                   
               ControlMove ("Form1","", $Edit[1][3],$Ctr7[0],$GUICur[1]+8-4,$Ctr7[2],$Ctr7[3]-($GUICur[1]+8-4-$Ctr7[1])) 
                              ControlMove ("Form1","", $Edit[2][3],$Ctr8[0],$GUICur[1]+8-4,$Ctr8[2],$Ctr8[3]-($GUICur[1]+8-4-$Ctr8[1]))
                              ControlMove ("Form1","", $Edit[3][3],$Ctr9[0],$GUICur[1]+8-4,$Ctr9[2],$Ctr9[3]-($GUICur[1]+8-4-$Ctr9[1]))
                        EndIf
                   EndIf

        If $Ta7y1 And $Ta7y2 Then 
                        If $k = 1 Then
               ControlMove ("Form1","", $Edit[1][2],$Ctr4[0],$Ctr4[1],$Ctr4[2],$GUICur[1]-8+4-$Ctr4[1]) 
               ControlMove ("Form1","", $Edit[2][2],$Ctr5[0],$Ctr5[1],$Ctr5[2],$GUICur[1]-8+4-$Ctr5[1])
               ControlMove ("Form1","", $Edit[3][2],$Ctr6[0],$Ctr6[1],$Ctr6[2],$GUICur[1]-8+4-$Ctr6[1])
               ControlMove ("Form1","", $Edit[1][3],$Ctr7[0],$GUICur[1]-4,$Ctr7[2],$Ctr7[3]-($GUICur[1]-4-$Ctr7[1])) 
                              ControlMove ("Form1","", $Edit[2][3],$Ctr8[0],$GUICur[1]-4,$Ctr8[2],$Ctr8[3]-($GUICur[1]-4-$Ctr8[1]))
                              ControlMove ("Form1","", $Edit[3][3],$Ctr9[0],$GUICur[1]-4,$Ctr9[2],$Ctr9[3]-($GUICur[1]-4-$Ctr9[1]))
                        EndIf
                   EndIf

        If $Ea7y1 And $Ea7y2 Then 
                        If $k = 1 Then
               ControlMove ("Form1","", $Edit[1][3],$Ctr7[0],$Ctr7[1],$Ctr7[2],$GUICur[1]+4-$Ctr7[1]) 
               ControlMove ("Form1","", $Edit[2][3],$Ctr8[0],$Ctr8[1],$Ctr8[2],$GUICur[1]+4-$Ctr8[1])
               ControlMove ("Form1","", $Edit[3][3],$Ctr9[0],$Ctr9[1],$Ctr9[2],$GUICur[1]+4-$Ctr9[1])
                        EndIf
                   EndIf
EndFunc

Func CLOSEClicked()
GUIDelete($Form1)
Exit
EndFunc
 楼主| 发表于 2011-11-28 10:25:33 | 显示全部楼层
上面的代码还可以用数组精简一下。

这里有问题还要请教一下高手,
如下:

        $Ctr1 = ControlGetPos("Form1","",$Edit[1][1])   

$Ctr1返回的是一个数组,这对于指明的单个控件没问题

但下面这种:
        $Ctr1 = ControlGetPos("Form1","",$Edit[1][1])   
        $Ctr2 = ControlGetPos("Form1","",$Edit[2][1])               
        $Ctr3 = ControlGetPos("Form1","",$Edit[3][1])  
        ......................................
        .....................................
是动态生成的 $Ctr1,$Ctr2,$Ctr3,$Ctr4,$Ctr5......
尝试用:$Ctr[$i],或者$Ctr[$i][$h] 这种方式来表达,行不通
因为: $Ctr[$i] = ControlGetPos("Form1","",$Edit[$i][1])    这种表达式 AU3显示错误

这种情况应如何表达?
这种情况应如何表达?
这种情况应如何表达?
.......
.......
发表于 2011-11-28 12:27:49 | 显示全部楼层
记得有人说过好像用eval吧
发表于 2011-11-28 14:00:09 | 显示全部楼层
回复 10# zxxputian


    变量名:  $ad1,$ad2,$ad3
  用eval 的等效值变量:
          $ad1   =   eval("ad1")
     1 2 3 可以变动,那就可以这样写
        eval("ad"&$i)        这里的$i 就是你的  1 2 3  自己去for
==================================================
GUICtrlRead($adv)  = GUICtrlRead(eval("adv"))

评分

参与人数 1金钱 +10 收起 理由
afan + 10

查看全部评分

 楼主| 发表于 2011-11-28 16:50:19 | 显示全部楼层
本帖最后由 dnbj2010 于 2011-11-28 17:21 编辑

回复 11# 绿色风

-----------------------------------------
谢谢回复,又多了解了一种变量表达式的写法。
但这个Eval ( 表达式 )还是不能解决对 ControlGetPos的动态变量的定义。
看来只好换种求控件坐标的方法了。

如下:Eval("Ctr"& $i)只能在ControlGetPos已经被定义的情况下才能有效,不能取代 $Ctr1 =  ...这一段
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $i = 1
$Form1 = GUICreate("Form1", 700, 444, 150, 120)
$Button1 = GUICtrlCreateButton("Button1", 248, 88, 75, 25)
$Ctr1 = ControlGetPos("Form1","",$Button1) 
MsgBox(0,"",Eval("Form"& $i))
MsgBox(0,"",Eval("Button"& $i))
MsgBox(0,"",Eval("Ctr"& $i))

GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd
发表于 2011-11-28 16:57:27 | 显示全部楼层
谢谢分享!
但下次发源码东西请发到源码区!
发无源码的成品请发作品展览区!
 楼主| 发表于 2011-11-28 17:27:10 | 显示全部楼层
谢谢分享!
但下次发源码东西请发到源码区!
发无源码的成品请发作品展览区!
user3000 发表于 2011-11-28 16:57


------------------------------------------

谢提醒,那这次麻烦版主把贴子挪到源码作品区吧。
发表于 2011-11-29 03:32:56 | 显示全部楼层
本帖最后由 绿色风 于 2011-11-29 03:44 编辑

回复 14# dnbj2010


    不知你是不是要这样的。

    用 eval 的大哥 Assign 去做。



#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Dim $button5

$Form1 = GUICreate("Form1", 700, 444, 150, 120)

For $i = 0 To 6        
        Assign("Button"&$i , GUICtrlCreateButton("按钮 - "&$i, 148, 18+$i * 30, 75, 25))
Next

$test1 = GUICtrlCreateButton("点我 ", 248, 50, 75, 25)
$test2 = GUICtrlCreateButton("直接显示 按钮5 ", 248, 80, 175, 25)
 
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                                Case $test1
                                        For $i = 0 To 6
                                                MsgBox(0,"",GUICtrlRead(Eval("button"&$i)))
                                        Next
                                Case $test2
                                        MsgBox(0,"",GUICtrlRead($button5)) ;这样写时,$button5需要事先声明
        EndSwitch
        WEnd
        
 

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2011-11-29 03:36:21 | 显示全部楼层
解决你的


   
        $Ctr1 = ControlGetPos("Form1","",$Edit[1][1])   
        $Ctr2 = ControlGetPos("Form1","",$Edit[2][1])               
        $Ctr3 = ControlGetPos("Form1","",$Edit[3][1])



应该没问题吧


        For $i = 1 To 3
                Assign("ctr"&$i,  ControlGetPos("Form1","",$Edit[$i][1])    
        Next
        
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 21:45 , Processed in 0.098097 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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