Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 4
Ir a la página 1, 2, 3, 4  Siguiente
 
El Control Tableview
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje El Control Tableview 
 
El control Tableview se utiliza para mostrar datos tabulados procedentes de una tabla con acceso de escritura.

Definir el objeto

Dim TB as tableview
TB=new tableview


Definir dimensiones del objeto
TB.columnos.count=5 ----> definimos cantidad de columnas
TB.rows.count=7 ----> definimos la cantidad de filas a mostrar simultáneamente


Definir cabeceras

TB.header=1 ----> definimos la cantidad de filas dedicadas a cabecera
TB.column[0].text="Cliente"
TB.column[0].width=150"
TB.column[1].text="Factura"
TB.column[1].width=60"
TB.column[2].text= ...
TB.column[2].width= ...


Llenar el tableview con datos procedentes de una tabla
Dim Linea as integer, SwColor as boolean, Rec as result, Sql as result, Cn as Connection

Sql="Select * from clientes order by codigo"
TB.rows.count=Rec.count+1 ----> cantidad de líneas del recordset mas 1 de cabecera

Do while Rec.available
   TB[Linea,0].text=Rec!Codigo
   TB[Linea,0].background=iif(SwColor,Color.whilte,color.black) ---> alternar color de fondo para cada fila
   TB[Linea,0].forecolor=iif(SwColor,Color.black,Color.white) ----> alternar color de tinta para cada fila
   TB[Linea,0].allignment=2 ----> alineamiento a la izquierda

   TB[Linea,1].text=Rec!Factura
   TB[Linea,1].background=iif(SwColor,Color.whilte,color.black) ---> alternar color de fondo para cada fila
   TB[Linea,1].forecolor=iif(SwColor,Color.black,Color.white) ----> alternar color de tinta para cada fila
   TB[Linea,1].allignment=2 ----> alineamiento a la izquierda

   TB[Linea,2].text=Rec!Fecha
   TB[Linea,2].background=iif(SwColor,Color.whilte,color.black) ---> alternar color de fondo para cada fila
   TB[Linea,2].forecolor=iif(SwColor,Color.black,Color.white) ----> alternar color de tinta para cada fila
   TB[Linea,2].allignment=2 ----> alineamiento a la izquierda

   ...

   Rec.movenext ---> pasar al siguiente registro
   Linea+=1 ---> pasar a la siguiente linea
   SwColor=not swcolor ---> para alternar el color de la siguiente fila
loop


Editar celdas
Para editar celdas se pueden utilizar dos métodos
* Disparar el método Edit durante el evento click (TB.edit)
* Disparar el método Edit durante el evento change (TB.edit). Este evento ocurre al cambia de celda activa.

En estos casos al cambiar de celda activa esta queda en modo de edición.

En el modo de edición el tableview queda sustuído por un textbox o un combobox, razón por la que los eventos asociados al tableview (como keypress o keyrelease) NO FUNCIONAN. Estos eventos solo funcionan en modo browse.

El método edit tiene dos formatos
TB.edit ---> para editar la celda en un textbox
TB.edit(array,variable) ---> para editar la celda en un textbox
Sub TB_change()
Dim Tabla as new string[]
Tabla.add("Opcion 1")
Tabla.add("Opcion 2")
if TB.columnat=2 ---> si estamos en la columna 3
   TB.edit(tabla,true) --->editar en un combo con cpciones "opcion1" y "opcion 2". El valor true indica que el
   combo será de solo lectura y por tanto solo se podrá elegir una opción
else
   TB.edit ---> editar en textbox
endif
end sub


Acceso a celdas

TB[0,0] ----> la primera celda
TB[0,TB.columns.count-1] -----> última celda de primera fila
TB[1,2] ----> tercera celda de segunda columna
TB[TB.row,TB.col] ---> celda activa
TB[TB.rows.count-1,0] ---> primera celda de última fila
TB[TB.rows.count-1,TB.columns.count-1] ---> última celda de última fila

Grabar los cambios a tabla
Cuando se ha editado una celda y se pulsa ENTER se ejecuta el evento SAVE que graba el cambio en el control tableview (estábamos editando en un textbox o un combobox). Este es el momento de grabar la fila
Es el momento de grabar la fila en la tabla
sub TB_save(row as integer,column as integer, value as string)
Dim Sql as string
Sql=update clientes set codigo=" & TB[TB.row,0].text & ", factura='" & TB[TB.row,1] & "' where codigo=" & CodigoAnterior
Cn.exec (Sql)
end sub

 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
Citar:
Dim Linea as integer, SwColor as boolean, Rec as result, Sql as result, Cn as Connection

Sql="Select * from clientes order by codigo"
TB.rows.count=Rec.count+1 ----> cantidad de líneas del recordset mas 1 de cabecera

Do while Rec.available
   TB[Linea,0].text=Rec!Codigo
   TB[Linea,0].background=iif(SwColor,Color.whilte,color.black) ---> alternar color de fondo para cada fila
   TB[Linea,0].forecolor=iif(SwColor,Color.black,Color.white) ----> alternar color de tinta para cada fila
   TB[Linea,0].allignment=2 ----> alineamiento a la izquierda

   TB[Linea,1].text=Rec!Factura
   TB[Linea,1].background=iif(SwColor,Color.whilte,color.black) ---> alternar color de fondo para cada fila
   TB[Linea,1].forecolor=iif(SwColor,Color.black,Color.white) ----> alternar color de tinta para cada fila
   TB[Linea,1].allignment=2 ----> alineamiento a la izquierda

   TB[Linea,2].text=Rec!Fecha
   TB[Linea,2].background=iif(SwColor,Color.whilte,color.black) ---> alternar color de fondo para cada fila
   TB[Linea,2].forecolor=iif(SwColor,Color.black,Color.white) ----> alternar color de tinta para cada fila
   TB[Linea,2].allignment=2 ----> alineamiento a la izquierda

   ...

   Rec.movenext ---> pasar al siguiente registro
   Linea+=1 ---> pasar a la siguiente linea
   SwColor=not swcolor ---> para alternar el color de la siguiente fila
loop


ese codigo me dá error :/ porque hay dos variables result?  usa REC, pero hace la consulta sobre SQL, ademas de ser asi, lo aria con exec, no? :S:S:s lo mismo esque hoy estoy saturado >.<!

Saludos!
 



 
CanihoJR - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
Está mal. La variable sql debe ser de tipo String.

Además falta la comilla simple antes de los comentarios.

El método es válido, pero para consultas no muy grandes. Para el manejo de gran cantidad de registros es preferible usar el evento _Data del TableView o GridView.

http://gambasdoc.org/help/comp/gb.qt/gridview/.data?es

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Modo Browse Re: El Control Tableview 
 
Citar:
En el modo de edición el tableview queda sustuído por un textbox o un combobox, razón por la que los eventos asociados al tableview (como keypress o keyrelease) NO FUNCIONAN. Estos eventos solo funcionan en modo browse.


¿que quiere decir en modo browse?

Me gustaria limitar a la entrada de numeros cuando edito la celda ¿como se puede hacer?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
jsbsan escribió:  
Citar:
En el modo de edición el tableview queda sustuído por un textbox o un combobox, razón por la que los eventos asociados al tableview (como keypress o keyrelease) NO FUNCIONAN. Estos eventos solo funcionan en modo browse.


¿que quiere decir en modo browse?

Me gustaria limitar a la entrada de numeros cuando edito la celda ¿como se puede hacer?


Mas vale tarde ..., Si aun te interesa, esto lo puedes hacer con el objeto observer. Este si que toma los eventos del teclado. Por lo menos yo lo hago.
 



 
tomas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
Tomas, me podias poner un ejemplo.


Gracias.

Nota:
Mas vale tarde que nunca...jajajaj
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
Hola!, tengo un problema y es que una vez editado algo en el tableview, el texto desaparece sin más...
Posteo acá porque no sé si es un bug o yo estoy haciendo algo mal...

P.D: Más vale tarde que nunca
 



 
 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
soplo escribió:  

Para editar celdas se pueden utilizar dos métodos
* Disparar el método Edit durante el evento click (TB.edit)
* Disparar el método Edit durante el evento change (TB.edit). Este evento ocurre al cambia de celda activa.
.
.
.
En estos casos al cambiar de celda activa esta queda en modo de edición.

El método edit tiene dos formatos
TB.edit ---> para editar la celda en un textbox
TB.edit(array,variable) ---> para editar la celda en un textbox
Sub TB_change()
Dim Tabla as new string[]
Tabla.add("Opcion 1")
Tabla.add("Opcion 2")
if TB.columnat=2 ---> si estamos en la columna 3
   TB.edit(tabla,true) --->editar en un combo con cpciones "opcion1" y "opcion 2". El valor true indica que el
   combo será de solo lectura y por tanto solo se podrá elegir una opción
else
   TB.edit ---> editar en textbox
endif

he estado luchando con esto y por más que trato no me sale bien.. , le doy click , enter.... a la celda y no se puede editar   
será que además de poner este código tambien tengo que cambiar alguna propiedad del tableview?

que alguien me ayude por favor!!!!!!!!!!!!!!!!     
 



 
elenagd - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
En el método click (o en el change el que te venga mejor) haces
tableview.edit

y con eso ya editas. Cuando te vayas de la celda (por ejemplo al pulsar enter o pinchar con el ratón en otro sitio saltará el evento tableview.save para que hagas lo que quieras cuando la edición ha terminado. Por ejemplo hacer un cálculo en otra celda por poner un caso.
 



 
última edición por soplo el Jueves, 27 Enero 2011, 17:34; editado 1 vez 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Control Tableview 
 
cierto.... gracias, mil gracias...
aveces uno como que se adormece o algo......     
 



 
elenagd - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
6.67 0 10 3
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Control Tableview SOURBOY Controles/Librerías/Componentes 0 Viernes, 04 Febrero 2011, 03:50 Ver último mensaje
SOURBOY
No hay nuevos mensajes Creación De Un Nuevo Control En Gambas3: ... jsbsan Videotutoriales 3 Viernes, 06 Febrero 2015, 12:44 Ver último mensaje
jsbsan
No hay nuevos mensajes Tableview jj231089 General 1 Jueves, 21 Agosto 2014, 20:37 Ver último mensaje
jsbsan
No hay nuevos mensajes Problemas Con Tableview soplo General 7 Lunes, 03 Enero 2011, 15:42 Ver último mensaje
soplo
 

Publicar nuevo tema  Responder al tema  Página 1 de 4
Ir a la página 1, 2, 3, 4  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario