Comparar Coordenadas En Un GridView


Objetivo: Comparar Coordenadas En Un GridView
Hola a todos.

Tengo un GridView dividido en una serie de columnas y filas. Cuando el usuario pulse en una determinada casilla quiero que el programa mande un mensaje. Pero el problema que me encuentro es que no puedo usar un if tal que así.

if grdGridVies[2,2] = grdGridView[2,2] then print "Si"


Por supuesto que esto es un ejemplo, se supone que esto es igual, pues para gambas no es así. ¿Como puedo hacer este tipo de comparaciones? ¿Alguna otra forma?

Estoy usando gambas 3.7.1 en Debian Testing.

Muchas gracias.

Perfil MP  
Objetivo: Re: Comparar Coordenadas En Un GridView
Hola, Guizans

Supongo que lo que quieres comparar es el contenido de una determinada celda (que es un texto) con otra cosa. Pero para poder comparar algo, ambos objetos tienen que ser del mismo tipo, en este caso un string de texto.

Por lo que lo siguiente debería funcionar, ya que usamos la propiedad .Text de la celda determinada por sus índices de fila y columna:

if grdGridView[2,2].Text = "contenido de la celda" then print "Si"


Resumiendo, grdGridView[2,2] se refiere al objeto Cell y grdGridView[2,2].Text se refiere al contenido de texto de ese objeto Cell.

Saludos

Perfil MP  
Objetivo: Re: Comparar Coordenadas En Un GridView
Hola jguardon.

No, en mi caso no quiero comparar el contenido, ya que todas las celdas están vacías. Simplemente quiero comparar las coordenadas. Si el usuario hace click en una determinada casilla quiero que el programa haga algo. Pero no me sirve cualquier casilla, tiene que ser la casilla que yo quiero, de ahí la necesidad de comparar las coordenadas de la casilla que ha pulsado el usuario con las coordenadas de las casillas que a mi me interesan.

Muchas gracias.

Edito:

He encontrado una forma que me vale, no se si es la mejor, pero me funciona.

dim a as point
dim b as point

a = new point(coordena1, coordenada2)
b = new point(coordena3, coordeanda4)

if a = b then print "Son iguales"


Un saludo.

última edición por Guizans el Sabado, 15 Agosto 2015, 15:50; editado 1 vez
Perfil MP  
Objetivo: Re: Comparar Coordenadas En Un GridView
Suponiendo que el secundo términe de comparación son las coordenadas grdGridView[2,2], yo propondía:

Public Sub grdGridVies_Click()

If CStr(grdGridVies.RowAt(Mouse.Y)) & CStr(grdGridVies.ColumnAt(Mouse.X)) = "22" Then Print "Si"

End



o mejor:
Public Sub grdGridVies_Click()

If CStr(grdGridVies.Row) & CStr(grdGridVies.Column) = "22" Then Print "Si"

End

última edición por vuott el Martes, 18 Agosto 2015, 20:24; editado 4 veces
Perfil MP  
Objetivo: Re: Comparar Coordenadas En Un GridView
Hola vuott.

Tu solución también me gusta, pero creo que de momento me voy a quedar con la solución que encontré, me parece más elegante.

Muchas gracias.

Un saludo.

Perfil MP  
Objetivo: Re: Comparar Coordenadas En Un GridView
Guizans escribió: [Ver mensaje]
....me parece más elegante.


Puede ser, pero no he comprendido como tu obtienes en manera segura las coordenadas de la celda donde tu hace click con el mouse, porque la Clase Point solo dà coordenadas exprimidas en pixel.

Pregunta: las coordenadas del GridView que tu quieres comparar, se refieren a las celdas o a las distancias en pixel de Mouse.X y Mouse.Y ?

última edición por vuott el Sabado, 15 Agosto 2015, 23:03; editado 2 veces
Perfil MP  
Objetivo: Re: Comparar Coordenadas En Un GridView
Hola vuott.

Perdón por tardar tanto en contestar, pero me ha sido imposible.

Volviendo al tema, lo que quiero capturar son las coordenadas de las celdas. Para obtener la coordenada de la celda en la cual el usuario hace click uso esto:
public sub grdTablero_Click()
dim coor as point
coor = new point(grdTablero.Row, grdTablero.Column)
end

Entonces el la variable coor se almacena las coordenadas en las que el usuario hace click. Si quiero saber si ha hecho click por ejemplo en la casilla superior izquierda hago lo siguiente:
public sub grdTablero_Click()
dim coor as point
dim caar as point
coor = new point(grdTablero.Row, grdTablero.Column)
caar = new point(0,0)
if coor = caar then print "Estas en la casilla superior izquierda"
end


Lo dicho, no se si hay otra manera mejor y más fácil, pero esta me ha sacado del atolladero.

Gracias por vuestra ayuda.

Perfil MP  
Objetivo: Re: Comparar Coordenadas En Un GridView
Perdón, pero siguo tenendo algunas dudas:

1) la Clase Point() quiere dos parametros que se refieren a las coordinadas de la distancia de un punto desde el lado superior y desde el lado izquierdo.
2) solo es casual que la Classe Point() te ofrezca la posibilidad de almacenar dos valores costantes. Es decir tu utizas en manera... no-propia la Clase Point().
3) Las coordinadas de las celdas de un GridView son indices de la rejilla, como si fuera una matriz.
4) Este tu estratagema, que - sì - dà sus efectos, te ha pero obligado a declarar dos variables y a crear dos objetos de tipo Point.

...creo que puedes obtener más con menos.

última edición por vuott el Martes, 18 Agosto 2015, 20:23; editado 1 vez
Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.3808s (PHP: -76% SQL: 176%)
Consultas SQL: 49 - Debug off - GZIP Activado