qst 发表于 2009-3-24 22:27:08

修改ComboBox输入框样式

该ComboBox初始状态为:编辑框禁止输入文本,但仍可以在ComboBox中先择项目,
如何在后面将其改为默许状态(编辑框可以输入文本)?


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

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 253, 193, 192, 124)
$Combo1 = GUICtrlCreateCombo("11", 48, 24, 137, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,"22|33")
$Button1 = GUICtrlCreateButton("切换为可输入状态", 64, 128, 105, 25, 0)
$Label1 = GUICtrlCreateLabel("该ComboBox初始状态为:编辑禁止输入文本,如何在后面将其改为默许的可输入状态?", 56, 56, 133, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlSetStyle($Combo1,$GUI_SS_DEFAULT_COMBO)
EndSwitch
WEnd

[ 本帖最后由 qst 于 2009-3-26 23:02 编辑 ]

sxd 发表于 2009-3-25 04:10:42

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

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 253, 193, 192, 124)
$Combo1 = GUICtrlCreateCombo("11", 48, 24, 137, 80, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "22|33")
GUICtrlSetState(-1, $GUI_DISABLE)
$Button1 = GUICtrlCreateButton("切换为可输入状态", 64, 128, 105, 25, 0)
$Label1 = GUICtrlCreateLabel("该ComboBox初始状态为:编辑禁止输入文本,如何在后面将其改为默许的可输入状态?", 56, 56, 133, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        GUICtrlSetState($Combo1, $GUI_ENABLE)
        EndSwitch
WEnd

qst 发表于 2009-3-25 07:22:53

回复 2# sxd 的帖子

不用要禁用combobox,只是要将其编辑框由禁止输入文本改为可以输入文本。整个过和程不影响conbobox的功能。

qst 发表于 2009-3-25 07:39:20

GUICtrlSetStyle($Combo1,$GUI_SS_DEFAULT_COMBO)
为什么这个不起作用??

llztt 发表于 2009-3-25 10:12:59

楼主的那个按纽确实不起作用

另问,楼主有办法初始化COMBOBOX的值吗?? 要求这个初始值不在COMBOBOX项值里。。
譬如象你代码中的COMBOX值为11|22||33, 我如果想在显示时默认为44,要求44不要在下拉列表里出现。。
呵呵,说的好乱,不知楼主明白意思没??

具体应用,譬如工具里,有个修改主页的功能,默认呢,显示出当前主页,而下拉COMBO里集成几个常用地址。。

sxd 发表于 2009-3-26 03:07:40

嗯我看错标题了

如果建立控件的时候设置能输入 那就会创建一个combobox 一个edit
如果不能输入 就只会创建一个combobox所以 应该没办法用一般方法来实现吧

不然就这样把 囧

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

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 253, 193, 192, 124)
$Combo1 = GUICtrlCreateCombo("11", 48, 24, 137, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,"22|33")
$Button1 = GUICtrlCreateButton("切换为可输入状态", 64, 128, 105, 25, 0)
$Label1 = GUICtrlCreateLabel("该ComboBox初始状态为:编辑禁止输入文本,如何在后面将其改为默许的可输入状态?", 56, 56, 133, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlDelete($Combo1)
$Combo1 = GUICtrlCreateCombo("11", 48, 24, 137, 25)
EndSwitch
WEnd

[ 本帖最后由 sxd 于 2009-3-26 03:08 编辑 ]

sxd 发表于 2009-3-26 03:10:56

原帖由 llztt 于 2009-3-25 10:12 发表 http://www.autoitx.com/images/common/back.gif
楼主的那个按纽确实不起作用

另问,楼主有办法初始化COMBOBOX的值吗?? 要求这个初始值不在COMBOBOX项值里。。
譬如象你代码中的COMBOX值为11|22||33, 我如果想在显示时默认为44,要求44不要在下拉列表里出现。 ...

先设置combo的值
再ControlSetText combo的edit

llztt 发表于 2009-3-26 11:48:55

非常感谢sxd,我的问题解决了,呵呵

至于楼主问题,先删再建的办法,在有TAB的情况下,有些麻烦,因为再建的控件在所有TAB里都是可见的

ollydbg 发表于 2009-3-26 11:58:46

最好能截个图 :)

qst 发表于 2009-3-26 23:04:58

回复 5# llztt 的帖子

#Include <GuiComboBox.au3>
_GUICtrlComboBox_SetEditText($hWnd, $sText)

llztt 发表于 2009-3-27 12:23:42

回复 10# qst 的帖子

恩,楼上这个也行呢,不过我还是用SXD说的ControlSetText 了,因为我的那个操作是针对input或者COMBO的。。而ControlSetText ,正好都适用于这两种控件。。
页: [1]
查看完整版本: 修改ComboBox输入框样式