![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() 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. |
#2
|
||||
|
||||
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'
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
deberías explicarte mejor porque no entiendo que es lo que quieres hacer !!!
![]()
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
#4
|
||||
|
||||
Hola.
A ver si así hace mas o menos lo que buscas... ![]()
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 27-03-2012 a las 01:06:42. |
#5
|
||||
|
||||
Hola.
Me quede pensando que agregando un detalle te puede servir para más de un TDBGrid en el mismo form:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 27-03-2012 a las 01:41:31. Razón: corrección |
#6
|
|||
|
|||
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. |
#7
|
||||
|
||||
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.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
|||
|
|||
Solucionado. Muy bien explicado. Da gusto encontrar profesores así.
Muchas Gracias |
#9
|
|||
|
|||
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.
|
#10
|
||||
|
||||
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.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#11
|
|||
|
|||
Muchas gracias. Como siempre, mejor que el mio.
|
#12
|
||||
|
||||
Hola.
Yo no diría mejor... sólo un modo diferente que dá un código más simple. Saludos. ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#13
|
||||
|
||||
Saludos ecfisa, podría traducir este código a c usted o alguien mas? Seria magnífico !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
#14
|
||||
|
||||
Cita:
Código:
void __fastcall TForm1::MMouseEvent(TMsg &msg, bool &Handled){ TPoint tp; int i; TWinControl *wc = FindVCLWindow(Mouse->CursorPos); if (wc != NULL) { tp = Form1->ScreenToClient(Mouse->CursorPos); TDBGrid *g = static_cast<TDBGrid*> (wc); int ZD = GetSystemMetrics(SM_CXVSCROLL); while(tp.x >= g->Left && tp.x <= g->Left+ZD) { tp = Form1->ScreenToClient(Mouse->CursorPos); SendMessage(g->Handle, WM_HSCROLL, SB_LINELEFT, 0); Sleep(250); }; while (tp.x >= g->Left+g->Width-ZD && tp.x <= g->Left+g->Width) { tp = Form1->ScreenToClient(Mouse->CursorPos); SendMessage(g->Handle, WM_HSCROLL, SB_LINERIGHT, 0); Sleep(250); }; } }; void __fastcall TForm1::FormCreate(TObject *Sender) { Application->OnMessage = MMouseEvent; } Saludos. ![]() PD: No me trates de usted. (la próxima vez que lo hagas te traduzco a Visual Basic ![]() ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 30-03-2012 a las 16:04:32. |
#15
|
|||
|
|||
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? |
#16
|
|||
|
|||
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 |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
DBGrid y Rueda(Scroll) del Mouse en Delphi 7 | Emilio_82 | Conexión con bases de datos | 8 | 05-04-2013 09:23:41 |
Eliminar scroll horizontal (que no scrollbar) de dbgrid | coso | OOP | 21 | 07-10-2008 19:29:13 |
barra de scroll en DBGrid | macro32 | Conexión con bases de datos | 2 | 15-08-2008 07:53:58 |
Barra de Scroll de un DbGrid con Query | gandalf_uy | Varios | 2 | 22-09-2005 18:09:34 |
DBGRID y SCROLL | vtdeleon | OOP | 2 | 22-12-2004 14:34:59 |
![]() |
|