FoxPro/Visual FoxPro - Ordenar grid click en columna

   
Vista:

Ordenar grid click en columna

Publicado por Ana (15 intervenciones) el 04/06/2010 23:10:39
Estoy trabajando en VFP 6 y estoy tratando de que al clickear en el encabezado de un grid me lo ordene por ese campo.

Las cantidad de columnas varían y no están definidos los headers, sino los captura según los nombres de los campos.

Agradecería a quien pudiera darme alguna pista.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauricio

Ordenar grid click en columna

Publicado por Mauricio (1368 intervenciones) el 04/06/2010 23:50:18
En SOLUTIONS hay un ejemplo de ordenar un grid, pero lo hace por columna, en el encabezado de la columna le dices que lo ordene por ese campo y pueden ser varias columnas que puedas ordenar..... puedes revisarlo........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar grid click en columna

Publicado por Ana (15 intervenciones) el 04/06/2010 23:56:19
Gracias por el dato, sí lo revisé pero en el ejemplo necesariamente debo definir en tiempo de diseño la cantidad de columnas, pero en mi programa varía la cantidad de columnas y no puedo controlar el momento en el que hago click en el encabezado. Es más no me deriva al procedimiento CLICK del grid.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

Ordenar grid click en columna

Publicado por Mauricio (1368 intervenciones) el 05/06/2010 00:22:41
Bueno, creo que en este caso deberias usar un cursor ordenado por lo que tu necesites, piensalo de esta manera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar grid click en columna

Publicado por ACM (162 intervenciones) el 05/06/2010 05:01:21
Hola Ana

Haber, Para poder realizar lo que quieres, debes de programar el evento click del haeder de cada columna del grid, Por ende debes de saber como se llama el campo.

Para poder ayudarte
1) explicame porque el grid puede tener diferentes columnas
2) a las columnas le asignas los campos de la tabla

Saludos

Acm.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar grid click en columna

Publicado por Juanma Cruz (508 intervenciones) el 07/06/2010 14:02:51
Deberías trabajar con:

BindEvent ( )

VFP trae numerosa documentación al respecto. El enfoque es más o menos éste: tienes una función o procedimiento donde manejarías cómo ordenar una tabla suponiendo que se ejecutase desde el click del HEADER de cada columna.

¿Que no tienes las columnas en tiempo de diseño ni sabes cuantas serán en ejecución?

Pues bien, en tiempo de ejecución , después de tener las columnas ya creadas, atas cada evento CLICK del header al evento que ya programaste previamente. Así cambias su comportamiento por defecto, sobre la marcha.

Así lo solucionó un colega, la idea no es mía, de lo contrario te adjuntaría ejemplos, pero bueno, la idea es ésa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar grid click en columna

Publicado por ana (15 intervenciones) el 08/06/2010 01:19:08
El problema es que en ese grid deseo mostrar varios cursores diferentes según las diferentes opciones y no puedo determinar que columnas tiene cada cursor.
Estoy tratando de insertar en el métdo Click en el modo de ejecución, pero me bota el error que sólo es en el modo de diseño. Pregunto cómo puedo insertar en el modo de diseño? Es a través de un prg? Tengo que remover el grid y crear (create) otro?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar grid click en columna

Publicado por ACM (162 intervenciones) el 08/06/2010 16:42:53
Hola Ana

1.-) Haber, si ese grid que estas llenando con varios cursores es de una misma tabla o un join de varias tablas, por programacion los campos estandar los mas relevantes definelos en columnas fijas y en el columcount del grid. por lo menos tendras siertas columnas las principales para ordenar.y en modo ejecucion agregas las otras columnas.

2.) Lo otro es definir un cursor general con todas las columnas y segun la opcion indicadas dejas visible o invisibles ciertas columnas.

Con una de estas formas ya tiene definido el nombre del campo en las columnas para poder hacer el ordenamiento

ejemplo

crea una variable publica en el init
public ncampo as string

crea un metodo ejemplo

ordena

select * from micursor order by &ncampo into cursor micursor

thisform.grid1.Recordsource="micursor"
thisfrom.grid1,refresh

Y en el evento Click de Cada header1 escribes vamos a suponer que este es del column1 donde esta el codigo
ncampo="codigo"
thisform.ordena

Y en el Click de Cada header1 escribes vamos a suponer que este es del column2 donde esta la unidad
ncampo="unidad"
thisform.ordena

Y en el Click de Cada header1 escribes vamos a suponer que este es del column3 donde esta la descripcion
ncampo="descrip"
thisform.ordena

y asi sucesibamente

espero te sirva

Acm.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar grid click en columna

Publicado por Juanma Cruz (508 intervenciones) el 09/06/2010 12:34:23
¿Te has molestado ya en mirar la documentación de BindEvent() ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres

RE:Ordenar grid click en columna

Publicado por Andres (1 intervención) el 22/02/2012 21:04:24
aclara que trabaja en VFP6, el bindevent aparece apartir de vfp8. Si alguien sabe como añadir codigo a eventos en tiempo de ejecucion en vfp6 se agradece.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar