delphi - org - mapwindows 5
Ver posición en DBGrid cuando se desplaza en Delphi (2)
Supongo que tiene goRowSelect en las opciones de la cuadrícula. Esto fuerza al col seleccionado a ser la primera columna no fija, de modo que cada vez que la fila cambia el código para desplazar la celda seleccionada a la vista, fuerza a que la primera columna no fija sea visible.
Como goRowSelect también desactiva de manera efectiva el desplazamiento horizontal con el teclado, trato de vivir sin él. Puede usar el dibujo personalizado de las celdas de la grilla para mostrar todas las celdas de la fila actual con los colores adecuados para las celdas seleccionadas, aunque solo se haya seleccionado una celda. Lo uso también para mostrar diferentes colores dependiendo de si la cuadrícula está enfocada o no, similar a lo que hace un control de árbol estándar. Para que esto funcione correctamente, no obstante, debe manejar no solo eventos de navegación de celdas de cuadrícula, sino también otros eventos, como OnEnter y OnExit de la grilla, OnActivate y OnDeactivate de la aplicación, y así sucesivamente.
Tengo un DBGrid en un formulario. DBGrid tiene muchas columnas, por lo que se muestra un desplazamiento horizontal. Desplazo la vista de DBGrid a la derecha para ver más columnas. Si selecciono una fila, la vista DBGrid se restablece automáticamente para ver la primera columna (como si me desplazo hacia atrás a la posición más a la izquierda).
Hay alguna manera de prevenir eso?
Es posible que pueda solicitar la posición de la barra de desplazamiento
GetScrollInfo(Self.Handle, SB_VERT, SIOld);
y use SetScrollInfo( )
para regresarlo. Probablemente haya una mejor manera. SelectedField
es otra forma (obtener / configurar según sea necesario).