Problema raro :S
Publicado: 22 Dic 2010, 21:38
Antes de nada les dejo la parte del code q me da error ...
Resumiendo, tengo un GUI con un ListView. Cada ListViewItem se rellena con cada fila de una base de datos, hasta ahi todo bien. Cuando uno le hace clic a un ListViewItem llama a esta funcion, q lo q hace es permitir cambiar los datos, mostrar algunas imagenes y tmb hay un RichEdit para poner datos extras...
Bueno aqui el problema. Resulta que para mostrar las imagenes yo hago un _FileListToArray del directorio que quiero. En este caso, cada vez que agrego un usuario a la db se crea una carpeta llamada "Registros" (por unica vez), dentro de esa se crea una carpeta con el ($Legajo & " - " & $Apellido & ", " & $Nombre), dentro de esa carpeta se crea otra que se llama "Imágenes", para meter todas las imagenes de ese usuario. Bueno, si el _FileListToArray no encuentra ninguna imagen "*.jpg" en este caso, me va a dar un error y se me va a salir del programa, por eso necesito ponerle una condicion que seria con un If" $Lista_Imagenes[0] <> "0" Then que haga el for y muetre todas las imagenes que alla encontrado (todavia lo estoy armando, solo puse que se vean 5 imágenes)
El problema es que el _FileListToArray pareciera q no anda o anda por la mitad, porque? Bueno si se fijan hay un _ArrayDisplay documentado, si yo lo activo, cuando llamo a la funcion se me tilda, aparece el _ArrayDisplay, pero se tilda el programa y tengo que cerrarlo.
Si lo documento como ahora, el programa anda perfecto, me deja recorrer el Array con el For y me muetra la imagenes, pero $Lista_Imagenes[0] no funciona, osea no me llena el lugar 0 del array con la cantidad de imagenes que encontro, por lo lo que no puedo usar el If que comente anteriormente, y si no hay imagenes, el prgrama me da error y se cierra.
Les pongo una imagen del error.
http://picturetogo.com/images/2010/12/2 ... dibujo.jpg
Foto para q vean que anda si saco _ArrayDisplay y demas
http://picturetogo.com/images/2010/12/2 ... ibujo2.jpg
No pongo el code completo porque tiene 1500 lineas
Resumiendo, tengo un GUI con un ListView. Cada ListViewItem se rellena con cada fila de una base de datos, hasta ahi todo bien. Cuando uno le hace clic a un ListViewItem llama a esta funcion, q lo q hace es permitir cambiar los datos, mostrar algunas imagenes y tmb hay un RichEdit para poner datos extras...
Bueno aqui el problema. Resulta que para mostrar las imagenes yo hago un _FileListToArray del directorio que quiero. En este caso, cada vez que agrego un usuario a la db se crea una carpeta llamada "Registros" (por unica vez), dentro de esa se crea una carpeta con el ($Legajo & " - " & $Apellido & ", " & $Nombre), dentro de esa carpeta se crea otra que se llama "Imágenes", para meter todas las imagenes de ese usuario. Bueno, si el _FileListToArray no encuentra ninguna imagen "*.jpg" en este caso, me va a dar un error y se me va a salir del programa, por eso necesito ponerle una condicion que seria con un If" $Lista_Imagenes[0] <> "0" Then que haga el for y muetre todas las imagenes que alla encontrado (todavia lo estoy armando, solo puse que se vean 5 imágenes)
El problema es que el _FileListToArray pareciera q no anda o anda por la mitad, porque? Bueno si se fijan hay un _ArrayDisplay documentado, si yo lo activo, cuando llamo a la funcion se me tilda, aparece el _ArrayDisplay, pero se tilda el programa y tengo que cerrarlo.
Si lo documento como ahora, el programa anda perfecto, me deja recorrer el Array con el For y me muetra la imagenes, pero $Lista_Imagenes[0] no funciona, osea no me llena el lugar 0 del array con la cantidad de imagenes que encontro, por lo lo que no puedo usar el If que comente anteriormente, y si no hay imagenes, el prgrama me da error y se cierra.
Les pongo una imagen del error.
http://picturetogo.com/images/2010/12/2 ... dibujo.jpg
Foto para q vean que anda si saco _ArrayDisplay y demas
http://picturetogo.com/images/2010/12/2 ... ibujo2.jpg
No pongo el code completo porque tiene 1500 lineas
Código: Seleccionar todo
Func _Edit($ID, $Apellido, $Nombre, $Direccion, $Numero, $Piso, $Localidad, $CP, $DNI, $Legajo, $Telefono, $Prioridad, $Email, $Fecha)
;~ Local $Left = "0"
$Directorio = @ScriptDir & "\Registros\" & $Legajo & " - " & $Apellido & ", " & $Nombre & "\Imágenes\"
;~ MsgBox(0, "", $Directorio)
$Lista_Imagenes = _FileListToArray($Directorio, "*.png")
_ArrayDisplay($Lista_Imagenes)
$GUI_Datos = GUICreate("Editar - " & $ID & " - " & $Apellido & ", " & $Nombre, 800, 600, -1, -1)
;~ If $Lista_Imagenes[0] <> "0" Then
;~ For $s = 1 To $Lista_Imagenes[0]
;~ GUICtrlCreatePic($Directorio & $Lista_Imagenes[$s], 30 + $Left, 440, 140, 100)
;~ $Left += 150
;~ Next
;~ EndIf
GUICtrlCreateGroup("Datos personales ...", 10, 10, 230, 365)
$Apellido_Input_MD = GUICtrlCreateInput($Apellido, 80, 30, 150, 21)
$Apellido_Label_MD = GUICtrlCreateLabel("Apellido", 24, 30, 46, 20, $SS_CENTERIMAGE)
$Nombre_Input_MD = GUICtrlCreateInput($Nombre, 80, 55, 150, 21)
$Nombre_Label_MD = GUICtrlCreateLabel("Nombre", 24, 55, 54, 20, $SS_CENTERIMAGE)
$Direccion_Input_MD = GUICtrlCreateInput($Direccion, 80, 80, 150, 21)
$Direccion_Label_MD = GUICtrlCreateLabel("Dirección", 24, 80, 54, 20, $SS_CENTERIMAGE)
$Numero_Input_MD = GUICtrlCreateInput($Numero, 80, 105, 58, 21)
$Numero_Label_MD = GUICtrlCreateLabel("Número", 24, 105, 40, 20, $SS_CENTERIMAGE)
$Piso_Input_MD = GUICtrlCreateInput($Piso, 180, 105, 50, 21)
$Piso_Label = GUICtrlCreateLabel("Piso", 150, 105, 20, 20, $SS_CENTERIMAGE)
$Localidad_Input_MD = GUICtrlCreateInput($Localidad, 80, 130, 150, 21)
$Localidad_Label_MD = GUICtrlCreateLabel("Localidad", 24, 130, 54, 20, $SS_CENTERIMAGE)
$CP_Input_MD = GUICtrlCreateInput($CP, 80, 155, 150, 21)
$CP_Label_MD = GUICtrlCreateLabel("C.P", 24, 155, 22, 20, $SS_CENTERIMAGE)
$DNI_Input_MD = GUICtrlCreateInput($DNI, 80, 180, 150, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
$DNI_Label_MD = GUICtrlCreateLabel("DNI", 24, 180, 22, 20, $SS_CENTERIMAGE)
$Legajo_Input_MD = GUICtrlCreateInput($Legajo, 80, 205, 150, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
$Legajo_Label_MD = GUICtrlCreateLabel("Legajo", 24, 205, 38, 20, $SS_CENTERIMAGE)
$Telefono_Input_MD = GUICtrlCreateInput($Telefono, 80, 230, 150, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
$Telefono_Label_MD = GUICtrlCreateLabel("Teléfono", 24, 230, 54, 20, $SS_CENTERIMAGE)
$Prioridad_Input_MD = GUICtrlCreateCombo($Prioridad, 80, 255, 150, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "1 - Corto plazo|2 - Largo plazo|3 - Urgente|4 - Entregado")
$Prioridad_Label_MD = GUICtrlCreateLabel("Prioridad", 24, 255, 46, 20, $SS_CENTERIMAGE)
$eMail_Input_MD = GUICtrlCreateInput($Email, 80, 280, 150, 21)
$eMail_Label_MD = GUICtrlCreateLabel("E-mail", 24, 280, 38, 20, $SS_CENTERIMAGE)
$Fecha_Input_MD = GUICtrlCreateInput($Fecha, 80, 305, 150, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_READONLY))
$Fecha_Label_MD = GUICtrlCreateLabel("Fecha", 24, 305, 46, 20, $SS_CENTERIMAGE)
$ID_Input_MD = GUICtrlCreateInput($ID, 10, 10, 50)
GUICtrlSetState(-1, $GUI_DISABLE + $GUI_HIDE)
GUICtrlCreateGroup("Información extra ...", 250, 10, 540, 365)
$Tamanio_Letra = GUICtrlCreateCombo("", 260, 30, 40, 50)
GUICtrlSetData(-1, "8|9|10|11|12|14|16|18|20|22|24|26|28|36|48|72|", "10")
$Tipo_Letra = GUICtrlCreateCombo("", 305, 30, 125, 50)
GUICtrlSetData(-1, "Times New Roman|Arial", "Times New Roman")
$Rich_Edit = _GUICtrlRichEdit_Create($GUI_Datos, "", 260, 55, 520, 310, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
GUICtrlCreateGroup("Imágenes ...", 10, 380, $Ancho_GUI - 20, 205)
$Boton_Guardar_Cambios = GUICtrlCreateButton("Guardar cambios", 20, 340, -1, 25)
$Boton_Cancelar = GUICtrlCreateButton("Cancelar", 180, 340, 50, 25)
$Boton_Limpiar = GUICtrlCreateButton("Limpiar", 130, 340, 50, 25)
If FileExists(@ScriptDir & "\Registros\" & $Legajo & " - " & $Apellido & ", " & $Nombre & "\Información extra.rtf") Then
_GUICtrlRichEdit_StreamFromFile($Rich_Edit, @ScriptDir & "\Registros\" & $Legajo & " - " & $Apellido & ", " & $Nombre & "\Información extra.rtf")
EndIf
;~ MsgBox(0, "", @ScriptDir & "\Registros\" & $Legajo & " - " & $Apellido & ", " & $Nombre & "\Imágenes\")
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case -3, $Boton_Cancelar
GUIDelete($GUI_Datos)
ExitLoop
Case $Boton_Guardar_Cambios
;Aca va un code largo que comprueba si los imputs estan todos llenos, si es asi, llama a una funcion para rellenar una base de datos con esos datos. Y un par de cosas mas q no vienen al caso porque no es aca el errror
GUIDelete($GUI_Datos)
ExitLoop
Case $Boton_Limpiar
_Borrar_Inputs_MD()
Case $Tamanio_Letra, $Tipo_Letra
_GUICtrlRichEdit_SetFont($Rich_Edit, GUICtrlRead($Tamanio_Letra), GUICtrlRead($Tipo_Letra))
EndSwitch
Sleep(10)
WEnd
EndFunc ;==>_Edit