CREAR REJILLA DE DATOS

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
quinux
Aprendiz de Mago
Mensajes: 35
Registrado: 25 Abr 2008, 10:08

CREAR REJILLA DE DATOS

Mensaje por quinux »

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
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: CREAR REJILLA DE DATOS

Mensaje por Ximorro »

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. :smt004
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)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: CREAR REJILLA DE DATOS

Mensaje por jamaro »

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?
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: CREAR REJILLA DE DATOS

Mensaje por Ximorro »

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.
"¿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: CREAR REJILLA DE DATOS

Mensaje por quinux »

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
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: CREAR REJILLA DE DATOS

Mensaje por Ximorro »

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:

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
Saludos
"¿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: CREAR REJILLA DE DATOS

Mensaje por quinux »

Muchas gracias, me ha sido de gran ayuda :smt041
Creéis que 1000 = 1?
Responder