.NET Framework - Eliminar columnas de un Grid por programacion

Asked By Teodor on 15-Sep-08 02:08 PM
Estimados amigos, recurro a su ayuda nuevamente por lo siguiente:
Tengo un grid con n columnas, el cual tiene que ser mostrado acorde a la
parametrizacion de una tabla que contiene los datos a mostrar.
Por ejemplo:
Id, fecha, cliente, responsable, estado,fecha inicio, fecha final,
observaciones,etc. serian las columnas que se muestran normalmente. Sin
embargo, el usuario puede parametrizar qué columnas mostrar y cuales no,
marcando con .T. o .F. un campo en la tabla de parámetros de columnas.
Utilizo el método DeleteColumn en el Init de mi formulario, leyendo la tabla
de parámetros y si tienen marcado con .f. elimino la columna. El problema al
ejecutar es que me sale el error: "la propiedad DELETECOLUMN es de solo
lectura". y hasta ahora no se como solucionarlo.
Traté de utilizar la propiedad width de la columna estableciendo a 0 si no
queria mostrar la columna, pero queda una linea gruesa que mantiene la
columna al desplazarse por ella.
Si alguien me puede ayudar.. muy agradecido. Trabajo con VFP 6 SP5, Win XP.
Vamos zorro !!




trento replied on 18-Sep-08 09:43 PM
Agregando o borrando columnas de un grid "al vuelo"

Uso:
miGrid.AddColumn( nColumna )
miGrid.DeleteColumn( [ nColumna ] )

Ejemplo:
miGrid.DeleteColumn( 2 ) && Borra la 2a columna
miGrid.AddColumn( 3 )  && Agrega una nueva columna como la tercera en
posici=F3n


Saludos
Teodor replied on 15-Sep-08 03:25 PM
Gracias Tentro pero ese no es el problema. Los metodos se como funcionan, lo
que no se es  como resolver el error que manifiesto en el hilo.
Saludos.
Mario Dal Degan replied on 15-Sep-08 06:57 PM
Por qué no probás utilizando la opción Visible de la columna. Entiendo que
no es lo más cómodo pero quizá te sirva.
Mario López replied on 15-Sep-08 11:41 PM
Teodoro:

no tengo a mano VFP6 para probar, pero en VFP8 / 9 esto funciona. En tu caso no?

---------
CLOSE TABLES ALL
USE (HOME() + "\Samples\Tastrade\Data\Products.dbf")
CURSORSETPROP("Buffering", 5)

WITH CREATEOBJECT("xForm")
.Show(1)
ENDWITH

RETURN


DEFINE CLASS xForm as Form
Width = 600
AutoCenter = .T.

ADD OBJECT grdTest as Grid WITH Top = 5, Left = 5 ,;
Height = ThisForm.Height - 10, Width = ThisForm.Width - 10


PROCEDURE Init

WAIT WINDOW TRANSFORM(ThisForm.grdTest.ColumnCount) + " columnas"
ThisForm.grdTest.DeleteColumn(2)	&& Borra la columna SupplierID
WAIT WINDOW TRANSFORM(ThisForm.grdTest.ColumnCount) + " columnas"

ENDPROC
ENDDEFINE
------

HTH
Mario
Heberto Villavicencio replied on 16-Sep-08 05:07 AM
Porque no pruebas haciendo el ancho de la columna que quieres "quitar" a
cero (0)???
Teodor replied on 16-Sep-08 10:51 AM
Estimado Mario.. efectivamente el código lo tengo al mismo estilo que tu,
pero en mi caso no anda, sino que sale el error de que "la propiedad
DELETECOLUMN es de solo lectura"..

Gracias.
Teodor replied on 16-Sep-08 10:53 AM
Herberto, ya le probé ese truco pero al navegar en el grid, esa columna se
inlcuye en las columnas a navegar, aparte que se puede volverla a poner a
cualquier ancho, porque queda una linea gruesa separando las columnas.

Gracias de todas maneras.
EdeSoft replied on 15-Sep-08 06:50 PM
Hola
No lo probé, pero que tal si usas column(x).visible ??

Suerte
Claudio


tabla
al
XP.
Teodor replied on 16-Sep-08 11:15 AM
Lo voy a probar y te aviso Ede.. Gracias.