找回密码
 加入
搜索
查看: 6650|回复: 10

[GUI管理] [已解决]請教 連續數據的修改 該怎樣 簡短?

  [复制链接]
发表于 2012-2-10 23:07:16 | 显示全部楼层 |阅读模式
本帖最后由 tcpuuu 于 2012-2-22 15:42 编辑

;GUICtrlSetData($A1,GUICtrlRead($A2));抓數據到$A2
;GUICtrlSetData($A2,GUICtrlRead($A3));抓數據到$A2
;GUICtrlSetData($A3,GUICtrlRead($A4));抓數據到$A2
;GUICtrlSetData($A4,GUICtrlRead($A5));抓數據到$A2
;GUICtrlSetData($A5,GUICtrlRead($A6));抓數據到$A2
;GUICtrlSetData($A6,GUICtrlRead($A7));抓數據到$A2
;GUICtrlSetData($A7,GUICtrlRead($A8));抓數據到$A2
;GUICtrlSetData($A8,GUICtrlRead($A9));抓數據到$A2
;GUICtrlSetData($A9,GUICtrlRead($A10));抓數據到$A2
;GUICtrlSetData($A10,GUICtrlRead($A11));抓數據到$A2
;GUICtrlSetData($A11,GUICtrlRead($A12));抓數據到$A2
;GUICtrlSetData($A12,GUICtrlRead($A13));抓數據到$A2
;GUICtrlSetData($A13,GUICtrlRead($A14));抓數據到$A2
;GUICtrlSetData($A14,GUICtrlRead($A15));抓數據到$A2
;GUICtrlSetData($A15,GUICtrlRead($A16));抓數據到$A2
;GUICtrlSetData($A16,GUICtrlRead($A17));抓數據到$A2
;GUICtrlSetData($A17,GUICtrlRead($A18));抓數據到$A2
;GUICtrlSetData($A18,GUICtrlRead($A19));抓數據到$A2

For $i = $A1 to $A18
For $J = $A2 to $A19
GUICtrlSetData($i,$J)
Next
Next
=========================================
1改成2  2改成3  99改成100
发表于 2012-2-11 00:42:09 | 显示全部楼层
本帖最后由 半芯竹 于 2012-2-11 00:47 编辑


local $a[20]
for $i=1 to 18
GUICtrlSetData($a[$i],GUICtrlRead($a[$i+1]))
next
 楼主| 发表于 2012-2-11 03:42:25 | 显示全部楼层
本帖最后由 tcpuuu 于 2012-2-11 03:46 编辑

好像不行?
www 應該往上 跑1格
最後18改成 19的數值
GUICreate('ABC',200,430,-1,-1)       
Global $A1 = GUICtrlCreateLabel   ("",2, 45,42,16,0x00800000,0x01) 
Global $A2 = GUICtrlCreateLabel   ("",2, 63,42,16,0x00800000,0x01) 
Global $A3 = GUICtrlCreateLabel   ("",2, 81,42,16,0x00800000,0x01)
Global $A4 = GUICtrlCreateLabel   ("",2, 99,42,16,0x00800000,0x01)
Global $A5 = GUICtrlCreateLabel   ("",2, 117,42,16,0x00800000,0x01)
Global $A6 = GUICtrlCreateLabel   ("",2, 135,42,16,0x00800000,0x01) 
Global $A7 = GUICtrlCreateLabel   ("",2, 153,42,16,0x00800000,0x01) 
Global $A8 = GUICtrlCreateLabel   ("",2, 171,42,16,0x00800000,0x01)
Global $A9 = GUICtrlCreateLabel   ("",2, 189,42,16,0x00800000,0x01)
Global $A10 = GUICtrlCreateLabel  ("",2, 207,42,16,0x00800000,0x01)
Global $A11 = GUICtrlCreateLabel  ("",2, 225,42,16,0x00800000,0x01)
Global $A12 = GUICtrlCreateLabel  ("",2, 243,42,16,0x00800000,0x01) 
Global $A13 = GUICtrlCreateLabel  ("",2, 261,42,16,0x00800000,0x01)
Global $A14 = GUICtrlCreateLabel  ("",2, 279,42,16,0x00800000,0x01)
Global $A15 = GUICtrlCreateLabel  ("",2, 297,42,16,0x00800000,0x01)
Global $A16 = GUICtrlCreateLabel  ("",2, 315,42,16,0x00800000,0x01)
Global $A17 = GUICtrlCreateLabel  ("",2, 333,42,16,0x00800000,0x01)
Global $A18 = GUICtrlCreateLabel  ("",2, 351,42,16,0x00800000,0x01)
Global $A19 = GUICtrlCreateLabel  ("WWW",2, 369,42,16,0x00800000,0x01)

local $a[20]
for $i=1 to 18
GUICtrlSetData($a[$i],GUICtrlRead($a[$i+1]))
next

GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
发表于 2012-2-11 12:04:09 | 显示全部楼层
本帖最后由 半芯竹 于 2012-2-11 12:15 编辑

回复 3# tcpuuu


    你的问题,总是要人说得很清楚,一定要人帮你写好,你才满意……
明明都$a数组了。你还GLOBAL个P啊。。。

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

GUICreate('ABC',200,430,-1,-1)  
local $A[20]
 $A[1] = GUICtrlCreateLabel   ("",2, 45,42,16,0x00800000,0x01) 
 $A[2] = GUICtrlCreateLabel   ("你大爷",2, 63,42,16,0x00800000,0x01) 
 $A[3] = GUICtrlCreateLabel   ("",2, 81,42,16,0x00800000,0x01)
 $A[4] = GUICtrlCreateLabel   ("",2, 99,42,16,0x00800000,0x01)
 $A[5] = GUICtrlCreateLabel   ("",2, 117,42,16,0x00800000,0x01)
$A[6] = GUICtrlCreateLabel   ("",2, 135,42,16,0x00800000,0x01) 
 $A[7] = GUICtrlCreateLabel   ("",2, 153,42,16,0x00800000,0x01) 
 $A[8] = GUICtrlCreateLabel   ("",2, 171,42,16,0x00800000,0x01)
 $A[9] = GUICtrlCreateLabel   ("",2, 189,42,16,0x00800000,0x01)
 $A[10] = GUICtrlCreateLabel  ("",2, 207,42,16,0x00800000,0x01)
 $A[11] = GUICtrlCreateLabel  ("",2, 225,42,16,0x00800000,0x01)
 $A[12] = GUICtrlCreateLabel  ("",2, 243,42,16,0x00800000,0x01) 
 $A[13] = GUICtrlCreateLabel  ("",2, 261,42,16,0x00800000,0x01)
 $A[14] = GUICtrlCreateLabel  ("",2, 279,42,16,0x00800000,0x01)
 $A[15] = GUICtrlCreateLabel  ("",2, 297,42,16,0x00800000,0x01)
 $A[16] = GUICtrlCreateLabel  ("",2, 315,42,16,0x00800000,0x01)
 $A[17] = GUICtrlCreateLabel  ("",2, 333,42,16,0x00800000,0x01)
 $A[18] = GUICtrlCreateLabel  ("",2, 351,42,16,0x00800000,0x01)
 $A[19] = GUICtrlCreateLabel  ("WWW",2, 369,42,16,0x00800000,0x01)
GUISetState()
for $i=1 to 18
GUICtrlSetData($a[$i],GUICtrlRead($a[$i+1]))
next
While 1
        $msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd

以下是精简的。你自己看着办吧。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
local $A[20],$b=45
GUICreate('ABC',200,430,-1,-1)  
For $i = 1 To 19 
 $A[$i] = GUICtrlCreateLabel   ("",2, $b,42,16,0x00800000,0x01) 
 $b+=18
If $i= 3 Then GUICtrlSetData($a[$i],'你大爷啊')
If $i =10 Then GUICtrlSetData($a[$i],'你大娘啊')
If $i= 19 Then  GUICtrlSetData($a[$i],'www')
Next
GUISetState()
for $i=1 to 18
GUICtrlSetData($a[$i],GUICtrlRead($a[$i+1]))
next
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd

评分

参与人数 1金钱 +20 贡献 +5 收起 理由
tcpuuu + 20 + 5

查看全部评分

 楼主| 发表于 2012-2-11 12:45:10 | 显示全部楼层
本帖最后由 tcpuuu 于 2012-2-11 15:27 编辑

嗯 感謝!  本篇值得收藏  要編有眾多格的(要幾格有幾格) 極為方便 整整齊齊
我的問題已解決

在問1下 底下這個是 獲得$a1的數據
GUICtrlRead($a1)
如果要 獲得$a1 的背景顏色  要用 那個函數
发表于 2012-2-11 14:01:58 | 显示全部楼层
回复 5# tcpuuu


    背景色可不是那么容易获取的。
改变下思路吧,你这都是自己创建的控件,自己设置的颜色,完全可以都储存在一个数组变量里面,用的时候直接取,有变更时先变更到数组。哪用得着每次都要 GUICtrlRead() 之类的。
 楼主| 发表于 2012-2-11 15:18:43 | 显示全部楼层
感謝 AFAN 版主解說  說真的 我實是看不懂(只會拿現成的 修改)
上面是要實現所有數值往上移  希望連背景顏色也往上移

GUICtrlSetBkColor($A1,"跟$A2的背景顏色一樣")
修改$A1的顏色 跟$A2的背景顏色一樣  沒有這種函數嗎?
发表于 2012-2-11 15:56:02 | 显示全部楼层
回复 7# tcpuuu

都做成函数,还用你自己写什么?一个个搭就完了
发表于 2012-2-11 18:17:35 | 显示全部楼层
回复 7# tcpuuu


    要学会变通啊~
#include <Array.au3>

Local $iX = 19
Local $aBL_V[$iX], $aBL_C[$iX], $aBL_i[$iX]
Local $_L = 2, $_T = 23, $_YJ = 18, $_W = 42, $_H = 16

GUICreate('ABC', 200, 430)
For $i = 0 To $iX - 1
        $aBL_V[$i] = Random(1, 1000, 1)
        $aBL_i[$i] = GUICtrlCreateLabel($aBL_V[$i], $_L, $_T + $_YJ * $i, $_W, $_H, 0x00800000, 0x01)
        $aBL_C[$i] = Random(0, 0xFFFFFF, 1)
        GUICtrlSetBkColor(-1, $aBL_C[$i])
Next
$iBT = GUICtrlCreateButton('添加新值并上移', 70, 200, 100, 20)
GUISetState()

While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $iBT
                        _Add()
        EndSwitch
WEnd

Func _Add()
        _ArrayPush($aBL_V, Random(1, 1000, 1))
        _ArrayPush($aBL_C, Random(0, 0xFFFFFF, 1))
        For $i = 0 To $iX - 1
                GUICtrlSetData($aBL_i[$i], $aBL_V[$i])
                GUICtrlSetBkColor($aBL_i[$i], $aBL_C[$i])
        Next
EndFunc   ;==>_Add
 楼主| 发表于 2012-2-11 20:15:32 | 显示全部楼层
本帖最后由 tcpuuu 于 2012-2-11 20:17 编辑

afan 超級版主您好  太複雜我看不懂
還是非常感謝你
可以弄個 我看懂的嗎?

這是因為要在底下輸入數據時 先要將所有數往上移 空出位置來輸入   (輸入以後如果怎樣怎樣就變紅色)
GUICreate("EXCEL TEST",180,600, -1, -1)       
local $A[31],$AUP=20
For $i = 1 To 30
 $A[$i] = GUICtrlCreateInput("",2,$AUP,42,16)
 $AUP+=17
Next
for $i=1 to 29
GUICtrlSetData($A[$i],-3+($A[$i+1]))
next
GUICtrlSetBkColor($A[25],0xFF0000)
GUICtrlSetBkColor($A[20],0xFF0000)

$1But = GUICtrlCreateButton('添加新值并上移', 70, 200, 100, 20)

GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit

Case $1But

for $i=1 to 29
GUICtrlSetData($A[$i],GUICtrlRead($A[$i+1]));每個數值往上移
next
;=============================

;連顏色也往上移

;================================
EndSwitch

本帖子中包含更多资源

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

×
发表于 2012-2-11 20:44:14 | 显示全部楼层
#include <Array.au3>

Local $iX = 20        ;左侧队列数量
Local $aBL_V[$iX], $aBL_C[$iX], $aBL_i[$iX]
Local $_L = 2, $_T = 23, $_YJ = 18, $_W = 42, $_H = 16

GUICreate('ABC', 200, 430)
For $i = 0 To $iX - 1
        $aBL_V[$i] = Random(1, 100, 1)        ;1~100随机数,可以自己设置具体值
        $aBL_i[$i] = GUICtrlCreateLabel($aBL_V[$i], $_L, $_T + $_YJ * $i, $_W, $_H, 0x00800000, 0x01)
        $aBL_C[$i] = 0xFFFFFF
        If $aBL_V[$i] > 80 Then $aBL_C[$i] = 0xFF0000        ;假定数值 > 80 则为红色
        GUICtrlSetBkColor(-1, $aBL_C[$i])
Next
$iInp = GUICtrlCreateInput('', 70, 175, 100, 20)
$iBT = GUICtrlCreateButton('添加新值并上移', 70, 200, 100, 20)
GUISetState()

While 1
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $iBT, $iInp        ;点击按钮或在输入框回车即可添加
                        _Add(Number(GuiCtrlRead($iInp)))
        EndSwitch
WEnd

Func _Add($val)
        _ArrayPush($aBL_V, $val)
        Local $C = 0xFFFFFF
        If $val > 80 Then $C = 0xFF0000        ;假定数值 > 80 则为红色
        _ArrayPush($aBL_C, $C)
        For $i = 0 To $iX - 1
                GUICtrlSetData($aBL_i[$i], $aBL_V[$i])
                GUICtrlSetBkColor($aBL_i[$i], $aBL_C[$i])
        Next
EndFunc   ;==>_Add

评分

参与人数 1金钱 +30 收起 理由
tcpuuu + 30

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-24 08:18 , Processed in 0.099526 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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