Autobusqueda Input

y programas personales para otros como tu, puede que te corrijan ;)
Responder
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Autobusqueda Input

Mensaje 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.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Autobusqueda Input

Mensaje 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.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Autobusqueda Input

Mensaje 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 :)
dacu
Hacker del Foro
Mensajes: 106
Registrado: 20 May 2010, 00:09

Re: Autobusqueda Input

Mensaje 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 :)
Responder