Página 1 de 1

Autobusqueda Input

Publicado: 19 Mar 2013, 21:49
por dacu
Buenas acabo de hacer un scrip para realizar una autobusqueda de las posibles palabras que estas escribiendo en un input.

Me gustaría que me corrigieses lo máximo posible, ya que seguro que hay mejores formas de hacerlo. Pero bueno partiendo de este scrip creo que se puede hacer muy bien.

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GuiListView.au3>


$possibles = StringSplit("Tribal 1|Tribal 2|tetrix|tracmania|dragon|dragon 4", '|')
;AdlibEnable("highlightIP", 400)

Dim $IPList[3];the inputs
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")


$gui = GUICreate("My GUI edit",625, 495, 192, 124); will create a dialog box that when displayed is centered

$IP = GUICtrlCreateInput("", 160, 8, 377, 21)

$Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 145, 25)

$Button1 = GUICtrlCreateButton("Button1", 544, 8, 75, 25, $WS_GROUP)

$lab = GUICtrlCreateListView("Group1", 8, 40, 609, 137)

GUISetState()


While 1
	$msg = GUIGetMsg()

	If $msg = $GUI_EVENT_CLOSE Then ExitLoop


WEnd



Func WM_COMMAND($hWnd, $msg, $wParam, $lParam)
	$nNotifyCode = BitShift($wParam, 16)
	$nID = BitAND($wParam, 0x0000FFFF)
	If $nID = $IP Then
		$hCtrl = $lParam
		If $nNotifyCode = $EN_CHANGE Then

			_GUICtrlListView_DeleteAllItems($lab)
			$txt = GUICtrlRead($IP)

			Select
				Case $txt <> ""

				For $n = 1 To UBound($possibles) - 1
					If StringCompare(StringLeft($possibles[$n], StringLen($txt)), $txt) = 0 Then
						GUICtrlCreateListViewItem($possibles[$n], $lab)
	;~ 					ExitLoop
					EndIf
				Next

			EndSelect

		EndIf
	EndIf
	Return $GUI_RUNDEFMSG
EndFunc  ;==>WM_COMMAND
Ya me contáis que tal os va.

Re: Autobusqueda Input

Publicado: 20 Mar 2013, 22:52
por Chefito
Va bien. En definitiva se hace así.

Te comento que justo unos pocos post debajo de el tuyo tienes unas funciones para autocompletar un combobox de nuestro compañero jscript. Te lo digo por si te interesa echarles un vistazo.

http://www.emesn.com/autoitforum/viewto ... f=4&t=3752

Saludos.

Re: Autobusqueda Input

Publicado: 21 Mar 2013, 22:11
por avechuche
Muy bueno, quizas podrias explicar como trabaja la funcion "WM_COMMAND", porque la verdad, lo unico que entiendo es lo que esta dentro del for :)

Re: Autobusqueda Input

Publicado: 26 Mar 2013, 16:24
por dacu
Chefito escribió:
Gracias Chefito por lo del combo. Saludos.


Buenas. Yo tampoco la entiendo mucho. La verdad es que soy un tanto novato en esto. Es un código que cogí del foro ingles y lo adapte a mis necesidades. Lo puse aquí por si a alguien le hacia falta.

Alguno que sepa mas supongo que lo entenderá XD. Yo creo que sirve para que se actualize continuamente para por cada palabra escrita en input vaya saltando.

Saludos.
avechuche escribió:Muy bueno, quizas podrias explicar como trabaja la funcion "WM_COMMAND", porque la verdad, lo unico que entiendo es lo que esta dentro del for :)