Doble Click en un Grid

2,420 views
Skip to first unread message

Efrain

unread,
Apr 24, 2012, 2:41:38 PM4/24/12
to Mundo Visual FoxPro
Buenas Amigos Foxeros..

Dos consultas sobre GRID

1. Tengo una Grid en la que quiero programar el boble click para que
ejecute una accion para el registro actual, he intentado programando
el Evento dblClick pero no me funciona, ¿como debo hacer para que me
funcione?

2. Tengo una Clase con un Grid, en esta clase por medio de propiedades
le indico que tabla o cursor me debe manejar , Los campos que me debe
mostrar, los titulos y anchos de cada columna,

Ahora lo que quiero es programar el evento click de cada cabecera ,
como puedo hacerlo desde programacion ya que desde diseño no se
cuantas columnas va a tener el Grid

Gracias por su ayuda

Saludos

Efrain

Zarlu

unread,
Apr 24, 2012, 7:56:09 PM4/24/12
to Mundo Visual FoxPro
Efraín, buenas tardes!

Sobre tu primer planteamiento te sugiero:

1.- Tu comando los debes poner en el metodo dobleclick en el text de
todas las columnas.
2.- Quiero pensar que la rutina que pretendes ejecutar al dar doble
click en el registro
ya la tienes en un botón en el mismo formulario (debierá ser así).
Suponiendo que ese
botón es "Thisform.cmdSeleccionar", entonces en el metodo dobleclick
del text de cada columna
bastará con que pongas ThisForm.cmdSeleccionar.Click

El segundo planteamiento no le capté bien que deseas hacer.

Suerte y comentas si te funcionó lo sugerido.

Zarlu
Chetumal, Quintana Roo, México



Ruben Antunes

unread,
Apr 24, 2012, 8:09:36 PM4/24/12
to mundovis...@googlegroups.com
Quizas te sirva esto: por lo menos yo lo uso asi.

--------------------------
Thisform.grdGRID.RecordSource=""
Thisform.grdGRID.RecordSource=Thisform.RecorActivo
Thisform.grdGRID.RecordSourceType=1
Thisform.grdGRID.ColumnCount=5

Thisform.grdGRID.Column1.ControlSource="Apellidof"
Thisform.grdGRID.Column1.Header1.Caption="Apellido y Nombre"
Thisform.grdGRID.Column1.Header1.Alignment=0
Thisform.grdGRID.Column1.Text1.Alignment=0
Thisform.grdGRID.Column1.Width=210
BINDEVENT(Thisform.grdGRID.Column1.Text1, 'DblClick', Thisform,
'LlamarLegajo')

Thisform.grdGRID.Column2.ControlSource="Documento"
Thisform.grdGRID.Column2.Header1.Caption="Documento "
Thisform.grdGRID.Column2.Header1.Alignment=1
Thisform.grdGRID.Column2.Text1.Alignment=1
Thisform.grdGRID.Column2.Text1.InputMask=REPLICATE('X',14)
Thisform.grdGRID.Column2.Text1.Format='J'
Thisform.grdGRID.Column2.Width=70
BINDEVENT(Thisform.grdGRID.Column2.Text1, 'DblClick', Thisform,
'LlamarLegajo')
--------------------------
Donde: LlamarLegajo es un Procedimiento definido dentro del formulario

-----Mensaje original-----
De: mundovis...@googlegroups.com
[mailto:mundovis...@googlegroups.com] En nombre de Zarlu
Enviado el: martes, 24 de abril de 2012 08:56 p.m.
Para: Mundo Visual FoxPro
Asunto: [Mundo Visual FoxPro] Re: Doble Click en un Grid

Efraín, buenas tardes!

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com

efh...@gmail.com

unread,
Apr 24, 2012, 10:54:14 PM4/24/12
to mundovis...@googlegroups.com
Buenas Zarlu

Gracias por tu aporte me funciono sin problemas,

Con respecto a la segunda pregunta, lo que quiero hacer es programar en los
encabezados el evento dblClick, desde programaci�n, como es una clase no se
cuantas columnas tiene el grid,

que instrucci�n utilizo para configurar todos los encabezados de las n
Columnas

Gracias nuevamente por tu aporte

Saludos

Efra�n
Cartagena, Colombia

-----Mensaje original-----
From: Zarlu
Sent: Tuesday, April 24, 2012 6:56 PM
To: Mundo Visual FoxPro
Subject: [Mundo Visual FoxPro] Re: Doble Click en un Grid

Efra�n, buenas tardes!

Sobre tu primer planteamiento te sugiero:

1.- Tu comando los debes poner en el metodo dobleclick en el text de
todas las columnas.
2.- Quiero pensar que la rutina que pretendes ejecutar al dar doble
click en el registro

ya la tienes en un bot�n en el mismo formulario (debier� ser as�).
Suponiendo que ese
bot�n es "Thisform.cmdSeleccionar", entonces en el metodo dobleclick


del text de cada columna

bastar� con que pongas ThisForm.cmdSeleccionar.Click

El segundo planteamiento no le capt� bien que deseas hacer.

Suerte y comentas si te funcion� lo sugerido.

Zarlu
Chetumal, Quintana Roo, M�xico

--
_______________________________________________________________
Has recibido este mensaje porque est�s suscrito al Grupo "Mundo Visual


FoxPro" de Grupos de Google.

Para anular la suscripci�n a este grupo, env�a un mensaje a:
mundovisualfox...@googlegroups.com

Pablo Daniel Lissa

unread,
Apr 25, 2012, 8:07:41 AM4/25/12
to Mundo Visual FoxPro
Hola:

Para cargar en tiempo de ejecución los eventos, te recomiendo la
función BINDEVENT (como ya la usó Rubén Antunes en su respuesta).

Supongamos que definiste un método que se llame, por ejemplo,
metodoCabecera para la clase Grid. Ese método tiene el código que
querés implementar en cada cabecera. Luego, en el evento Init del Grid
podrías poner:

FOR i = 1 TO this.ColumnCount
BINDEVENT(this.Columns(i).Controls(1), "DblClick", this,
"metodoCabecera")
ENDFOR

Con esto, cada vez que hagas doble click sobre la cabecera, se va a
ejecutar el código que definiste en metodoCabecera.

Espero que te sirva. Saludos.
---------------------------------------------------------------------------------------------------------

Gabriel Dameñov

unread,
Apr 25, 2012, 8:13:23 AM4/25/12
to mundovis...@googlegroups.com
Respecto del evento dblclick, si estableces la propiedad AllowCellSelection del Grid a .F., solo deberás colocar código en el evento DblClick de la grilla, ya que este será el que se ejecute. Si dicha propiedad está establecida a .T., suscribo con todo lo dicho por los colegas.

Un cordial saludo.

Gabriel J. Dameñov
Rosario - Santa Fe - Argentina

Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual

FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com



--
Gabriel J. Dameñov

efh...@gmail.com

unread,
Apr 26, 2012, 4:15:50 PM4/26/12
to mundovis...@googlegroups.com
Gabriel Gracias por tu aporte con esta propiedad programe el evento dblclick de la grilla y no me toco hacerlo en cada columna, así es mas eficiente
 
Pablo gracias por tu aporte me funciona de maravilla, el problema que tengo ahora es como identificar la columna  de la cabecera donde se hizo doble click
 
Gracias
 
 
Efraín Hernández
Cartagena Colombia


--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:

Gabriel Dameñov

unread,
Apr 27, 2012, 7:10:06 AM4/27/12
to mundovis...@googlegroups.com
Podés usar la siguiente función para determinar la columna del grid sobre la que se está haciendo clic:

thisform.Grilla.GridHitTest(lnCoordX, lnCoordY, @lObjeto, @lnRow, @lnCol)

Los últimos tres parámetro se pasan por referencia. El número de columna se asigna a "lnCol"

Gabriel Dameñov
Rosario - Santa Fe - Argentina

--
Gabriel J. Dameñov

mario oviedo

unread,
Apr 27, 2012, 1:32:02 PM4/27/12
to mundovis...@googlegroups.com
GABRIEL, endonde debe deir  esta nstruccion en el init del grid

--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
 
Para anular la suscripción a este grupo, envía un mensaje a:

efh...@gmail.com

unread,
Apr 27, 2012, 3:47:45 PM4/27/12
to mundovis...@googlegroups.com
Buenas Gabriel
 
Tienes algún Ejemplo de como se usa esta propiedad,
 
Agregue un evento dobleclick y con BindEvent reemplazo este por el dblclick de la cabecera pero no logro obtener el numero de la columna donde se hace doble click en la cabecera
 
Te agradezco si tienes un ejemplo, busque en la ayuda y en google pero no es muy claro

efh...@gmail.com

unread,
Apr 30, 2012, 10:44:08 AM4/30/12
to mundovis...@googlegroups.com
Buenas Compañeros
 
Gracias a todos por su aporte, logre hacerlo siguiendo un articulo que esta en PortalFox Configurar una grilla automáticamente en una sola línea aquí les dejo el link
 
 
en este articulo muestra como agregar  una cebecera a cada columna, creando una clase Cabecera y en ella programando el evento dobleclick
 
Nuevamente Gracias a Todos por sus valiosos aportes
 
Saludos

Gabriel Dameñov

unread,
Apr 30, 2012, 7:37:29 PM4/30/12
to mundovis...@googlegroups.com
El método GridHitText puede utilizarse en cualquier evento o método, siempre que se conozcan las coordenadas x e y del puntero del mouse. Mira la ayuda de VFP, allí te indica el valor que se cargará en el tercer parámetro por referencia. Este valor numérico te indica de qué control se trata.

Un saludo.

Gabriel Dameñov
Rosario - Santa Fe - Argentina
--
Gabriel J. Dameñov
Reply all
Reply to author
Forward
0 new messages