找回密码
 加入
搜索
查看: 7546|回复: 20

[AU3基础] 如何获得控件是否可修改的状态

 火.. [复制链接]
发表于 2012-10-29 14:28:54 | 显示全部楼层 |阅读模式
利用ControlCommand中"IsVisible"和"IsEnabled"可获得控件可见和控件可用的状态,当控件可见且可用,但值不能被修改时,如何获得状态?
发表于 2012-10-29 16:32:00 | 显示全部楼层
while 1
      if ControlCommand ( "窗口标题", "窗口文本", 控件ID, "IsEnabled" )  = 1  and ControlCommand ( "窗口标题", "窗口文本", 控件ID, "IsVisible" )  = 1 then 
      msgbox(0,"","OK")
      exitloop
      endif
wend
楼主你是想要这效果?
发表于 2012-10-29 17:32:00 | 显示全部楼层
楼主说的不是状态,而是风格 - 只读属性。
发表于 2012-10-29 18:08:21 | 显示全部楼层
本帖最后由 netegg 于 2012-10-29 18:10 编辑

楼主,控件可用却不能改那怎么叫可用?除非挂着钩子或者其他的操作,那不是属性或者样式的事
发表于 2012-10-29 20:07:29 | 显示全部楼层
api 获取控件的样式及扩展样式
发表于 2012-10-30 10:34:34 | 显示全部楼层
回复 5# afan

API怎么搞?
下面这样不行,A大帮看看。
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>

Global Const $GWL_STYLE = -16
Global $isReadOnly = 1

$Form = GUICreate("test", 200, 150)
$hEdit = GUICtrlCreateEdit("赐予我力量吧!", 20, 40, 160, 30, BitOR($ES_READONLY, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
$Button1 = GUICtrlCreateButton("改变只读状态", 10, 90, 85, 40)
$Button2 = GUICtrlCreateButton("获取只读状态", 110, 90, 85, 40)
GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case $GUI_EVENT_CLOSE
                        ExitLoop
                Case $Button1
                        $isReadOnly = BitXOR($isReadOnly, 1)
                        _GUICtrlEdit_SetReadOnly($hEdit, $isReadOnly)
                Case $Button2
                        Local $result = DllCall("User32.dll", "dword", "GetWindowLong", "hwnd", $Form, "int", $GWL_STYLE)
                        If BitAND($result[0], $ES_READONLY) = $ES_READONLY Then
                                MsgBox(0, "Edit控件样式", "只读")
                        Else
                                MsgBox(0, "Edit控件样式", "可写")
                        EndIf
        EndSwitch
WEnd
发表于 2012-10-30 10:44:55 | 显示全部楼层
回复 6# xiehuahere


    "hwnd" 参数应该是 Edit 控件的句柄,非窗口句柄
发表于 2012-10-30 10:46:00 | 显示全部楼层
回复 7# afan


试过也不行的。不信你试试  ^_^
发表于 2012-10-30 10:48:10 | 显示全部楼层
回复  afan


试过也不行的。不信你试试  ^_^
xiehuahere 发表于 2012-10-30 10:46



    可以的,23行改一下
Local $result = DllCall("User32.dll", "dword", "GetWindowLong", "hwnd", GUICtrlGetHandle($hEdit), "int", $GWL_STYLE)
发表于 2012-10-30 10:50:57 | 显示全部楼层
本帖最后由 netegg 于 2012-10-30 10:53 编辑

回复 5# afan
afan,你看明白lz的意思了?我琢磨了n长时间也没搞明白lz到底要干什么
按理说不是很麻烦,记得我曾经写过一个combo,是编辑框可见可用但不能输入的,但那个简单用样式解决不了
发表于 2012-10-30 10:53:57 | 显示全部楼层
回复  afan
可见可用不能改实在想不明白 ...
netegg 发表于 2012-10-30 10:50



    只读就可以是“可见可用不能改”啊,可以“复制”操作不就是可用吗……
发表于 2012-10-30 11:00:07 | 显示全部楼层
回复 11# afan
所以我才没搞懂,lz说的这个可用和不能改到底是什么意思,只读相当于是禁用了,尤其是编辑框,如果只读了,光标好像就没有了,印象不深了
发表于 2012-10-30 11:02:40 | 显示全部楼层
回复 12# netegg


    编辑框 只读 时是可用的,可以“全选、复制”操作,只是不能修改而已。
发表于 2012-10-30 11:07:24 | 显示全部楼层
回复 13# afan
哦,这么说也对
发表于 2012-10-30 11:23:15 | 显示全部楼层
回复 9# afan


啊~~晕倒!!果然可以了。
  
一般来说,GUICtrlCreateEdit得到的是控件ID,但能否解释一下为什么_GUICtrlEdit_SetReadOnly的第一个参数也是要求句柄,但直接传控件ID也可以呢(帮助的例子里也是这样)??我是被帮助坑了啊~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-26 21:38 , Processed in 0.082602 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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