![]() |
Cambio de columnas en una grilla
Hola integrantes.
Tengo un problema en apariencia simple pero no logro resolverlo. Tengo una grilla asociada a una tabla de datos. en esta grilla estan representadas las reservas de habitaciones para un rango de fechas dado. Cada tipo de ocupacion es coloreado segun sea el caso. Todo funciona de maravillas.., pero tengo el siguiente problema: Tengo un StaticText, en el cual muestro toda la informacion relacionada con el Cliente de determinada celdilla ( en cada celdilla solo existe un codigo que hace referencia a la tabla de reservaciones de clientes ). Hasta ahi todo va bien. el problema se produce cuando cambio de fila con el teclado o cambio de celdilla con el mouse. el puntero de la grilla sigue apuntando al dato anterior antes de cambiar el foco. Esto no ocurre si con las teclas de flechas me muevo hacia la derecha o isquierda. En este caso por cada movimiento se actualiza el puntero de la grilla y obiamnete mi StaticText. Alguien puede darme luz, sobre el tema. Agradecido de antemano. Saludos Jose Miguel B. |
Hola...
Cita:
Saludos |
Si tuvieses la tabla/query en un módulo de datos, lo mas apropiado sería utilizar el evento OnUpdateData del datasource que sirve de puente entre el grid y el dataset, que está hecho para estos casos.
Hasta luego. ;) |
Hola:
Creo que no me explique vien y conduje a confucion. El problema que tengo es que cuando me muevo por la grilla hacia la isquierda o derecha, el puntero de la misma se actualiza. Pero no ocurre esto si voy de arriba a abajo. Osea si me muevo entre columnas el puntero de la grilla se actualiza, pero no ocurre lo mismo si me muevo entre filas. Alguna idea al respecto. Saludos Jose Miguel B. |
:confused:
Definitivamente sigo sin entender... :confused: |
Hola
Mira con este ejemplo tomado desde el "Help de delphi" te va a quedar mas claro el problema. Solo Modifique la asignacion del "DisplayLabel" para graficar mejor la situacion: El ejemplo siguiente requiere de una Grilla, un DataSource y un Table. con las siguientes asignaciones en la tabla: Table1.DatabaseName := 'DBDEMOS'; Table1.TableName := 'biofile.db'; ... Entonces cada vez que pinches una celdilla o te muevas con las teclas de flecha hacia la isquierda o derecha, en la cabecera de la columna de la celdilla pinchada aparecera un asterisco y los primeros 4 caracteres del campo 'Category'. No ocurrira lo mismo si te mueves con las teclas de flecha hacia arriba o hacia abajo. A pesar de que el campo 'Category' ya tiene otro contenido. Espero haberme explicado mejor... Saludos Jose Miguel B. var Form1: TForm1; StarIsThere: Boolean; implementation {$R *.dfm} procedure TForm1.DBGrid1ColEnter(Sender: TObject); begin with DBGrid1.SelectedField do DisplayLabel := '* ' + copy( Table1.FieldByName('Category').AsString,1,4)+ '* '+ DisplayLabel; StarIsThere := True; end; procedure TForm1.DBGrid1ColExit(Sender: TObject); var TheLabel: string; begin if StarIsThere then begin with DBGrid1.SelectedField do begin TheLabel := DisplayLabel; Delete(TheLabel, 1, 8); DisplayLabel := TheLabel; end; end; end; |
Pablo Carlos te lo dijo desde un principio: usa el evento AfterScroll del dataset. El evento OnColEnter sólo se activará cuando entres a la columna y no si te mueves sobre ella. Es decir, si te desplazas verticalmente, el evento no se genera porque no has entrado a una nueva columna. Sin embargo tal desplazamiento vertical sí genera un cambio de fila y por tanto el evento AfterScroll.
// Saludos |
Que facil era, ... gracias por su ayuda. Sirvio de maravilla el AfterScroll.
Dentro del procedimiento AfterScroll hice el llamado a onColEnter y funciono de maravillas. Una vez mas gracias. Saludos Jose Miguel Bakulic V. |
La franja horaria es GMT +2. Ahora son las 11:13:41. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi