Scroll en DBGrid
Hola a todos:
Trabajo con Delphi5 Necesito hacer lo siguiente y no se si se puede: Tengo un DBGrid que en pantalla NO saca (por espacio) todos los campos de una tabla. Entonces busco que cuando el ratón llegue a la última/primera columna del DBGrid haga un scroll horizontal automático hacia la derecha o la izquierda sacando el resto de las columnas de la tabla. Gracias por vuestra ayuda. |
Hola, recuerda poner tus preguntas en los foros adecuados, este es "Conexión con bases de datos", y la pregunta no tiene mucho que ver con eso ;)
P.d.: Lo muevo a 'varios' |
deberías explicarte mejor porque no entiendo que es lo que quieres hacer !!! ;)
|
Hola.
A ver si así hace mas o menos lo que buscas... :rolleyes:
Saludos. |
Hola.
Me quede pensando que agregando un detalle te puede servir para más de un TDBGrid en el mismo form:
Saludos. |
Ecfisa, muchas gracias por responder
Es "casi" perfecto, lo que pasa es que por ejemplo si una tabla tiene 15 campos y el DBGrid sólo visualiza 5, al llegar a las barras de scroll verticales se mueve automáticamente hasta el último campo de la tabla (sin visualizar los intermedios). Lo ideal sería que cuando el cursor se posicionara sobre la primera/última columna visible (sin llegar a las del scroll vertical-derecha o fijas-izquierda), se moviese una columna mas a la izquierda o derecha. Eso si que sería perfecto. Muchas gracias y perdón por el abuso. |
Hola marcial.
Entonces creo que el primer código que adjunté se hacercaba más a lo que buscabas. El problema que veo es que comparando la coordenada X del mouse por la igualdad, te desplazará una columna cuando ingresa a la zona de desplazamiento pero también cuando sale. Esto se soluciona comparando por mayor y menor, pero cualquier movimiento que haga con el mouse una vez en el area de desplazamiento, por pequeño que sea, provocará el scroll. En resumidas cuentas: Es imposible de manejar para el usuario. Así que la solución es detectar si el puntero del mouse está dentro de las zonas de desplazamiento o nó. Si ya se encuentra dentro no debe realizar el scroll. Creo que el código que buscas sería: De este modo el usuario tiene que volver a la zona de no desplazamiento y reingresar a la de desplazamiento para que se produzca el scroll (izquierdo o derecho). Saludos. |
Solucionado. Muy bien explicado. Da gusto encontrar profesores así.
Muchas Gracias |
De hecho, y gracias a tu inestimable ayuda he mezclado tus códigos y he añadido algo hasta que ha quedado a mi gusto.
Reitero nuevamente mi agradecimiento porque sólo no podría haberlo hecho.
|
Hola marcial.
Primero que nada, me alegro que el código te haya servido como base :). Ahora que veo que deseas un scroll continuo con retraso de tiempo, te pongo otra alternativa más simple:
Saludos. |
Muchas gracias. Como siempre, mejor que el mio.
|
Cita:
Yo no diría mejor... sólo un modo diferente que dá un código más simple. Saludos.:) |
Saludos ecfisa, podría traducir este código a c usted o alguien mas? Seria magnífico !!!
|
Cita:
Código:
void __fastcall TForm1::MMouseEvent(TMsg &msg, bool &Handled){ Saludos. :) PD: No me trates de usted. (la próxima vez que lo hagas te traduzco a Visual Basic :p:D ) |
Hola de nuevo:
Parece que la felicidad nunca es completa. Resulta que aplico el código y va perfectamente pero....cuando en el programa existe un componente Application Event para controlar la rueda del ratón con este código en el evento On Message:
Resulta que el maravilloso código de ecfisa no funciona. ¿Habría alguna manera de poder utilizar los dos a la vez? |
Vaya, si que se puede. Lo dejo por si a alguien le interesa:
En las Private Declarations
Despues de los Uses y antes de {SR *.DFM}
El el OnCreate de la Form
El procedure del Scroll Vertical
Y por último, después del procedure Vertical, el procedure de Ecfisa para el Scroll Horizontal Así tenemos los Scroll Vertical y Horizontal sin usar las Barras de Desplazamiento Muchas gracias |
La franja horaria es GMT +2. Ahora son las 06:26:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi