Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Insertar o eliminar columnas en Grid
Message
De
13/11/2004 10:50:04
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivie
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire d'écran & Écrans
Divers
Thread ID:
00961153
Message ID:
00961157
Vues:
6
>Una vez que defino un Grid dentro de un formulario, me suceden dos eventos: me olvidé de ubicar una columna intermedia o, necesito insertar otra columna, para ello, me toca eliminar el Grid y definir de nuevo. Esto es tedioso porque ya se hizo la definición de formatos, propiedades y todos los elementos para darle forma al grid. ¿Cómo hacer esto sin tener que volver a repetir el trabajo?
>
>Gracias por su ayuda

Eso es un problema constante. Teóricamente puedes agregar una columna al final, y luego cambiar el orden de las columnas, pero me parece que eso causa más problemas de lo que resuelve.

Creo que el Builder de Visual FoxPro te permite agregar o quitar columnas.

Si tienes propiedades y métodos adicionales (como parte de un framework tuyo, o de terceros), necesitas ajustes adicionales. Para este caso, he adaptado código de un builder para insertar los comandos necesarios en varios métodos de cada columna, que era el requerimiento específico que tenía en este caso.

Tal vez querrás adaptar este código, para insertar una columna o borrar una columna. Esto requeriría copiar las propiedades para todas las demás, por ejemplo, si tu grid tiene 10 columnas y quieres insertar una columna entre la #3 y la #4, tendrás que redimensionar el grid a 11 columnas, y luego copiar propiedades relevantes de la columna #10 a la columna #11, de la #9 a la #10 ... de la #4 a la #5.

La forma cómo funciona el Builder a continuación es que primero seleccionas el grid, después invocas el programa (PRG) que contiene los comandos a continuación (que seguramente querrás adaptar). Tal como está, te va dar errores, ya que busca una tablita que contiene los métodos a ser incluidos.
* Automate setting/resetting of properties and methods in grid
* Usage:
* Open the form
* Select the grid
* Run this program

local laControl[1], j, k , x , o, lnMax

* Load methods.
* The method code to be copied is in table GridMethods, field MethodCode.
use GridMethods
1
Header_DblClick = MethodCode
2
Header_MouseDown = MethodCode
3
Text_DblClick = MethodCode
4
Text_KeyPress = MethodCode
5
Text_MouseDown = MethodCode

use

lnMax = aselobj(laControl)

for k = 1 to lnMax && For each selected object
	o = laControl[k]
	
	wait window "Object : " + alltrim(o.Name) nowait

	for x = 1 to o.ColumnCount && For each column
		with o.Columns(x)
			.ResetToDefault("ReadOnly")
			.ResetToDefault("Visible")
			.Text1.Comment = .ControlSource
			with .Header1
				.WriteMethod("DblClick", Header_DblClick)
				.WriteMethod("MouseDown", Header_MouseDown)
			endwith
			with .Text1
				.WriteMethod("DblClick", Text_DblClick)
				.WriteMethod("KeyPress", Text_KeyPress)
				.WriteMethod("MouseDown", Text_MouseDown)
				.ResetToDefault("BackColor")
				.ResetToDefault("ForeColor")
				*.ResetToDefault("Comment")
				.ResetToDefault("ReadOnly")
				.ResetToDefault("Visible")
			endwith
		endwith
	next
next

release all
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform