Selección de elementos de un grid
Estoy desarrollando un sistema en Visual FoxPro 7.0, ya tengo la base de datos (en foxpro) y las clases creadas (formularios, pageframes, botones, grids, etc), ahora estoy integrando en mi primer formulario las clases necesarias y ya tengo la interfaz casi completa.
En mi grid (que ya esta vinculado a una tabla y muestra los datos en tiempo de ejecución) quiero que quede de solo lectura, es decir tengo:
AllowAddNew: .F.
ReadOnly: .T.
Pero que me permita que al dar un click (seleccionar) sobre cualquier parte de un elemento (row) me seleccione toda la fila, para eso tengo las propiedades:
Highlight: .T.
HighlightRow: .T.
Y que al dar doble click sobre una fila (cualquier elemento del row) me abra un formulario que realice una consulta con el valor de la primera columna de la fila seleccionada del grid, es decir, que al seleccionar con doble click una fila me abra un formulario (que ya lo tengo) con los valores "detallados". He estado investigando sobre esto y he encontrado la siguiente solución:
Que dentro del código de cada subelemento del grid (grdDatos. ColCodigo.text1...) en su método dblClick llame al formulario (Do FORM frmDatos).
Lo que no se es como poner la condición where en la consulta haciendo referencia al valor que contiene la columna 1 de la fila seleccionada que contiene mi ID.
Otra situación es que a diferencia de los métodos que he encontrado, no quiero hacer la codificación de elemento por elemento (que me toque programar cada text del gird) ya que es un grid dinámico que va a estar en constante modificación y si se crea un nuevo elemento quiero que automáticamente quede configurado para que tenga la funcionalidad deseada, es decir, sin importar que elemento sea, quiero que haga lo mismo.
De hecho la aplicación va a quedar sin registros, ya que se tiene contemplada una migración de datos y por eso ahora solo me interesa que quede listo para que al ingresar los registros a la tabla, todos sean capaces de llamar al frmDatos con sus datos detallados respectivamente.
Funcionalidad:
El grid que te comento tiene los datos de origen en una tabla de la BD, voy a insertar datos desde el browse o a importarlos de excel o de otra manera (ya veré cual es más eficiente dependiendo del numero de datos). El usuario final tendrá la facultad de insertar registros (por medio de SQL desde un botón). Como cada registro tiene un identificador único (primera columna) quiero que se asigne automáticamente al insertar un nuevo dato. Pero en el grid no se muestran todos los campos (atributos de la tabla), unicamente los principales, y si el usuairo desea ver detalladamente la informacion del registro tendrá que dar doble click para que se abra el formulario de consulta (que es un formulario con un text por cada campo de la tabla y en lugar de asignarle datos, los va a leer de la BD; por ejemplo si tengo el grid x, muestra 6 atrbutos, pero se alimenta de una tabla de la BD de 8 campos, solo muestro los mas relevantes, pero si el usuario desea ver los demas campos tiene que abrir el registro (me gustaria que fuera con DBlClick para facilitar la interaccion con el sistema), para que se muestre un formulario (frmDatos) que contiene 8 labels y 8 text deshabilitados (cada uno muestra la informacion de un campo de la tabla, quiero que lo haga por medio de una consulta SQL: "select * from bd!tabla where tabla.id = valor_primera_columna_grid_del_elemento_Seleccinado)".
Ya si el usuario desea modificar el elemento mostrado en frmDatos, tendrá que presionar un commandbutton ubicado en frmDatos, el cual solo habilita los text (excepto el id) y permite al usuario escribir en los campos que contienen la información del registro abierto y posteriormente dar click en un botón "guardar" que realiza un update en la BD con los nuevos datos del frmDatos.
Te agradezco muchísimo tu atención y espero me puedan ayudar, dejo mi correo personal para cualquier situación [email protected]
PD. Aunque tengo experiencia programando, soy algo nuevo en Visual FoxPRO, por lo cual te ruego me ayudes casi con "peras y manzanas" (con conceptos generales de programación, es decir, que no sean tan avanzados ni exclusivos de foxpro)
En mi grid (que ya esta vinculado a una tabla y muestra los datos en tiempo de ejecución) quiero que quede de solo lectura, es decir tengo:
AllowAddNew: .F.
ReadOnly: .T.
Pero que me permita que al dar un click (seleccionar) sobre cualquier parte de un elemento (row) me seleccione toda la fila, para eso tengo las propiedades:
Highlight: .T.
HighlightRow: .T.
Y que al dar doble click sobre una fila (cualquier elemento del row) me abra un formulario que realice una consulta con el valor de la primera columna de la fila seleccionada del grid, es decir, que al seleccionar con doble click una fila me abra un formulario (que ya lo tengo) con los valores "detallados". He estado investigando sobre esto y he encontrado la siguiente solución:
Que dentro del código de cada subelemento del grid (grdDatos. ColCodigo.text1...) en su método dblClick llame al formulario (Do FORM frmDatos).
Lo que no se es como poner la condición where en la consulta haciendo referencia al valor que contiene la columna 1 de la fila seleccionada que contiene mi ID.
Otra situación es que a diferencia de los métodos que he encontrado, no quiero hacer la codificación de elemento por elemento (que me toque programar cada text del gird) ya que es un grid dinámico que va a estar en constante modificación y si se crea un nuevo elemento quiero que automáticamente quede configurado para que tenga la funcionalidad deseada, es decir, sin importar que elemento sea, quiero que haga lo mismo.
De hecho la aplicación va a quedar sin registros, ya que se tiene contemplada una migración de datos y por eso ahora solo me interesa que quede listo para que al ingresar los registros a la tabla, todos sean capaces de llamar al frmDatos con sus datos detallados respectivamente.
Funcionalidad:
El grid que te comento tiene los datos de origen en una tabla de la BD, voy a insertar datos desde el browse o a importarlos de excel o de otra manera (ya veré cual es más eficiente dependiendo del numero de datos). El usuario final tendrá la facultad de insertar registros (por medio de SQL desde un botón). Como cada registro tiene un identificador único (primera columna) quiero que se asigne automáticamente al insertar un nuevo dato. Pero en el grid no se muestran todos los campos (atributos de la tabla), unicamente los principales, y si el usuairo desea ver detalladamente la informacion del registro tendrá que dar doble click para que se abra el formulario de consulta (que es un formulario con un text por cada campo de la tabla y en lugar de asignarle datos, los va a leer de la BD; por ejemplo si tengo el grid x, muestra 6 atrbutos, pero se alimenta de una tabla de la BD de 8 campos, solo muestro los mas relevantes, pero si el usuario desea ver los demas campos tiene que abrir el registro (me gustaria que fuera con DBlClick para facilitar la interaccion con el sistema), para que se muestre un formulario (frmDatos) que contiene 8 labels y 8 text deshabilitados (cada uno muestra la informacion de un campo de la tabla, quiero que lo haga por medio de una consulta SQL: "select * from bd!tabla where tabla.id = valor_primera_columna_grid_del_elemento_Seleccinado)".
Ya si el usuario desea modificar el elemento mostrado en frmDatos, tendrá que presionar un commandbutton ubicado en frmDatos, el cual solo habilita los text (excepto el id) y permite al usuario escribir en los campos que contienen la información del registro abierto y posteriormente dar click en un botón "guardar" que realiza un update en la BD con los nuevos datos del frmDatos.
Te agradezco muchísimo tu atención y espero me puedan ayudar, dejo mi correo personal para cualquier situación [email protected]
PD. Aunque tengo experiencia programando, soy algo nuevo en Visual FoxPRO, por lo cual te ruego me ayudes casi con "peras y manzanas" (con conceptos generales de programación, es decir, que no sean tan avanzados ni exclusivos de foxpro)
1 Respuesta
Respuesta de ikz0f7
1