Modify

Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#1247 closed Bug (Fixed)

Reading the edit of a comboboxEx with style $CBS_DROPDOWN and $WS_VSCROLL

Reported by: christophamort Owned by: Gary
Milestone: 3.3.1.5 Component: Standard UDFs
Version: 3.3.0.0 Severity: Blocking
Keywords: comboboxEx GetEditText Cc:

Description

The function _GUICtrlComboBoxEx_GetEditText does not give the inputs content, when called on a comboboxEx with the default style ($CBS_DROPDOWN $WS_VSCROLL). It always returns "".

code from autoit documentation with some changes:

#include <Debug.au3>
#include <GuiComboBoxEx.au3>
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>

Opt('MustDeclareVars', 1)

$Debug_CB = True ; Check ClassName being passed to ComboBox/ComboBoxEx functions, set to True and use a handle to another control to see it work
ClipPut(_DebugBugReportEnv()) ; my Environment = 3.3.0.0 under  WIN_VISTA/Service Pack 2 X64
_Main()

Func _Main()
	Local $hGUI, $hImage, $hCombo
	
	; Create GUI
	$hGUI = GUICreate("ComboBoxEx Get Edit Text", 400, 300)
	$hCombo = _GUICtrlComboBoxEx_Create ($hGUI, "", 2, 2, 394, 100)
	GUISetState()

	$hImage = _GUIImageList_Create (16, 16, 5, 3)
	_GUIImageList_AddIcon ($hImage, @SystemDir & "\shell32.dll", 110)
	_GUIImageList_AddIcon ($hImage, @SystemDir & "\shell32.dll", 131)
	_GUIImageList_AddIcon ($hImage, @SystemDir & "\shell32.dll", 165)
	_GUIImageList_AddIcon ($hImage, @SystemDir & "\shell32.dll", 168)
	_GUIImageList_AddIcon ($hImage, @SystemDir & "\shell32.dll", 137)
	_GUIImageList_AddIcon ($hImage, @SystemDir & "\shell32.dll", 146)
	_GUIImageList_Add ($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, 0xFF0000, 16, 16))
	_GUIImageList_Add ($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, 0x00FF00, 16, 16))
	_GUIImageList_Add ($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, 0x0000FF, 16, 16))
	_GUICtrlComboBoxEx_SetImageList ($hCombo, $hImage)

	For $x = 0 To 8
		_GUICtrlComboBoxEx_AddString ($hCombo, StringFormat("%03d : Random string", Random(1, 100, 1)), $x, $x)
	Next
	
	; Set Edit Text
	_GUICtrlComboBoxEx_SetEditText ($hCombo, StringFormat("%03d : Random string", Random(1, 100, 1)))
	
	; Get Edit Text
	MsgBox(4160, "Information", "Edit Text: " & _GUICtrlComboBoxEx_GetEditText ($hCombo))
	
	Do
	; Get Edit Text ond dirfferent selections
	MsgBox(4160, "Information", "Edit Text: " & _GUICtrlComboBoxEx_GetEditText ($hCombo))
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

; Environment = 3.3.0.0 under WIN_VISTA/Service Pack 2 X64


Attachments (0)

Change History (10)

comment:1 Changed 10 years ago by Valik

That script wins my award for most obnoxious script to reproduce a bug ever invented. I think you could have spent another 30 seconds and added a button and hooked it up to read the text rather than prompting with an obnoxious noise making message box.

comment:2 Changed 10 years ago by christophamort

time is money!
c.

obnoxious! didn't know that word before, that's worth 100$$.

Il pagamento è stato inviato.
ID transazione: 2LE2951841735....
Il pagamento del tuo acquisto da ... è stato inviato.

Conserva questo ID ricevuta e le informazioni di contatto in caso tu abbia bisogno di contattare il commerciante o PayPal. Una ricevuta di questa transazione è stata inviata al tuo indirizzo email.

comment:3 Changed 10 years ago by Valik

If you have nothing intelligent to impart then don't bother posting, otherwise you may find yourself unable to post any longer. The same applies for posting in languages other than English.

comment:4 Changed 10 years ago by Valik

Here is a shorter and less annoying example:

#include <GuiComboBoxEx.au3>
#include <GuiConstantsEx.au3>

_Main()

Func _Main()
	Local $hGUI = GUICreate("ComboBoxEx Get Edit Text", 400, 300)
	Local $hCombo = _GUICtrlComboBox_Create ($hGUI, "", 2, 2, 394, 100)
	Local $hButton = GUICtrlCreateButton("Read", 4, 150, 50, 25)
	GUISetState()

	For $x = 0 To 8
 		_GUICtrlComboBoxEx_AddString ($hCombo, StringFormat("%03d : Random string", Random(1, 100, 1)), $x, $x)
	Next

	; Setting the edit text fails.
	_GUICtrlComboBoxEx_SetEditText ($hCombo, StringFormat("%03d : Random string", Random(1, 100, 1)))

	While True
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $hButton
				; Reading the edit text fails.
				MsgBox(4160, "Information", "Edit Text: " & _GUICtrlComboBoxEx_GetEditText ($hCombo))
		EndSwitch
	WEnd
EndFunc   ;==>_Main

comment:5 Changed 10 years ago by Valik

  • Severity changed from None to Blocking

comment:6 Changed 10 years ago by Jpm

I was prepare to answer that is the Way windows work.
I assume Valik found a solution to fix it as it is now in Blocking state.

comment:7 Changed 10 years ago by Valik

Blocking means a ticket needs closed before the release, not that anything needs to change. If you are 100% sure this is an intentional Windows limitation that cannot be easily worked around then close the ticket.

comment:8 Changed 10 years ago by Gary

  • Milestone set to 3.3.1.5
  • Resolution set to Fixed
  • Status changed from new to closed

Fixed by revision [5340] in version: 3.3.1.5

comment:9 Changed 10 years ago by Valik

Just mentioning that this isn't fixed in that it will work. It's only fixed in that it's been documented that it doesn't work. It's a Windows design limitation.

comment:10 Changed 10 years ago by Valik

This ticket is referenced in revision: [5343]

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Modify Ticket

Action
as closed The owner will remain Gary.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.