• Viernes 29 de Marzo de 2024, 10:54

Autor Tema:  Aparecer Un Panel En Determinadas Coordenadas  (Leído 7041 veces)

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Aparecer Un Panel En Determinadas Coordenadas
« en: Martes 12 de Junio de 2007, 19:25 »
0
Hola, tengo un problema con el DataGridView, como puedo hacer para que cuando le de clic a una celda específica me aparezca un panel en la esquina de esa celda, no se como sacar las coordenas X y Y para colocarlo en esa posición, adjunto una imagen para que se den cuenta que es lo que quiero hacer, espero me hayan entendido, de antemano muchas gracias no vemos
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #1 en: Martes 12 de Junio de 2007, 19:35 »
0
Ummm tendrias que sacar como primer paso las coordenadas de la celda (el ancho) por si al user se le da por estirar la celda o ya vos la dejar no modificable ... luego al panel le das como primera coordenada la posicion (ancho) de la celda seleccionada.... en este momento no tengo el vb.net en esta maquina asi que solo puro concepto te estoy dando  :P me imagino que debes de jugar con el top del panel....  :ph34r:

Saludos...  :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #2 en: Martes 12 de Junio de 2007, 19:50 »
0
Hola, la verdad que toy perdido en esta parte, mira este codigo:

Código: Text
  1.     Private Sub DataGridView1_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown
  2.         If e.ColumnIndex = 0 And e.RowIndex = 0 Then
  3.             Dim X As Integer = Me.DataGridView1.Item(e.ColumnIndex, e.RowIndex).Size.Width
  4.             Dim Y As Integer = Me.DataGridView1.Item(e.ColumnIndex, e.RowIndex).Size.Height
  5.             Me.Mostrar_Datos.Location = New Point(X, Y)
  6.             Me.Mostrar_Datos.Visible = True
  7.         Else
  8.             Me.Mostrar_Datos.Visible = False
  9.         End If
  10.     End Sub
  11.  

Se que está mal ps el Height no debería ir (digo io), no se coloca el panel donde quiero, alguna sugerencia???
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #3 en: Martes 12 de Junio de 2007, 20:30 »
0
Cajami te pongo un ejemplin que se me acaba de ocurrir solo lo tenes que implementar a tu datagridview:


Código: Text
  1. Dim xpos,ypos as integer
  2.  
  3. xpos = me.text1.location.x + me.text1.width
  4. ypos = me.text1.location.y + 25 ' ya que queremos que este en la esquina del textbox bueno este ejemplo jajaja
  5.  
  6. me.mostrar_datos.location = new system.drawing.point (xpos,ypos)
  7.  


este lo que hacer es poner el panel en la esquina de un textbox .. pero ya vos le sacas las coordenadas a tu datagridview....

Bueno espero te sirva de ayuda

Exitos !!!!!  :hola:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #4 en: Martes 12 de Junio de 2007, 20:45 »
0
Hola, pero el hecho es que no se como sacar las coordenadas de una celda, trato de encontrar el location y naa, tal vez estaré mal en algun sitio :'(
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

Bigpercynet

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
    • http://www.ozonicco.info
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #5 en: Martes 12 de Junio de 2007, 23:50 »
0
Hola a todos,

Espero que estos les sea de utilidad. Realiza precisamente lo que buscais. Para obtener los valores del location de cualquier celda, simplemente lo que se hace es sumar cada uno de los valores de las propiedades left y top tanto del dataGridView como de las celdas adyacentes a la celda selecionada (incluye esta).


 
Apreciad el codigo:

 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int  x_i=e.ColumnIndex;
            int y_i= e.RowIndex;
            Text = e.ColumnIndex.ToString();
            int margenX = 0;
            int margenY = 0;

            int margenXdataGridView = dataGridView1.Left;
            int margenYdataGridView = dataGridView1.Top;

       
            for (int i = 0; i <= e.ColumnIndex + 1; i++)
            {
             
                DataGridViewCell cell =dataGridView1.Rows[e.RowIndex].Cells;
                dataGridView1.CurrentCell = cell;
                margenX += dataGridView1.CurrentCell.Size.Width;
               
            }

            for (int i = 0; i <= e.RowIndex + 1; i++)
            {
                DataGridViewCell cell2 = dataGridView1.Rows.Cells[e.ColumnIndex];
                dataGridView1.CurrentCell =cell2;
                margenY += dataGridView1.CurrentCell.Size.Height;
            }

            int left = 0;
            int top = 0;

            left = margenXdataGridView +  margenX;
            top = margenYdataGridView + margenY;

            checkBox1.Location = new Point(left - 60, top + 10);

            DataGridViewCell cell3 = dataGridView1.Rows[x_i].Cells[y_i];
            dataGridView1.CurrentCell = cell3;
           
           
        }

Saludos,
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Ozónicco - ¡primero complilo, luego existo !
mi blog

Bigpercynet

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
    • http://www.ozonicco.info
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #6 en: Martes 12 de Junio de 2007, 23:53 »
0
Hola de nuevo, solo queria decirles que el codigo en VB .NET es similar, para esta vez, solo hay que quitarles agregados como punto y comas, llaves... eso nada mas


Saludos,

Percy Reyes,
Ozónicco - ¡primero complilo, luego existo !
mi blog

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #7 en: Miércoles 13 de Junio de 2007, 16:48 »
0
Hola, muchisimas gracias Bigpercynet y ElNapster, me salió aqui está el codigo en VB.Net, le he borrado algunas lineas :D :

Código: Text
  1.     Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
  2.         If e.ColumnIndex = 0 Then
  3.             Dim x_i As Integer = e.ColumnIndex
  4.             Dim y_i As Integer = e.RowIndex
  5.             Dim margenX As Integer = 0
  6.             Dim margenY As Integer = 0
  7.             Dim margenXdataGridView As Integer = DataGridView1.Left
  8.             Dim margenYdataGridView As Integer = DataGridView1.Top
  9.  
  10.             For I As Integer = 0 To e.ColumnIndex + 1
  11.                 margenX += DataGridView1.CurrentCell.Size.Width
  12.             Next
  13.  
  14.             For I As Integer = 0 To e.RowIndex + 1
  15.                 margenY += DataGridView1.CurrentCell.Size.Height
  16.             Next
  17.  
  18.             Dim left As Integer = 0
  19.             Dim top As Integer = 0
  20.  
  21.             left = margenXdataGridView + margenX
  22.             top = margenYdataGridView + margenY
  23.  
  24.             Me.Mostrar_Datos.Visible = True
  25.             Me.Mostrar_Datos.Location = New Point(left - 58, top)
  26.         End If
  27.     End Sub
  28.  

Ahora se me ha metido algo en la mente, que pasa o mejor dicho si el dataGridView llega hasta el final del formulario y ps si uno hace clic en el ultimo formulario aparece en mi caso el panel no se ve todo osea o hacer para que si el panel no se mostrara todo que suba hasta que se muestre todo, adjunto una imagen para que se den cuenta
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

Cajami

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #8 en: Miércoles 13 de Junio de 2007, 17:21 »
0
Hola, osea como hacer esto, vean la imagen, nos vemos  :hola:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Lima - Perú

-------------------------------------------------------------------------------------------------------
"Persigue tus metas, tus objetivos, tus sueños, nunca t rindas si t caes 1000 veces levantat 1000 veces y sigue adelante..."

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #9 en: Lunes 2 de Julio de 2007, 09:45 »
0
En otro mensaje donde te mandé un ejemplo ya aparece como obtener la posición del ratón... pero vamos a lo que solicitas...

Antes de mostrar el panel, debes calcular si cabe o no, es decir tomando la posición a colocar y sumando el tamaño del panel debes saber si es mayor que el tamaño del formulario, si es menor, perfecto, lo pintas, y si es mayor entonces debes restar el tamaño del panel y el tamaño de la celda.

Nota que debes hacer por separado el 'top' y el 'left'.

Saludos.
«Ma non troppo»
----> ModoVacaciones = False<----

jr0driguezv

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Aparecer Un Panel En Determinadas Coordenadas
« Respuesta #10 en: Martes 10 de Octubre de 2017, 22:52 »
0
En otro mensaje donde te mandé un ejemplo ya aparece como obtener la posición del ratón... pero vamos a lo que solicitas...

Antes de mostrar el panel, debes calcular si cabe o no, es decir tomando la posición a colocar y sumando el tamaño del panel debes saber si es mayor que el tamaño del formulario, si es menor, perfecto, lo pintas, y si es mayor entonces debes restar el tamaño del panel y el tamaño de la celda.

Nota que debes hacer por separado el 'top' y el 'left'.

Saludos.


Saludos, como hacer esto?  tambien necesito algo semejante por favor ayuda