![]() |
Campos en DBGrid que no pertenecen al DataSource (sin FieldName)
Hola a todos!,
tengo dos campos (columns) que no tienen FieldName porque pretendo que tomen valor de un mismo campo dependiendo si este es positivo o negativo. Mi preguntas es, como le asigno esos valores a las columnas del DBGrid que no tienen FieldName?. |
Una opción es asignar el FielName a ambas columnas y ocultar la aparición del valor interceptando el evento OnDrawColumnCell del DBGrid. Aquí va un ejemplito:
Código:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; |
Muy bien... excelente!...
perdona la ignorancia, pero... en estos campos tengo que aceptar valores!... debo protejer uno de ellos (el mismo FieldName) al momento de aceptar valores... como manejaria esto? |
Ufff!! Eso es harina de otro costal.
Puesto que las dos columnas apuntan al mismo campo, ¿no te parece suficiente que puedan escribir en ambas indistintamente? En el momento que graben el dato, desaparecerá de la columna correspondiente. Pruébalo a ver si te sirve. |
OK, hare lo siguiente, en el Onvalidate del campo que esta siendo utilizado en las dos columnas controlare el valor positivo o negativo introducido.
Gracias mi hermano. |
Hola de nuevo:
No creo que se trate de controlar el evento OnValidate del campo en cuestión, puesto que eso es actuar a nivel de Tabla, y lo otro es a nivel de DBGrid, deben separarse ambas cosas y supongo que la tabla la tienes en un DataModule y el DBGrid en un Form. Además, lo que hicieras en el OnValidate ¿cómo repercutiría en la visualización del DBGrid si ambas columnas apuntan al mismo campo? |
Tienes toda la razon, solo queda una solucion... usar una sola columna con su FieldName. Parece ser quien diseño la tabla desarrollaba en cobol y quiso ahorarce un campo. Creo un campo Monto si es negativo es credito y positivo es debito.
|
Hola:
Aquí les llamamos Debe y Haber y en mi caso los implementé como campos separados; ahí sí intercepto el evento OnChange de cada uno, si el usuario llena un valor, el valor del otro campo se pone a NULL, puesto que no se admiten dos valores simultaneos en ambos campos. |
La franja horaria es GMT +2. Ahora son las 21:54:02. |
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