https://foro.gambas-es.org/viewtopic.php?f=4&t=37
-----------------------------------
soplo
Miercoles, 16 Septiembre 2009, 11:27

El Control Tableview
-----------------------------------
El control Tableview se utiliza para mostrar datos tabulados procedentes de una tabla con acceso de escritura.
[color=darkred]
Definir el objeto[/color]
[code linenumbers=false]Dim TB as tableview
TB=new tableview
[/code]

[color=darkred]Definir dimensiones del objeto[/color][code linenumbers=false]
TB.columnos.count=5 ----> definimos cantidad de columnas
TB.rows.count=7 ----> definimos la cantidad de filas a mostrar simultáneamente[/code]
[color=darkred]
Definir cabeceras[/color]
[code linenumbers=false]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= ...[/code]

[color=darkred]Llenar el tableview con datos procedentes de una tabla[/color]
[code linenumbers=false]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[/code]

[color=darkred]Editar celdas[/color]
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
[code linenumbers=false]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[/code]
[color=darkred]
Acceso a celdas[/color]
[code linenumbers=false]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
[/code]
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
[code linenumbers=false]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
[/code]


-----------------------------------
CanihoJR
Sabado, 10 Abril 2010, 00:31

Re: El Control Tableview
-----------------------------------
[quote]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[/quote]

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!


-----------------------------------
jguardon
Sabado, 10 Abril 2010, 17:04

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


-----------------------------------
jsbsan
Domingo, 11 Abril 2010, 12:43

Modo Browse Re: El Control Tableview
-----------------------------------
[quote]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. [/quote]

¿que quiere decir en modo browse?

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


-----------------------------------
tomas
Lunes, 10 May 2010, 19:21

Re: El Control Tableview
-----------------------------------
[quote user="jsbsan" post="3237"][quote]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. [/quote]

¿que quiere decir en modo browse?

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

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.


-----------------------------------
jsbsan
Lunes, 10 May 2010, 19:42

Re: El Control Tableview
-----------------------------------
Tomas, me podias poner un ejemplo.


Gracias.

Nota:
Mas vale tarde que nunca...jajajaj


-----------------------------------
Invitado
Domingo, 27 Junio 2010, 00:52

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


-----------------------------------
elenagd
Jueves, 27 Enero 2011, 16:47

Re: El Control Tableview
-----------------------------------
[quote user="soplo" post="91"]
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
[code linenumbers=false]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
[/code][/quote]
he estado luchando con esto y por más que trato no me sale bien.. :sad: , le doy click , enter.... a la celda y no se puede editar :cry:  :cry: 
será que además de poner este código tambien tengo que cambiar alguna propiedad del tableview?

que alguien me ayude por favor!!!!!!!!!!!!!!!! :cry:  :cry:  :cry:


-----------------------------------
soplo
Jueves, 27 Enero 2011, 17:33

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.


-----------------------------------
elenagd
Jueves, 27 Enero 2011, 18:19

Re: El Control Tableview
-----------------------------------
cierto.... gracias, mil gracias...
aveces uno como que se adormece o algo...... :oops:  :oops:  :oops:


-----------------------------------
elenagd
Viernes, 28 Enero 2011, 22:02

Re: El Control Tableview
-----------------------------------
Hola de nuevo, vengo otra vez con el tableview, je,je,.... luego de conseguir (gracias a uds,) por fin editar la fila del tableview, surgieron nuevos inconvenientes: 
se puede restringir la entrada para solo números? intenté con el evento keypress pero no lo reconoce, y como realizo un cálculo con el monto editado, me da un error cuando se introducen letras..
otro problema es que al introducir por teclado la ,(coma) decimal, también me da el mismo error, lo que me impide también mostrar los valores con el formato correcto: pj (1.000,50). 

 [img]http://foro.gambas-es.org/files/images/1256/pantallazo_1_1296247799_156323.png[/img] 

[color=blue]PUBLIC SUB Tableview1_Click()
monto = CFloat(Tableview1[Tableview1.Row, 2].Text)
    IF Tableview1.Column = 2 THEN 
        Tableview1.Edit
    ENDIF 
END[/color]

[color=blue]PUBLIC SUB TableView1_Save(Row AS Integer, Column AS Integer, Value AS String)[/color]
[color=blue]  IF Value = "" THEN[/color] ---- es posible colocar algo en esta condición que reconozca que no es un número? :?:  :?: 
[color=blue]     Message.Error("Debe introducir un valor númerico")[/color]
[color=blue]RETURN
ENDIF [/color]
[color=blue]  TableView1[Tableview1.Row, 3].Text = monto - Value
  TableView1[Tableview1.Row, 4].Text = Value
END[/color]
también ocurre que solo si la cantidad editada es exactamente igual a la cantidad original, no realiza la resta.... :?:  :?:


-----------------------------------
soplo
Viernes, 28 Enero 2011, 22:16

Re: El Control Tableview
-----------------------------------
Hola

[quote]IF Value = "" THEN ---- es posible colocar algo en esta condición que reconozca que no es un número?[/quote]
La forma de hacer eso es INTENTAR convertirlo a número y ver si hay error
try cint(value)
if error then
print "no es numero"
else
print "es numero"
endif
Para cosas como esta es conveniente tener esta rutina y algunas otras en un módulo. Cuando necesitas lo incorporas al proyecto y ya está. Pongamos la clase funciones
'funciones class
[code linenumbers=false syntax=gambas]public EsNumero(X as string) as boolean
try cfloat(X)
return iif(error,false,true)
end[/code]
De ahí en adelante cada vez que necesites saber si un string es numérico
EsNumero=funciones.EsNumero(valor)
En EsNumero tienes true o false según que sea o no número

[quote]se puede restringir la entrada para solo números? [/quote]
Que yo sepa no porque el evento keypress no rula. A mi no me gusta el tableview. Yo prefiero usar el gridview para para mostrar las cosas y utilizar controles corrientes para hacer los cálculos. Si pones unos textboxes debajo del gridview queda muy bien. Todo es echarle imaginación.

[quote]if value="" then[/quote]
Para esto en gambas puedes poner "if value then"
[quote]TableView1[Tableview1.Row, 3].Text = monto - Value [/quote]
Value es de tipo string.


-----------------------------------
SOURBOY
Viernes, 04 Febrero 2011, 05:47

Re: El Control Tableview
-----------------------------------
Mmmm no se si soy mas bruto de normal.. pero a mi no me funciona!! :sad: !!... a lo mejor es porque estoy llenando el tableview con postgres???
no se este es i codigo:
PUBLIC SUB Form_Open()
DIM Qry AS String
  ME.Center
  Qry = "select * From aula order by depa_aula ASC"
Conexion.cone()
 conexion.fill_view(TableView1, Qry)
   WITH TableView1
    '.columns.Resizable = TRUE
    .columns.count = 2
    .columns[0].text = "Cod de asignatura"
    .columns[0].Width = 170
    .columns[1].text = "Nombre de asignatura"
    .columns[1].Width = 170
  END WITH
END 

PUBLIC SUB TableView1_Data(Row AS Integer, Column AS Integer)
DIM arrtable[100] AS String
  arrtable[0] = "id_aula"  
  arrtable[1] = "depa_aula"
 
WITH conexion
    .resul.MoveTo(Row)
    TableView1.data.Text = Str(.resul[arrtable[Column]])
  END WITH
END


' SUB Tableview1_Click()
' DIM Tabla AS NEW string[]
' Tabla.add("Opcion 1")
' Tabla.add("Opcion 2") 
' IF TableView1.columnat = 1 '- - - > si estamos en la columna 3
'    TableView1.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
'    TableView1.edit ' - - - > editar en te xtbox
' ENDIF 
' 
' END

PUBLIC SUB Tableview1_Click()

  TableView.edit

END
y el error que me da es : "tableView.edit" is not estatic


-----------------------------------
arubioc
Miercoles, 20 Julio 2011, 08:22

Re: El Control Tableview
-----------------------------------
Buenos dias Sres y con la venia de los moderadores.

Este es mi primer post, aprovecho para presentarme como un aficionado de toda la vida al Visual Basic y que después de toda una vida dándole al tema, he decidido pasarme a Linux/Ubuntu/Gambas2.

Ando jugando con un tablegridview y el problema que me aparece hoy por hoy es la imposibilidad de detectar un EVENT del mouse click botón dedecho.
La idea es hacer aparecer un menu al pulsar sobre la ROW concreta para borrar, editar, imprimir, etc.

Espero estar haciendo la pregunta en el post correcto.

Un saludo.


-----------------------------------
shordi
Miercoles, 20 Julio 2011, 10:26

Re: El Control Tableview
-----------------------------------
arubioc:
Bienvenido, has hecho una buena elección al cambiar. Mejor coloca tu pregunta en un post nuevo, que no tiene mucho que ver con éste...


-----------------------------------
arubioc
Miercoles, 20 Julio 2011, 14:50

Re: El Control Tableview
-----------------------------------
shordi, gracias por la recomendación. Así lo he hecho.

Un saludo.


-----------------------------------
arubioc
Domingo, 31 Julio 2011, 15:20

Re: El Control Tableview
-----------------------------------
Buenas tardes otra vez, 
Es posible editar una celda concreta? indicando posición?
O es posible pasar el focus a una celda concreta, para que el usuario entre un valor en esa posición ?


Por ejemplo, tb.edit [col,row]
para que cuando termine de hacer alguna cosa pueda forzarlo a que se entre un valor en esa celda indicando row y col.

En visual basic se hacia 
tb.col = 1
tb.row=2
i el focus lo tenias en esa celda de la tabla.
todos los cambios que se hacían a nivel de propiedad se realizaban solo en esa posición.


-----------------------------------
Invitado
Domingo, 31 Julio 2011, 19:00

Re: El Control Tableview
-----------------------------------
[code linenumbers=false syntax=gambas]
Es posible editar una celda concreta? indicando posición? 
[/code]

No se muy bien si te refieres a asignar un texto en una celda (ya sea tabla o grid)
[code linenumbers=false syntax=gambas]
tablaDatos.Rows.Count = 3 'Nº de Filas
tablaDatos.Columns.Count = 2 'Nº de Columnas
tablaDatos[0, 1].Text = "HI" 'Texto en la fila 0, columna 1
tablaDatos[0,0].Picture=Picture["image.png"] 'Imagen en la fila 0, columna 0
[/code]

O bien a editar un texto ya existente en la tabla... Para eso se me ocurre lo siguiente: al hacer doble clic sobre una celda se abre un formulario con un cuadro de texto, introduces lo que te salga y al cerrarlo se asigna en la celda...
[code linenumbers=false syntax=gambas]
'Formulario FMain:
PUBLIC SUB tablaDatos_DblClick()
  formulario.ShowModal 'Abre el formulario en modo "modal"
  tablaDatos[tablaDatos.Row, tablaDatos.Column].Text = texto 'Asigna a la celda donde has hecho doble clic el texto que has introducido en el formulario
END


'Formulario llamado "formulario"
PUBLIC SUB bAceptar_Click()
  FMain.texto = tbEntrada.text 'Asigna el texto del textBox a la variable pública del form FMain
  Me.close
END
[/code]

[color=#FF000C]Me auto-edito[/color]: He encontrado una forma más decente de editar valores de una tabla que no conocia.. ^^
[code linenumbers=false syntax=gambas]
PUBLIC SUB tablaDatos_Click()
 tablaDatos.Edit
END
[/code]

PD: Si tienes una pregunta tienes que abrir una entrada nueva en el foro, no usar otra ya creada -.-


-----------------------------------
arubioc
Domingo, 31 Julio 2011, 19:52

Re: El Control Tableview
-----------------------------------
Ok, creare una pregunta en otro nuevo hilo, un que cuando uno busca documentación en internet, a mi me gusta encontrarla toda de golpe en un mismo hilo, no en muchos hilos diferentes.
Pero si estas son las normas del foro, pues sin problemas.

Re-formulo la pregunta en el nuevo hilo, ya que posiblemente no he expresado al 100% lo que quiero conseguir.


-----------------------------------
datobinario
Jueves, 19 Febrero 2015, 05:17

Re: El Control Tableview
-----------------------------------
[size=14] Mas vale tarde que nunca[/size]
 :roll:  :roll: 
¿como se hace para que las celdas (columnas) tengan el ancho automático?
estoy usando un GridView todas las columnas me quedan del mismo tamaño, lo ideal, si es posible, es que la columna tome el ancho de la celda mas ancha.
¿se puede hacer


-----------------------------------
Shell
Jueves, 19 Febrero 2015, 09:43

Re: El Control Tableview
-----------------------------------
Hola datobinario.

Te muestro como hacerlo en esta función.

[code linenumbers=false syntax=gambas]
Public Function Opera1(archivo As String, pais As String) As String
  
  Dim fila As Integer
  Dim columna As Integer
  Dim linea As String  
  Dim linea2 As String
  Dim f As New Font
  
  f.Name = "Sans"
  f.Size = 10
  
  For Each linea In Split(archivo, "\n")
    
    If InStr(linea, String.Upper(pais)) Then
      grdTabla.Rows.Count = fila + 1
      For Each linea2 In Split(linea, ",") 
        If grdTabla.Columns[columna].Width < f.TextWidth(linea2) Then
          grdTabla.Columns[columna].Width = f.TextWidth(linea2)        
        Endif
        If fila Mod 2 = 0 Then 
          grdTabla[fila, columna].Background = Color.White
        Else
          grdTabla[fila, columna].Background = Color.LightBackground          
        Endif
        grdTabla[fila, columna].Text = linea2
        columna += 1            
      Next      
      fila += 1
      columna = 0
    Endif   
  Next
  
End
[/code]

Tienes que definir un tipo de fuente y asignarle un tamaño.
En este ejemplo lo que hace es pasarle el contenido de un archivo y el nombre de un país, mostrando y contando solo los de ese país.
Para el cambio de tamaño lo hace aquí.

[code linenumbers=false syntax=gambas]
...
 If grdTabla.Columns[columna].Width < f.TextWidth(linea2) Then
          grdTabla.Columns[columna].Width = f.TextWidth(linea2)        
 Endif
[/code]

Compara el ancho de la columna, con lo que mide el ancho del texto usando una fuente.

[url=http://gambaswiki.org/wiki/comp/gb.qt4/font/textwidth?l=es]Ayuda de Gambas sobre Font.TextWidth

Y en esta parte si el numero de la fila es par, lo muestra de un color, si es impar de otra. Creo que esta idea es de nuestro administrador.

[code linenumbers=false syntax=gambas]
   If fila Mod 2 = 0 Then 
          grdTabla[fila, columna].Background = Color.White
        Else
          grdTabla[fila, columna].Background = Color.LightBackground          
   Endif
[/code]

Saludos


-----------------------------------
shordi
Jueves, 19 Febrero 2015, 11:01

Re: El Control Tableview
-----------------------------------
Si das a la columna un valor de -1, se ajusta a la anchura del título, creo. Si activas la propiedad .Expand de la columna, se adapta al ancho del Gridview.
Es cosa de probar...


-----------------------------------
datobinario
Jueves, 19 Febrero 2015, 16:52

Re: El Control Tableview
-----------------------------------
Muchas Gracias amigo Shell, lo pruebo y te comento.


-----------------------------------
datobinario
Jueves, 19 Febrero 2015, 17:15

Re: El Control Tableview
-----------------------------------
El resultado fue genial, solo le agregué lo siguiente:
[code linenumbers=false syntax=gambas]F.Name = Tabla.Font.Name
  F.Size = Tabla.Font.Size + 1[/code]
esto para que tome los valores de la tabla a usar, entonces no existe problema si uno desea cambiar el formato de la tabla, además le sumé 1 al tamaño de la fuente de la tabla porque con el tamaño exacto queda muy justo, incluso incompleto para cadenas largas.


-----------------------------------
jsbsan
Jueves, 19 Febrero 2015, 19:17

Re: El Control Tableview
-----------------------------------
Shordi:

[quote]. Si activas la propiedad .Expand de la columna, se adapta al ancho del Gridview.[/quote]
He hecho un intento con lo que comentas (con gambas3.5.4), y no me ha funcionado :(

¿a lo mejor es la versión de gambas3 que tengo?
[code linenumbers=false syntax=gambas]' Gambas class file

Public Sub _new()

End

Public Sub Form_Open()

End

Public Sub definir()

  With GridView1
    .header = 3
    .rows.count = 2
    .columns.count = 3
    .Columns[0].title = "Columna 1"
    .Columns[1].title = "Columna 2"
    .Columns[2].title = "Columna 3"

    .font.name = "Times"
    .font.size = 9
    .Columns[1].Expand = True
    .Columns[2].Expand = True
    .Columns[3].Expand = True
  End With

End 
[/code]


-----------------------------------
shordi
Jueves, 19 Febrero 2015, 19:25

Re: El Control Tableview
-----------------------------------
Supongo que no vale sólo con cambiar la propiedad, sino que tendrás que "redibujar" el grid.

Míra el código del control xgrid que subí hace un par de meses (tengo que actualizarlo, pero creo que esa "feature" ya la lleva), en él me invento que si se establece el ancho a -2 lo que hacemos es establecer el .expand a true, siendo el valor por defecto.

Es decir, si el grid tiene cinco columnas y no rellenas la propiedad widths del grid, todas tienen el .expand a true. Si por el contrario estableces que

migrid.widths=[30,10]

la primera columna será de 30 la segunda de 10 y las terceras adaptables al ancho del grid.

si estableces los cinco valores con 

migrid.widths=[30,10,20,100,40] 

Se respetará ese ancho en todas las columnas.
Por último, si en tiempo de ejecución varías el ancho de una columna con el ratón, el nuevo ancho establecido queda fijo para esa ejecución...

Si no me he explicado bien, subo el control actualizado y un ejemplo...

Saludos.


-----------------------------------
shordi
Jueves, 19 Febrero 2015, 19:35

Re: El Control Tableview
-----------------------------------
Perdón, todo eso del .expand se aplica al gridview. Tableview contiene un gridview, que le hace de proxie, creo, pero tal vez no implemente esa propiedad... (yo es que no uso Tableview), y me he venido arriba con la respuesta :oops:


-----------------------------------
jguardon
Jueves, 19 Febrero 2015, 21:46

Re: El Control Tableview
-----------------------------------
[quote user="shordi" post="25067"]Perdón, todo eso del .expand se aplica al gridview. Tableview contiene un gridview, que le hace de proxie, creo, pero tal vez no implemente esa propiedad... (yo es que no uso Tableview), y me he venido arriba con la respuesta :oops:[/quote]

Debe de funcionar igual, porque el Tableview hereda de Gridview, por lo tanto hereda también sus métodos y propiedades.

Saludos


-----------------------------------
datobinario
Jueves, 19 Febrero 2015, 21:49

Re: El Control Tableview
-----------------------------------
a mi no me funcionó el Expand con ninguno de los dos, ni el Grid ni el Table, por eso usé la función que colocó Shell y todo bien.


-----------------------------------
shordi
Sabado, 21 Febrero 2015, 20:40

Re: El Control Tableview
-----------------------------------
He actualizado los controles enganchados, donde se ilusta (si bien de un modo un tanto complejo, supongo) el uso de las propiedades .expand tal como os expliqué más arriba.
lo tenéis aquí:

[url=http://foro.gambas-es.org/viewtopic.php?f=5&t=4220]http://foro.gambas-es.org/viewtopic.php?f=5&t=4220

Saludos


-----------------------------------
Shell
Domingo, 22 Febrero 2015, 10:30

Re: El Control Tableview
-----------------------------------
Eso de controles enganchados, suena fatal, parece a vagoneta.


-----------------------------------
drojas
Miercoles, 22 Marzo 2017, 19:28

Re: El Control Tableview
-----------------------------------
A ver este?


    'Coloreamos los registros
       If py Mod 2 = 0 Then
         Tabla[py, 0].Background = &FAFEFF&
         Tabla[py, 1].Background = &FAFEFF&
         Tabla[py, 2].Background = &FAFEFF&
         Tabla[py, 3].Background = &FAFEFF&
         
       Else
         Tabla[py, 0].Background = &DEFFE4&
         Tabla[py, 1].Background = &DEFFE4&
         Tabla[py, 2].Background = &DEFFE4&
         Tabla[py, 3].Background = &FAFEFF&
       Endif
      py = py + 1


