Problema con este programa

y programas personales para otros como tu, puede que te corrijan ;)
Responder
Avatar de Usuario
quinux
Aprendiz de Mago
Mensajes: 35
Registrado: 25 Abr 2008, 10:08

Problema con este programa

Mensaje por quinux »

Hola a todos,

tengo esta pequeña aplicación en la que, en un list view voy insertando número y después exporto haciendo una transformación numérica (de pies a metros o viceversa) El caso es que antes me funcionaba sin problemas pero después de formatear el equipo e instlar de nuevo autoit (version 3.3.8.1) me encuentro con que introduzco un número le doy al intro y me desaparece ese número o introduzco un nnúmero, hago clic en cualquier parte de la aplicación y me desaparece ese número. ¿Alguien puede ayudarme?

Ahí va el código

Código: Seleccionar todo


#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <Constants.au3>
#Include <Excel.au3>
#include <ListViewConstants.au3>

;Opt('MustDeclareVars', 1)

$Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

Global $hListView

Global $gLabelUnidadMedida
Global $gComboUnidadMedida

Global $gLabelUnidadExportar
Global $gComboUnidadExportar

Global $gLabelPielesIntroducidas
Global $gInputPielesIntroducidas

Global $gLabelUnidadesIntroducidas
Global $gInputUnidadesIntroducidas

Global $gBotonNuevo
Global $gBotonExportar
Global $gBotonSalir
Global $gBotonComprobar
Global $gBotonTemporal
Global $gBotonCargaTemporal
Global $gLabelUnidadUsada
Global $gInputPietajeActual

Global $gFicheroTemporal =  @ScriptDir & "\" & "tmp.txt" ;Fichero temporal donde almacenamos los pietajes que el usuario incluya
Global $gIconos = @SystemDir & "\shell32.dll"

Global $gBotonSeparar

Global $gLabelUnidadesGrupo
Global $gInputUnidadesGrupo
Global $gTituloVentana = "Creador ficheros de metrajes v.1.4"

_Main()

Func _Main()
	Local $vMsg

	HotKeySet("{UP}", "pSubir")
	HotKeySet("{DOWN}", "pBajar")
	HotKeySet("{ENTER}","pInsertar")

	GUICreate($gTituloVentana, 500, 500)
	$hListView = fCreaListView(1)


	; Seleccionamos la unidad de medida en la que vamos a insertar los datos
	$gLabelUnidadMedida = GuiCtrlCreateLabel("Unidad de medida: ", 120, 10)
	$gComboUnidadMedida = GuiCtrlCreatecombo("", 250, 8, 120, 100)
	GUICtrlSetData($gComboUnidadMedida,"m2|cm2|p2","m2")

	; Seleccionamos la unidad de medida en la que vamos a exportar los datos
	$gLabelUnidadExportar = GuiCtrlCreateLabel("Exportar en: ", 120, 50)
	$gComboUnidadExportar = GuiCtrlCreatecombo("", 250, 48, 120, 100)
	GUICtrlSetData($gComboUnidadExportar,"m2|cm2|p2","m2")


	$gLabelPielesIntroducidas = GuiCtrlCreateLabel("Nº Pieles introducidas: ", 120, 90)
	$gInputPielesIntroducidas = GUICtrlCreateInput("0", 250, 88, 50, 20,BitOR(0X2000,0X0800,$ES_NUMBER,$ES_RIGHT))

	$gLabelUnidadesIntroducidas = GuiCtrlCreateLabel("Unidades introducidas: ", 120, 130)
	$gInputUnidadesIntroducidas = GUICtrlCreateInput("", 250, 128, 50, 20,BitOR(0X2000,0X0800,$ES_NUMBER,$ES_RIGHT))
	$gLabelUnidadUsada = GUICtrlCreateLabel(GUICtrlRead($gComboUnidadMedida),305,130)

	; Definimos los campos para indicar si los pietajes van agrupados o no
	;$gLabelUnidadesGrupo = GuiCtrlCreateLabel("Unidades por grupo: ", 120, 160)
	;$gInputUnidadesGrupo = GUICtrlCreateInput("", 250, 160, 50, 20)


	$gInputPietajeActual = GUICtrlCreateInput("", 250, 200, 150, 50,BitOR(0X2000,0X0800,$ES_NUMBER,$ES_RIGHT))
	GUICtrlSetFont($gInputPietajeActual, 24, 800, "", "Comic Sans MS")

	$gBotonNuevo = GuiCtrlCreateButton("Nuevo", 110, 450, 65, 40,$BS_CENTER)
	;GUICtrlSetImage($gBotonNuevo, $gIconos, -100)
	GUICtrlSetTip($gBotonNuevo, "Nuevo packing")

	$gBotonTemporal = GuiCtrlCreateButton("Guard. temp.", 175, 450, 65, 40)
	;GUICtrlSetImage($gBotonTemporal, $gIconos, -126)
	GUICtrlSetTip($gBotonTemporal, "Guardar en fichero temporal")

	$gBotonCargaTemporal = GuiCtrlCreateButton("Carg. Temp.", 240, 450, 65, 40)
	;GUICtrlSetImage($gBotonCargaTemporal, $gIconos, 46)
	GUICtrlSetTip($gBotonCargaTemporal, "Cargar fichero temporal")

	$gBotonExportar = GuiCtrlCreateButton("Exportar", 305, 450, 65, 40)
	;GUICtrlSetImage($gBotonExportar, $gIconos, -259)
	GUICtrlSetTip($gBotonExportar, "Exportar a csv")

	$gBotonComprobar = GuiCtrlCreateButton("Comprobar",370,450,65,40)
	;GUICtrlSetImage($gBotonComprobar, $gIconos, -172)
	GUICtrlSetTip($gBotonComprobar, "Comprobar packing")

	$gBotonSalir = GuiCtrlCreateButton("Salir", 435, 450, 65, 40)
	;GUICtrlSetImage($gBotonSalir, $gIconos, -147)
	GUICtrlSetTip($gBotonSalir, "Salir")

	$gBotonSeparar = GuiCtrlCreateButton("Separar", 435, 400, 65, 40)
	;GUICtrlSetImage($gBotonSalir, $gIconos, -147)
	GUICtrlSetTip($gBotonSeparar, "Separar")

	; Edit item 0 label with time out
	;GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

	_GUICtrlListView_EditLabel($hListView, 0)

	GUISetState()

	; Loop until user exits
	while 1
		$vMsg = GUIGetMsg()
		Select
			Case $vMsg = 0
				ContinueLoop
			Case $vMsg = $gBotonNuevo
				pNuevoPacking()
			Case $vMsg = $gBotonExportar
				pExportarFichero($hListView,0)
			Case $vMsg = $gBotonComprobar
				pComprobar()
			Case $vMsg = $gBotonTemporal
				pCopiaTemporal()
			Case $vMsg = $gBotonCargaTemporal
				pCargaTemporal()
			Case $vMsg = $gComboUnidadMedida
				GUICtrlSetData($gLabelUnidadUsada,GUICtrlRead($gComboUnidadMedida))
			Case $vMsg = $gBotonSeparar
				pSeparar()
			Case $vMsg = $gBotonSalir or $vMsg = $GUI_EVENT_CLOSE
				ExitLoop
		EndSelect
	wend
	GUIDelete()
EndFunc   ;==>_Main

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
	#forceref $hWnd, $iMsg, $iwParam
	Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo, $hWndListView = $hListView
	If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

	$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
	$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
	$iCode = DllStructGetData($tNMHDR, "Code")
	Switch $hWndFrom
		Case $hWndListView
			Switch $iCode
				Case $LVN_BEGINLABELEDITA, $LVN_BEGINLABELEDITW ; Start of label editing for an item
					$tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
					_DebugPrint("$LVN_BEGINLABELEDIT" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode & @LF & _
							"-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @LF & _
							"-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
							"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
							"-->State:" & @TAB & DllStructGetData($tInfo, "State") & @LF & _
							"-->StateMask:" & @TAB & DllStructGetData($tInfo, "StateMask") & @LF & _
							"-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @LF & _
							"-->Param:" & @TAB & DllStructGetData($tInfo, "Param") & @LF & _
							"-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @LF & _
							"-->GroupID:" & @TAB & DllStructGetData($tInfo, "GroupID") & @LF & _
							"-->Columns:" & @TAB & DllStructGetData($tInfo, "Columns") & @LF & _
							"-->pColumns:" & @TAB & DllStructGetData($tInfo, "pColumns"))
					Return False ; Allow the user to edit the label
;~ 					;Return True  ; Prevent the user from editing the label
				Case $LVN_COLUMNCLICK ; A column was clicked
					$tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
					_DebugPrint("$LVN_COLUMNCLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode & @LF & _
							"-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
							"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
							"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
							"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
							"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
							"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
							"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
							"-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
					; No return value
				Case $LVN_BEGINLABELEDITA, $LVN_ENDLABELEDITW ; The end of label editing for an item
					$tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
					If (DllStructGetData($tInfo, "Text") <> 0) Then
						Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
						_DebugPrint("$LVN_ENDLABELEDIT" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
								"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
								"-->Code:" & @TAB & $iCode & @LF & _
								"-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @LF & _
								"-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
								"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
								"-->State:" & @TAB & DllStructGetData($tInfo, "State") & @LF & _
								"-->StateMask:" & @TAB & DllStructGetData($tInfo, "StateMask") & @LF & _
								"-->Text:" & @TAB & DllStructGetData($tBuffer, "Text") & @LF & _
								"-->TextMax:" & @TAB & DllStructGetData($tInfo, "TextMax") & @LF & _
								"-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @LF & _
								"-->Param:" & @TAB & DllStructGetData($tInfo, "Param") & @LF & _
								"-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @LF & _
								"-->GroupID:" & @TAB & DllStructGetData($tInfo, "GroupID") & @LF & _
								"-->Columns:" & @TAB & DllStructGetData($tInfo, "Columns") & @LF & _
								"-->pColumns:" & @TAB & DllStructGetData($tInfo, "pColumns"))
						; If Text is not empty, return True to set the item's label to the edited text, return false to reject it
						Return True
					EndIf
					; If Text is empty the return value is ignored
				Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					_DebugPrint("$NM_CLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode & @LF & _
							"-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
							"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
							"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
							"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
							"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
							"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
							"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
							"-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
							"-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
					; No return value
				Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					_DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode & @LF & _
							"-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
							"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
							"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
							"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
							"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
							"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
							"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
							"-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
							"-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
					; No return value
				Case $NM_KILLFOCUS ; The control has lost the input focus
					_DebugPrint("$NM_KILLFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode)
					; No return value
				Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					_DebugPrint("$NM_RCLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode & @LF & _
							"-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
							"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
							"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
							"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
							"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
							"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
							"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
							"-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
							"-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
					;Return 1 ; not to allow the default processing
					Return 0 ; allow the default processing
				Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					_DebugPrint("$NM_RDBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode & @LF & _
							"-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
							"-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
							"-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
							"-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
							"-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
							"-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
							"-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
							"-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
							"-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
					; No return value
				Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
					_DebugPrint("$NM_RETURN" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode)
					; No return value
				Case $NM_SETFOCUS ; The control has received the input focus
					_DebugPrint("$NM_SETFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
							"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
							"-->Code:" & @TAB & $iCode)
					; No return value
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _DebugPrint($s_text, $line = @ScriptLineNumber)
	ConsoleWrite( _
			"!===========================================================" & @LF & _
			"+======================================================" & @LF & _
			"-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
			"+======================================================" & @LF)
EndFunc   ;==>_DebugPrint


; ====================================================================================================================
; Name...........: pBajar()
; Description ...: Procedimiento para bajar de línea en el listview
; Syntax.........: pBajar()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pBajar()
	Local $vIndice


	If WinActive("Creador ficheros de metrajes") Then
		$vIndice = _GUICtrlListView_GetNextItem($hListView,-1,0)
		If $vIndice < _GUICtrlListView_GetItemCount($hListView) Then
			_GUICtrlListView_SetItemSelected($hListView, $vIndice,false )
			$vIndice = $vIndice + 1
			_GUICtrlListView_EditLabel($hListView, $vIndice)
			GUICtrlSetData($gInputPietajeActual,_GUICtrlListView_GetItemText($hListView,$vIndice))
			pActualizaContadores($hListView,$gInputUnidadesIntroducidas,$gInputPielesIntroducidas,0)
		EndIf
	Else
		HotKeySet("{DOWN}")
		Send("{DOWN}")
		HotKeySet("{DOWN}","pBajar")
	EndIf

EndFunc


; ====================================================================================================================
; Name...........: pSubir()
; Description ...: Procedimiento para subir de línea en el listview
; Syntax.........: pSubir()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pSubir()
	Local $vIndice

	If WinActive("Creador ficheros de metrajes") Then
		$vIndice = _GUICtrlListView_GetNextItem($hListView,-1,0)
		If $vIndice > 0 Then
			_GUICtrlListView_SetItemSelected($hListView, $vIndice,false )
			$vIndice = $vIndice - 1

			_GUICtrlListView_EditLabel($hListView, $vIndice)
			GUICtrlSetData($gInputPietajeActual,_GUICtrlListView_GetItemText($hListView,$vIndice))

			pActualizaContadores($hListView,$gInputUnidadesIntroducidas,$gInputPielesIntroducidas,0)
		EndIf
	Else
		HotKeySet("{UP}")
		Send("{UP}")
		HotKeySet("{UP}","pSubir")
	EndIf
EndFunc

; ====================================================================================================================
; Name...........: pInsertar()
; Description ...: Procedimiento para insertar una nueva línea en el listview
; Syntax.........: pInsertar()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pInsertar()
	Local $vIndice=0


	If WinActive($gTituloVentana) Then
		$vIndice = _GUICtrlListView_GetNextItem($hListView,-1,0) ; Sacamos la posición del item actual
		_GUICtrlListView_SetItemSelected($hListView, $vIndice,false) ; Deseleccionamos el elemento

		$vIndice = $vIndice + 1 ; Incrementamos el índice para ahora acceder a la siguiente posición

		; Comprobamos si el item siguiente al actual (vIndice + 1) Está vacio o no. Sino está vacio añadimos un nuevo item.
		If _GUICtrlListView_GetItemText($hListView,$vIndice,0) = "" Then
			_GUICtrlListView_AddItem($hListView,"")			
		EndIf
		_GUICtrlListView_AddSubItem($hListView,$vIndice,($vIndice + 1),1)

		_GUICtrlListView_EditLabel($hListView, $vIndice)
		pActualizaContadores($hListView,$gInputUnidadesIntroducidas,$gInputPielesIntroducidas,0)
	Else
		HotKeySet("{ENTER}")
		Send("{ENTER}")
		HotKeySet("{ENTER}","pInsertar")
	EndIf


EndFunc

; ====================================================================================================================
; Name...........: pActualizaContadores()
; Description ...: Procedimiento para actualizar los contadores de unidades y de pieles
; Syntax.........: pActualizaContadores()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================


Func pActualizaContadores($pListView,$pInputSuma,$pInputPieles,$pTipo)
	Local $vIndice = 0
	Local $vContador = 0
	Local $vSuma = 0
	Local $vValorActual = 0
	;MsgBox(0,"los valores",_GUICtrlListView_GetItemText($pListView,$vIndice,$pTipo))
	For $vIndice = 0 to _GUICtrlListView_GetItemCount($pListView)
		$vValorActual = _GUICtrlListView_GetItemText($pListView,$vIndice,$pTipo)
		If $vValorActual <> "" Then
			$vContador = $vContador + 1
			$vSuma = $vSuma + $vValorActual
		EndIf
	Next


	GUICtrlSetData($pInputPieles,$vContador)
	GUICtrlSetData($pInputSuma,$vSuma)
EndFunc

; ====================================================================================================================
; Name...........: pNuevoPacking()
; Description ...: Procedimiento para inicializar el listview
; Syntax.........: pNuevoPacking()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pNuevoPacking()
	If MsgBox(36,"ATENCION","¿Está seguro de que desea crear un nuevo packing?") = 6 Then
		if fBorraListView(1) = 1 Then
			GUICtrlSetData($gInputPielesIntroducidas,0)
			GUICtrlSetData($gInputUnidadesIntroducidas,0)

			; Primera línea
			_GUICtrlListView_AddItem($hListView, "", 0)
			_GUICtrlListView_EditLabel($hListView, 0)
		Else
			MsgBox(16,"ERROR","Hubo un error al limpiar la lista, por favor, cierre y abra de nuevo")
		EndIf
	EndIf
EndFunc

; ====================================================================================================================
; Name...........: fBorraListView()
; Description ...: Procedimiento para borrar las líneas de un listview
; Syntax.........: fBorraListView()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func fBorraListView($pOpcion)
	$hListView = fCreaListView($pOpcion)

	return 1

EndFunc

; ====================================================================================================================
; Name...........: pExportarFichero()
; Description ...: Procedimimiento para exportar el contenido del listview a un fichero de texto con los camops separados por ;
; Syntax.........: pExportarFichero()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pExportarFichero($pListView,$pTipo)
	Local $vRutaFichero = FileOpenDialog("Seleccione directorio y nombre para el fichero","c:\pck","All(*.*)",4) ; Mostamos el cuadro de diálogo al usuario para que elija lugar y nombre
	Local $vMultiplicador = fDameMultiplicador()
	Local $vFile
	Local $vIndice = 1
	Local $vMultiplicando = 0
	Local $vExcel
	Local $vIntroducido = 0
	Local $vMensajeError
	Local $vCabecera[18] = ["CUSTOMER","ADDRESS  ","POSTAL_CODE","CITY ","REGION","COUNTRY","DATE      ","INVOICE","INVOICE_POS","PURCHASE_ORDER","UM","ID_HANDLING","ID_BOUNDLE","ID_HIDES        ","DESCRIPTION","Q_TY_M2                ","Q_TY_SF                ","HIDES_NR"]

	If $vRutaFichero = "" Then
		MsgBox(48,"RUTA INCORRECTA","La ruta seleccionada no es válidad. La exportación ha sido cancelada")
	Else

	; Primero intentamos pasar el fichero a excel para evitar pasos
	$vExcel = _ExcelBookNew(0) ;Create new book, make it visible

	If $vExcel <> 0 Then ; Si se encuentra el objeto excel instalado directamente lo exporta en un fichero excel.
		; Insertamos la cabecera
		For $vI = 0 to 17
			_ExcelWriteCell($vExcel,$vCabecera[$vI],1,$vI + 1)

		Next

		For $vIndice = 0 to _GUICtrlListView_GetItemCount($pListView)-1 ; es contador - 1 porque el contador lo hemos iniciado en 0
			If _GUICtrlListView_GetItemText($pListView,$vIndice,$pTipo) <> "" Then ; Controlamos que la celda tenga valor para no introducir lineas en blanco
				$vIntroducido = Number(_GUICtrlListView_GetItemText($pListView,$vIndice,$pTipo))
				$vMultiplicando = Round(($vIntroducido * $vMultiplicador),2) ; Redondeamos los digitos
				$vMultiplicando = StringReplace($vMultiplicando,".",",") ; Cambiamos los puntos por comas para que no haya problemas al cargarlo en la excel
				Local $vArrayLinea[18] = ["cliente","direccion","30510","yecla","murcia","espana" ,"01/01/1900","1553","10","10","m2","1","1",$vIndice,"piel",$vMultiplicando,StringReplace($vIntroducido,".",","),($vIndice + 1)]
				;Local $vArrayLinea[18] = ["CUSTOMER","ADDRESS  ","POSTAL_CODE","CITY ","REGION","COUNTRY","DATE      ","INVOICE","INVOICE_POS","PURCHASE_ORDER","UM","ID_HANDLING","ID_BOUNDLE","ID_HIDES        ","DESCRIPTION","Q_TY_M2                ","Q_TY_SF                "                ,"HIDES_NR"]
				_ExcelWriteArray($vExcel, $vIndice + 2, 1, $vArrayLinea)
				If @error Then
					Switch @error
						case 1
							$vMensajeError = "El objeto especificado no existe"
						case 2
							$vMensajeError = "Parametro fuera de rango"
						case 3
							$vMensajeError = "El array no existe o la variable no es un array"
						case 4
							$vMensajeError = "Dirección de parámetro incorrecta"
					EndSwitch
					MsgBox(16,"ERROR AL EXPORTAR",$vMensajeError)
				EndIf
			EndIf
		Next

		If @error Then ; Si hay algún error cancelamos la exportación
		Else
			_ExcelBookSaveAs($vExcel, $vRutaFichero & ".xls", "xls", 0, 1) ; Now we save it into the temp directory; overwrite existing file if necessary
		EndIf
		_ExcelBookClose($vExcel) ; And finally we close out
	Else ;Sino encuentra el objeto excel lo exporta en formato csv. Posteriormente el usuario debe abrir el fichero con excel y guardarlo como .xls
		$vFile = FileOpen($vRutaFichero, 2)

		; Check if file opened for writing OK

		If $vFile = -1 Then
			MsgBox(0, "Error", "Imposible crear el fichero")
			Exit
		EndIf

		; Insertamos primero la cabecera
		FileWriteLine($vFile,"CUSTOMER;ADDRESS  ;POSTAL_CODE;CITY ;REGION;COUNTRY;DATE      ;INVOICE;INVOICE_POS;PURCHASE_ORDER;UM;ID_HANDLING;ID_BOUNDLE;ID_HIDES        ;DESCRIPTION;Q_TY_M2                ;Q_TY_SF                ;HIDES_NR")
							;"cliente ;direccion;30510      ;yecla;murcia;espana ;01/01/1900;1553   ;10         ;10            ;m2;1          ;1         ;" & $vIndice & ";piel       ;" & $vMultiplicando & ";" & $vMultiplicando & ";" & $vIndice)
		; Recorremos el listview para ir insertando las líneas en el fichero
		For $vIndice = 0 to _GUICtrlListView_GetItemCount($pListView)-1 ; es contador - 1 porque el contador lo hemos iniciado en 0
			If _GUICtrlListView_GetItemText($pListView,$vIndice) <> "" Then ; Controlamos que la celda tenga valor para no introducir lineas en blanco
				$vIntroducido = Number(_GUICtrlListView_GetItemText($pListView,$vIndice,$pTipo))
				$vMultiplicando = Round(($vIntroducido * $vMultiplicador),2) ; Redondeamos los digitos
				$vMultiplicando = StringReplace($vMultiplicando,".",",") ; Cambiamos los puntos por comas para que no haya problemas al cargarlo en la excel
				FileWriteLine($vFile,"cliente;direccion;30510;yecla;murcia;espana;01/01/1900;1553;10;10;m2;1;1;" & $vIndice & ";piel;" & $vMultiplicando & ";" & StringReplace($vIntroducido,".",",") & ";" & ($vIndice + 1))
			EndIf
		Next

		FileClose($vFile)
	EndIf

	MsgBox(64,"PROCESO FINALIZADO","La exportación ha sido finalizada")
	EndIf

EndFunc

; ====================================================================================================================
; Name...........: pCopiaTemporal()
; Description ...: Procedimimiento para guardar temporalmente el contenido del list view
; Syntax.........: pCopiaTemporal()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pCopiaTemporal()
	Local $vRutaFichero = $gFicheroTemporal
	Local $vFile
	Local $vIndice = 1
	Local $vIntroducido = 0

	$vFile = FileOpen($vRutaFichero, 2)

	; Check if file opened for writing OK

	If $vFile = -1 Then
		MsgBox(0, "Error", "Imposible crear el fichero")
		Exit
	EndIf

	; Recorremos el listview para ir insertando las líneas en el fichero
	For $vIndice = 0 to _GUICtrlListView_GetItemCount($hListView)-1 ; es contador - 1 porque el contador lo hemos iniciado en 0
		If _GUICtrlListView_GetItemText($hListView,$vIndice) <> "" Then ; Controlamos que la celda tenga valor para no introducir lineas en blanco
			$vIntroducido = Number(_GUICtrlListView_GetItemText($hListView,$vIndice))
			FileWriteLine($vFile,$vIntroducido)
		EndIf
	Next

	FileClose($vFile)

	MsgBox(64,"PROCESO FINALIZADO","Copia en fichero temporal finalizada")


EndFunc

; ====================================================================================================================
; Name...........: pCargaTemporal()
; Description ...: Procedimiento para cargar el contenido del fichero temporal en un listview
; Syntax.........: pCargaTemporal()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pCargaTemporal()
	Local $vFile = FileOpen($gFicheroTemporal, 0)
	Local $vLinea = ""
	Local $vIndice = 0

	If MsgBox(36,"ATENCION","¿Está seguro de que desea cargar el contenido del fichero temporal?") = 6 Then

		if fBorraListView(0) = 1 Then
			GUICtrlSetData($gInputPielesIntroducidas,0)
			GUICtrlSetData($gInputUnidadesIntroducidas,0)
		EndIf

		;Comprobamos que el fichero existe
		If $vFile = -1 Then
			MsgBox(0, "Error", "Imposible abrir el fichero")
			Exit
		EndIf

		;Leemos el fichero
		While 1
			$vLinea = FileReadLine($vFile)
			If @error = -1 Then ExitLoop

			_GUICtrlListView_AddItem($hListView, $vLinea, $vIndice)
			_GUICtrlListView_AddSubItem($hListView,$vIndice,($vIndice + 1),1)

			$vIndice = $vIndice + 1
		Wend

		FileClose($vFile)

		pActualizaContadores($hListView,$gInputUnidadesIntroducidas,$gInputPielesIntroducidas,0)

		_GUICtrlListView_AddItem($hListView, "", 0)
		_GUICtrlListView_EditLabel($hListView, $vIndice)
	EndIf
EndFunc

; ====================================================================================================================
; Name...........: fDameMultiplicador()
; Description ...: Devuelve el multplicador para convertirlo todo a la unidad de exportación
; Syntax.........: fDameMultiplicador()
; Parameters ....:
; Return values .: Multplicador
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func fDameMultiplicador()
	Local $vUnidadMedida = GUICtrlRead($gComboUnidadMedida)
	Local $vUnidadExportar = GUICtrlREad($gComboUnidadExportar)
	Local $vMultiplicador = ""
	;Local $vIndice = 0

	Select
		Case $vUnidadMedida = "m2"
			Select
				case $vUnidadExportar = "m2"
					$vMultiplicador = 1
				case $vUnidadExportar = "cm2"
					$vMultiplicador =  100
				case $vUnidadExportar = "p2"
					$vMultiplicador = 10.764
			EndSelect
		Case $vUnidadMedida = "cm2"
			Select
				case $vUnidadExportar = "m2"
					$vMultiplicador = 0.01
				case $vUnidadExportar = "cm2"
					$vMultiplicador = 1
				case $vUnidadExportar = "p2"
					$vMultiplicador = ((1/100)*10.764)
			EndSelect

		Case $vUnidadMedida = "p2"
			Select
				case $vUnidadExportar = "m2"
					$vMultiplicador = (1/10.764)
				case $vUnidadExportar = "cm2"
					$vMultiplicador = (1/10.764)*100
				case $vUnidadExportar = "p2"
					$vMultiplicador = 1
			EndSelect

	EndSelect

	return $vMultiplicador
EndFunc

; ====================================================================================================================
; Name...........: pComprobar()
; Description ...: Procedmiento que desglosa por grupos los pietajes introducidos
; Syntax.........: pComprobar()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pComprobar()
	Local $vMsg
	Local $vListView
	Local $vInputPielesPorGrupo
	Local $vBotonSalir
	Local $vBotonAgrupar
	Local $vIndice = 0
	Local $vInputPietajeActual

	GUICreate("Comprobación", 500, 600)
	$vListView = GUICtrlCreateListView("", 2, 2, 150, 590, BitOR($LVS_EDITLABELS, $LVS_REPORT))


	_GUICtrlListView_SetExtendedListViewStyle($vListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
	_GUICtrlListView_SetUnicodeFormat($vListView, False)

	GuiCtrlCreateLabel("Pieles por grupo: ", 180, 20)
	$vInputPielesPorGrupo = GUICtrlCreateInput("0", 270, 18, 50, 20,BitOR($ES_NUMBER,$ES_RIGHT))

	$vBotonAgrupar = GUICtrlCreateButton("Agrupar",290,550,70,30)
	$vBotonSalir = GuiCtrlCreateButton("Salir", 360, 550, 70, 30)

	$vInputPietajeActual = GUICtrlCreateInput("", 250, 200, 150, 50,BitOR(0X2000,0X0800,$ES_NUMBER,$ES_RIGHT))
	GUICtrlSetFont($vInputPietajeActual, 24, 800, "", "Comic Sans MS")

	; Add columns
	_GUICtrlListView_AddColumn($vListView, "Cont", 50)
	_GUICtrlListView_AddColumn($vListView, "Unidades",100)


	;GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

	_GUICtrlListView_EditLabel($vListView, $vIndice)

	GUISetState()

	; Loop until user exits
	while 1
		$vMsg = GUIGetMsg()
		Select
			Case $vMsg = 0
				ContinueLoop
			Case $vMsg = $vBotonAgrupar
				pAgrupar(GUICtrlRead($vInputPielesPorGrupo),$vListView)
			Case $vMsg = $vBotonSalir or $vMsg = $GUI_EVENT_CLOSE
				ExitLoop
		EndSelect
	wend
	GUIDelete()
EndFunc

; ====================================================================================================================
; Name...........: pAgrupar()
; Description ...: Hace las agrupaciones para comprobar los subtotales
; Syntax.........: pAgrupar($pCantidad,$pListView)
;					- $pCantidad: Cantidad para realizar los subtotales
;					- $pListView: list view donde se realizarán los subtotales
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pAgrupar($pCantidad,$pListView)
	Local $vContador = 0
	Local $vContadorParcial = 0
	Local $vIndice = 0
	Local $vSuma = 0
	Local $vPosicionTotal

	; Borramos el pListView

	;If fBorrarListView($pListView) Then
		For $vIndice = 0 to _GUICtrlListView_GetItemCount($hListView)-1
			If _GUICtrlListView_GetItemText($hListView,$vIndice) <> "" Then ; Controlamos que la celda tenga valor para no introducir lineas en blanco
				_GUICtrlListView_AddItem($pListView, $vIndice + 1, 0)
				_GUICtrlListView_AddSubItem($pListView, $vContador, _GUICtrlListView_GetItemText($hListView,$vIndice), 1)
				$vSuma = $vSuma + _GUICtrlListView_GetItemText($hListView,$vIndice)

				$vContadorParcial = $vContadorParcial + 1
				$vContador = $vContador + 1
				If $vContadorParcial = $pCantidad Then
					;_GUICtrlListView_AddItem($pListView, "Total unidades: ", 0)

					$vPosicionTotal = GUICtrlCreateListViewItem("Total unidades: ",$pListView)
					GUICtrlSetBkColor($vPosicionTotal,0x00ff00)
					_GUICtrlListView_AddSubItem($pListView, $vContador, $vSuma, 1)

					$vSuma = 0
					$vContadorParcial = 0
					$vContador = $vContador + 1
				EndIf
			EndIf
		Next
		; Comprobamos el caso en el que queden registro sin agrupar. Es decir, $vContadorParcial < $pCantidad
		If $vContadorParcial <> 0 Then
			$vPosicionTotal = GUICtrlCreateListViewItem("Total unidades: ",$pListView)
			GUICtrlSetBkColor($vPosicionTotal,0x00ff00)
			_GUICtrlListView_AddSubItem($pListView, $vContador, $vSuma, 1)
		EndIf
	;Else
	;	MsgBox(16,"Error","Error al limpiar las listas, salga y vuelva a entrar")
	;EndIf
EndFunc

; ====================================================================================================================
; Name...........: fCreaListView()
; Description ...: Crea listview
; Syntax.........: fCreaListView($pOpcion)
; Parameters ....: $pOpcion: Si opcion es igual 1 creamos una línea 1
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================


Func fCreaListView($pOpcion)

	MsgBox(0,"creamos el list view",$pOpcion)
	_GUICtrlListView_Destroy($hListView)
	$hListView = GUICtrlCreateListView("Unid|Cont", 2, 2, 100, 498, BitOR($LVS_EDITLABELS, $LVS_REPORT))
	_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
	_GUICtrlListView_SetUnicodeFormat($hListView, False)


	If $pOpcion = 1 Then
		;Primera línea
		_GUICtrlListView_AddItem($hListView, "", 0)

	EndIf
	_GUICtrlListView_AddSubItem($hListView, 0, "1", 1, 1)
	_GUICtrlListView_SetColumnOrder($hListView, "1|0")

	Return $hListView

EndFunc


; ====================================================================================================================
; Name...........: pSeparar()
; Description ...: Procedmiento para separar en dos el packing list introducido
; Syntax.........: pSeparar()
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pSeparar()
	Local $vMsg
	Local $vListView1
	Local $vListView2
	Local $vInputCantidad
	Local $vBotonSalir
	Local $vBotonSeparar
	Local $vBotonExportar
	Local $vIndice = 0
	Local $vInputMetros1
	Local $vInputPieles1
	Local $vInputMetros2
	Local $vInputPieles2

	GUICreate("Comprobación", 500, 600)

	GuiCtrlCreateLabel("Cantidad: ", 160, 20)
	$vInputCantidad = GUICtrlCreateInput("0", 230, 18, 50, 20,$ES_RIGHT)

	; Creamos el list view 1
	$vListView1 = GUICtrlCreateListView("", 2, 2, 150, 530, BitOR($LVS_EDITLABELS, $LVS_REPORT))

	_GUICtrlListView_SetExtendedListViewStyle($vListView1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
	_GUICtrlListView_SetUnicodeFormat($vListView1, False)

	; Añadimos las columnas al primer listview1
	_GUICtrlListView_AddColumn($vListView1, "Cont", 50)
	_GUICtrlListView_AddColumn($vListView1, "Unidades",100)

	GuiCtrlCreateLabel("Total metros: ", 2, 542)
	$vInputMetros1 = GUICtrlCreateInput("0", 75, 540, 75, 20,$ES_RIGHT)

	GuiCtrlCreateLabel("Total Pieles: ", 2, 572)
	$vInputPieles1 = GUICtrlCreateInput("0", 75, 570, 75, 20,$ES_RIGHT)


	; Creamos el list view 2
	$vListView2 = GUICtrlCreateListView("", 340, 2, 150, 530, BitOR($LVS_EDITLABELS, $LVS_REPORT))

	_GUICtrlListView_SetExtendedListViewStyle($vListView2, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
	_GUICtrlListView_SetUnicodeFormat($vListView2, False)

	;Add columns
	_GUICtrlListView_AddColumn($vListView2, "Cont", 50)
	_GUICtrlListView_AddColumn($vListView2, "Unidades",100)

	GuiCtrlCreateLabel("Total metros: ", 340, 542)
	$vInputMetros2 = GUICtrlCreateInput("0", 415, 540, 75, 20,$ES_RIGHT)

	GuiCtrlCreateLabel("Total Pieles: ", 340, 572)
	$vInputPieles2 = GUICtrlCreateInput("0", 415, 570, 75, 20,$ES_RIGHT)

	; Botones
	$vBotonSeparar = GUICtrlCreateButton("Separar",210,450,70,30)
	$vBotonExportar = GuiCtrlCreateButton("Exportar", 210, 500, 70, 30)
	$vBotonSalir = GuiCtrlCreateButton("Salir", 210, 550, 70, 30)



	;GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

	_GUICtrlListView_EditLabel($vListView1, $vIndice)
	_GUICtrlListView_EditLabel($vListView2, $vIndice)

	GUISetState()

	; Loop until user exits
	while 1
		$vMsg = GUIGetMsg()
		Select
			Case $vMsg = 0
				ContinueLoop

			Case $vMsg = $vBotonSeparar
				pPartir(GUICtrlRead($vInputCantidad),$hListView,$vListView1,$vListView2)
				pActualizaContadores($vListView1,$vInputMetros1,$vInputPieles1,1)
				pActualizaContadores($vListView2,$vInputMetros2,$vInputPieles2,1)

			Case $vMsg = $vBotonExportar
				pExportarFichero($vListView1,1)
				pExportarFichero($vListView2,1)

			Case $vMsg = $vBotonSalir or $vMsg = $GUI_EVENT_CLOSE
				ExitLoop
		EndSelect
	wend
	GUIDelete()
EndFunc



; ====================================================================================================================
; Name...........: pPartir($pCantidad,$pListViewOrigen,$pListView1,$pListView2)
; Description ...: Divide los lista de pietajes en dos ficheros en base a una cantidad indicada
; Syntax.........: pPartir($pCantidad,$pListViewOrigen,$pListView1,$pListView2)
;					- $pCantidad: Cantidad para realizar los subtotales
;					- $pListViewOrigen: list view origen
;					- $pListView1: list view 1
;					- $pListView2: list view 2
; Parameters ....:
; Return values .:
; Author ........: [email protected]
; Remarks .......:
; ====================================================================================================================

Func pPartir($pCantidad,$pListViewOrigen,$pListView1,$pListView2)
	Local $vIndice = 0
	Local $vSuma = 0
	Local $vPosicion = 0
	Local $vListView = $pListView1 ;Primero insertamos en la primera listview

	;if fBorrarListView($pListView1) & fBorrarListView($pListView2) Then
		For $vIndice = 0 to _GUICtrlListView_GetItemCount($pListViewOrigen)-1

			If _GUICtrlListView_GetItemText($pListViewOrigen,$vIndice) <> "" Then ; Controlamos que la celda tenga valor para no introducir lineas en blanco
				$vPosicion = _GUICtrlListView_AddItem($vListView, _GUICtrlListView_GetItemText($pListViewOrigen,$vIndice,1), 0)

				_GUICtrlListView_AddSubItem($vListView, $vPosicion,_GUICtrlListView_GetItemText($pListViewOrigen,$vIndice), 1)



				$vSuma = $vSuma + _GUICtrlListView_GetItemText($pListViewOrigen,$vIndice)

				If $vSuma >= $pCantidad Then
					$vListView = $pListView2 ;Una vez que hemos rellenado el listview1 rellenamos el segundo.
				EndIf
			EndIf
		Next
	;Else
	;	MsgBox(16,"Error","Error al limpiar las listas, salga y vuelva a entrar")
	;EndIf
EndFunc

;Func fBorrarListView($pListView)
;_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($pListView))


;EndFunc



Creéis que 1000 = 1?
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Problema con este programa

Mensaje por Ximorro »

Hola, he visto que funciona quitando
_GUICtrlListView_SetUnicodeFormat($hListView, False)
en la creación del ListView

No sabría decir si tendrá otras implicaciones dejarlo en Unicode, pero así funciona la edición.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
quinux
Aprendiz de Mago
Mensajes: 35
Registrado: 25 Abr 2008, 10:08

Re: Problema con este programa

Mensaje por quinux »

éGracias, pruebo y te comentare
Creéis que 1000 = 1?
Avatar de Usuario
quinux
Aprendiz de Mago
Mensajes: 35
Registrado: 25 Abr 2008, 10:08

Re: Problema con este programa

Mensaje por quinux »

Ximorro escribió:Hola, he visto que funciona quitando
_GUICtrlListView_SetUnicodeFormat($hListView, False)
en la creación del ListView

No sabría decir si tendrá otras implicaciones dejarlo en Unicode, pero así funciona la edición.
Nada, quitando _GuiCtrlListView_SetUnicodeFormat tampoco rula. :smt022 :smt022 :smt022 Me he dado cuenta también de que cuando cargo con el contenido de un fichero temporal y relleno el listview, después, edito uno de los valores, lo cambio, le doy a intro y me quita el valor introducido y pone el que había antes.
¿Alguna sugerencia?

Gracias
Creéis que 1000 = 1?
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Problema con este programa

Mensaje por Chefito »

Editar un subitem de esa forma te va a dar muchos muchos problemas. Yo creo que no se puede. Mira por ejemplo otras formas de hacerlo en este enlace del foro ingles:
http://www.autoitscript.com/forum/topic ... esnt-work/

Hace tiempo escribimos un post que trataba este tema. Damos varias formas (ideas) de como poder hacer esto. Te recomiendo que lo leas con detenimiento. Por lo menos llega hasta mi post, donde expongo otras formas de hacerlo :smt002 .

http://www.emesn.com/autoitforum/viewto ... t=listview

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 ;).
Avatar de Usuario
quinux
Aprendiz de Mago
Mensajes: 35
Registrado: 25 Abr 2008, 10:08

Re: Problema con este programa

Mensaje por quinux »

Ximorro escribió:Hola, he visto que funciona quitando
_GUICtrlListView_SetUnicodeFormat($hListView, False)
en la creación del ListView

No sabría decir si tendrá otras implicaciones dejarlo en Unicode, pero así funciona la edición.

Ximorro tu solución era buena, tenia algunas cosas comentadas del código y por eso no funcionaba.

Chefito, tus consejos buenísimos, he aprendido un montón, pero es demasiado complejo para lo que es la aplicación. Aún así, tengo el link ya guardardado.

Gracias
Creéis que 1000 = 1?
Responder