CREAR REJILLA DE DATOS
CREAR REJILLA DE DATOS
Hola a todos,
necesito crear una rejilla de datos para que el usuario pueda ir rellenando manualmente. Es decir, como si estuviera introduciendo datos en Excel. He visto que está el listbox y listview pero en todas hay que ir rellenando con la función add o insert y yo lo que quiero es algo parecido pero que sea editable para que el usuario pueda escribir, borrar, etc. ¿qué debo usar?
GRACIAS
necesito crear una rejilla de datos para que el usuario pueda ir rellenando manualmente. Es decir, como si estuviera introduciendo datos en Excel. He visto que está el listbox y listview pero en todas hay que ir rellenando con la función add o insert y yo lo que quiero es algo parecido pero que sea editable para que el usuario pueda escribir, borrar, etc. ¿qué debo usar?
GRACIAS
Creéis que 1000 = 1?
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: CREAR REJILLA DE DATOS
Bueno, si quieres hacer cosas muy complicadas hay una udf para manejar directamente objetos Excel, puede que hasta se pueda incrustar una hoja en un GUI AutoIt, aunque esto último no lo tengo claro.
Los usuarios pueden hacer todo el trabajo complicado en una hoja Excel gestionada por el programa y cuando acaban tomas los datos con _ExcelReadSheetToArray, que te pasa la hoja a una Array de AutoIt.
Pero para ediciones sencillas puedes usar simplemente un ListView, quizás no has visto un estilo muy interesante:
$LVS_EDITLABELS: Los item de texto pueden ser editados manualmente.
También te interesará poner el flag $LVS_SINGLESEL para que sólo se pueda seleccionar una celda cada vez, sino puede ser un lío.
Los usuarios pueden hacer todo el trabajo complicado en una hoja Excel gestionada por el programa y cuando acaban tomas los datos con _ExcelReadSheetToArray, que te pasa la hoja a una Array de AutoIt.
Pero para ediciones sencillas puedes usar simplemente un ListView, quizás no has visto un estilo muy interesante:
$LVS_EDITLABELS: Los item de texto pueden ser editados manualmente.
También te interesará poner el flag $LVS_SINGLESEL para que sólo se pueda seleccionar una celda cada vez, sino puede ser un lío.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: CREAR REJILLA DE DATOS
Hola, aprovecho el hilo para preguntar sobre ListView.
Ximorro, con los estilos que comentas, se hacen editables los listview, y supongo que después de la edición, el programa debe leer los datos y guardarlos (en archivo de texto, sqlite,...) Vamos, como si fuera cualquier input o control de texto ¿verdad?
Ximorro, con los estilos que comentas, se hacen editables los listview, y supongo que después de la edición, el programa debe leer los datos y guardarlos (en archivo de texto, sqlite,...) Vamos, como si fuera cualquier input o control de texto ¿verdad?
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: CREAR REJILLA DE DATOS
Claro, los controles están en memoria, si quieres guardar su contenido tendrás que guardarlo en disco de alguna manera, ya sea un simple txt o metiéndose en cosas más complejas como bases de datos.
Vaya, no es por ser un ListView, como bien dices si quisieras guardar el texto de un Input también tendrías que guardarlo en disco. Aquí es lo mismo.
Vaya, no es por ser un ListView, como bien dices si quisieras guardar el texto de un Input también tendrías que guardarlo en disco. Aquí es lo mismo.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: CREAR REJILLA DE DATOS
Hola de nuevo
lo primero gracias por los consejos y ayudas.
Segundo, ya estoy lanzado con el programa, de hecho, casi lo tengo terminado pero me falta resolver lo siguiente: para ir añadiendo líneas he usado el "HotKeySet" para capturar la tecla intro e ir insertando líneas en el listview. El problema es que si no cierro el programa cualquier pulsación de la tecla intro es capturada por el programa impidiendo su fucionamiento normal. ¿Existe alguna otra forma de realizar esto?
GRACIAS Y SALUDOS
lo primero gracias por los consejos y ayudas.
Segundo, ya estoy lanzado con el programa, de hecho, casi lo tengo terminado pero me falta resolver lo siguiente: para ir añadiendo líneas he usado el "HotKeySet" para capturar la tecla intro e ir insertando líneas en el listview. El problema es que si no cierro el programa cualquier pulsación de la tecla intro es capturada por el programa impidiendo su fucionamiento normal. ¿Existe alguna otra forma de realizar esto?
GRACIAS Y SALUDOS
Creéis que 1000 = 1?
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: CREAR REJILLA DE DATOS
Es un poco difícil contestar sin saber dónde estás poniendo los ENTER... ¿en un controlinput?
Hay algunas posibilidades:
Podrías capturar el Enter en el Input (simplemente capturando su evento).
También puedes poner un botón que añada la línea.
O en vez de Hotkey puedes usar aceleradores de teclas, es como un Hotkey pero sólo funciona en tu GUI. Eso ya lo he explicado varias veces por el foro, busca "GUISetAccelerators".
Huuuum, como se pasó a lo del ListView creo que me he liado... ¿te refieres a cuando presionas ENTER en Excel?
Eso es más complicado... podrías comprobar en la función de hotkey si es la ventana de Excel la que está activa, si no lo está reenvías el Enter para que la otra aplicación lo pueda usar. El problema es que eso también sería capturado por el Hotkey, con lo que hay que desactivarlo temporalmente:
Saludos
Hay algunas posibilidades:
Podrías capturar el Enter en el Input (simplemente capturando su evento).
También puedes poner un botón que añada la línea.
O en vez de Hotkey puedes usar aceleradores de teclas, es como un Hotkey pero sólo funciona en tu GUI. Eso ya lo he explicado varias veces por el foro, busca "GUISetAccelerators".
Huuuum, como se pasó a lo del ListView creo que me he liado... ¿te refieres a cuando presionas ENTER en Excel?
Eso es más complicado... podrías comprobar en la función de hotkey si es la ventana de Excel la que está activa, si no lo está reenvías el Enter para que la otra aplicación lo pueda usar. El problema es que eso también sería capturado por el Hotkey, con lo que hay que desactivarlo temporalmente:
Código: Seleccionar todo
HotKeySet("{ENTER}", "capturaENTER")
...
Func capturaENTER()
If WinActive($excel_win) Then
; insertar la línea
Else
; no estamos en Excel, relanzamos la tecla
HotKeySet("{ENTER}") ; para no volverla a capturar ¡o entraríamos en un bucle infinito!
Send("{ENTER}") ; Envía el enter a la ventana activa
HotKeySet("{ENTER}", "capturaENTER") ; Restauramos el hotkey
EndFunc
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)