Sei sulla pagina 1di 31

ABM Genrico en VFP 9.

Cmo crear un ABM Genrico en Visual FoxPro


Introduccin
En este documento voy a explicar una forma posible de desarrollar un ABM genrico en Visual FoxPro que sirva para cualquier tipo de tabla. El objetivo de este desarrollo, es de que al momento de programar, desarrollar un ABM nos sea un trabajo fcil y alivianado ya que ABM seguramente vamos a necesitar desarrollar en cualquier sistema que el cliente nos solicite. La idea es que si perdemos un poco de tiempo en desarrollar el primer ABM, luego ese tiempo se recupera con el desarrollo del resto de los ABMs del sistema y en futuros proyectos, por ese motivo, es conveniente desarrollar este tipo de utilidades en una librera para que luego lo pueda incluir en otros proyectos.

Diseo del ABM


Al momento de comenzar a desarrollar un ABM genrico, tenemos que tener en primer lugar bien definido de cmo va a ser el diseo de pantalla de nuestro ABM. En este caso, el diseo que hice fue el siguiente:

Solapa Listados

Autor: Leonardo D. Zulli

Pag. 1

ABM Genrico en VFP 9.0


La solapa de datos permite buscar un registro. Para localizar un registro se debe tipear sobre un campo de la grilla, donde la misma proporciona una bsqueda progresiva.

Solapa Datos

En la solapa datos hay un contenedor como se puede observar de color Celeste donde se debern insertar los controles activex a utilizar.

Composicin del formulario


Nombre del formulario: Controles: TbrABM: Clase genrica con la barra de herramientas del ABM. Nombre=Herramientas formABM

PageFrame: Nombre = Pgf, TabPage[1] = Page1, TabPage[2] = Page2 Grid: Nombre = grdDatos (Corresponde a la grilla de la solapa listados) Container: Nombre = cnt_Fields (Corresponde al contenedor de los controles activex) Para lograr que el ABM funcione, he creado diversos controles activex que acompaan a la funcionalidad de este ABM como por ejemplo, TextBoxes, ComboBoxes, ToolBar, Labels, grids, etc, ya que para ciertas funcionalidades, necesito que tengan ciertas funcionalidades propias.

Autor: Leonardo D. Zulli

Pag. 2

ABM Genrico en VFP 9.0


Desarrollo del ABM
Para comenzar a desarrollar el ABM, lo primero que hago en este caso es crear las propiedades y mtodos que voy a necesitar que el formulario tenga. He creado los siguientes componentes: Propiedades AutoGenCodigo: Valor booleano que indica si el campo cdigo de la tabla se debe generar automticamente o bien se debe dejar que el usuario lo cargue manualmente. cNombreTabla: Nombre de la tabla en la que se realizarn las operaciones de ABM. currentID: Propiedad privada donde se guardar el valor del campo Identity actualmente generado o seleccionado. ListCtrlSource: Establece los nombres de los campos que se van a enlazar a cada columna del control Grid. Los campos debe ir separado por coma (,). ListWidthCols: Estable el ancho de cada columna del grid. Los valores deben ir separado por coma (,). lNuevo: Esta propiedad es de uso interno del ABM, que permite detectar si el usuario est agregando un nuevo registro o modificando uno existente. lTransOk: Esta propiedad de valor booleano es de uso interno del formulario, que permite verificar si la transaccin de INSERT, UPDATE o DELETE ha sucedido satisfactoriamente o no. MsgError: Propiedad de uso interno que sirve para mostrar mensajes de errores. nCodigo: Propiedad de uso interno donde se guarda el nuevo cdigo generado al hacer clic en Nuevo. Este valor funciona si AutoGenCodigo est activado. nUltPosGrid: Guarda la ltima posicin de la fila seleccionada del control Grid. Esto sirve para cuando se refrescan los datos del grid, el usuario no pierda la ltima ubicacin. Esta propiedad es de uso interno de la clase. PK_FieldName: Nombre del campo clave de la tabla. PK_Identity: Indica si el campo PK_FieldName debe ser generado automticamente. Con este ABM no es necesario definir un campo como identity, sino que ya se incorpora esta funcionalidad en el mismo ABM. Titulos_Cabecera: Permite establecer los ttulos de las cabeceras de cada columna del control Grid. Estos ttulos son lo que ver el usuario en tiempo de ejecucin y cada ttulo debe ir separado por una coma (,).

Autor: Leonardo D. Zulli

Pag. 3

ABM Genrico en VFP 9.0


Mtodos Blanquear: Permite poner en blanco los controles activex insertados en el contenedor cnt_Fields. El cdigo que se cre en este mtodo es el siguiente:

Autor: Leonardo D. Zulli

Pag. 4

ABM Genrico en VFP 9.0


CambiarEstado: Permite cambiar el estado segn la situacin del formulario, por ejemplo, si el usuario hace clic en Nuevo, entonces, se debern deshabilitar los controles de la solapa Listados y habilitar lo de la solapa Datos. El cdigo que se gener es el que se muestra a continuacin:

Si observamos este cdigo, al final se cambia el estado del control Herramientas, ya que los botones nuevo, editar, modificar y cerrar no tienen el mismo estado que los botones grabar y cancelar. ConfigurarGrilla: Este mtodo se encarga de configurar el control grid para el muestreo de la informacin. El cdigo que se gener es el siguiente:

Como se puede observar en el cdigo, la grilla tiene funcionalidad propia que incorpor al desarrollar el control activex. Tiene sus propiedades y mtodos personalizados. Esta grilla por Autor: Leonardo D. Zulli Pag. 5

ABM Genrico en VFP 9.0


ejemplo, ya incorpora la bsqueda progresiva, con lo que es un tema del que no nos tenemos que preocupar para desarrollar este ABM. CrearCursor: Permite este mtodo est preparado para insertar cdigo. Aqu se debe crealizar la creacin del cursor que se enlazar con la grilla. En este caso, utilic como nombre del cursor cur_Tempo, con lo que al momento de crear el cursos del muestro de la informacin lo tengo que llamar tempo. El cdigo que gener es el siguiente:

Este cdigo al momento de crear el ABM de una tabla, se debe insertar al principio un DODEFAULT(), ya que es importante que estas lneas se ejecuten en el formulario heredado. Verifico si cur_Tempo est siendo usado, si est en uso, entonces, limpio el RecordSource del grid para refrescar los datos y cierro el cursor actualmente en uso. LlenarCbos: Este mtodo est desarrollado con el fin de llenar comboboxes en caso de que los mismos tengan que levantar datos de alguna otra tabla maestra y completar el campo Foreign Key. El cdigo generado es el siguiente:

Recibe como parmetro el nombre del control combo a llenar, el valor de la propiedad RowSource y el nombre del Alias con el que se debe llenar el combobox. En el formulario heredado se debe realizar el llamado tantas veces como como combobox haya insertado en cnt_Fields.

Autor: Leonardo D. Zulli

Pag. 6

ABM Genrico en VFP 9.0


RecuperarDatos: Este mtodo proporciona un cdigo genrico que permite recuperar los datos del cursor cur_Tempo y mostrar la informacin en los controles activex insertado en cnt_Fields. El cdigo generado es el siguiente:

En este cdigo tengo que validar el tipo de control del que estamos hablando, para ello, cada control y poder enlazar cada campo en el control que corresponde. Para esto, cada control debe tener la propiedad personalizada cFieldName.

Autor: Leonardo D. Zulli

Pag. 7

ABM Genrico en VFP 9.0


RefrescarGrilla: Este mtodo proporciona un cdigo genrico que permite refrescar el contenido del control grid grdDatos.

Set_Insert_Cmd: Este mtodo se encuentra en blanco, es decir, sin cdigo, ya que el cdigo se lo debe generar el desarrollador en el formulario heredado. Aqu el desarrollador debe crear el comando INSERT INTO que permitir el alta de un nuevo registro en la tabla. Lo mismo ocurre con los mtodos Set_Update_Cmd para el comando UPDATE y Set_Delete_Cmd para el comando DELETE FROM xxx.

Autor: Leonardo D. Zulli

Pag. 8

ABM Genrico en VFP 9.0


ValidarDatos: Proporciona un cdigo genrico que permite validar que el usuario haya ingresado los datos que son de ingreso obligatorio en los controles insertado en cnt_Fields del Page2.

Como se puede observar, los controles activex deben tener una propiedad personalizada que indica si el campo es Requerido y un mtodo personalizado que permite el blanqueado del control EstaVacio(). Ahora en la barra de herramientas, debemos desarrollar los siguientes mtodos: Nuevo: Proporciona un cdigo genrico para cuando el usuario hace clic en un evento Nuevo.

Este cdigo verifica si el formulario debe generar el cdigo automticamente, en caso de que sea as, entonces, utiliza la tabla Numerad.

Autor: Leonardo D. Zulli

Pag. 9

ABM Genrico en VFP 9.0


Modificar: Este mtodo se ejecuta cuando el usuario hace clic en el botn de comando Modificar. El cdigo que proporciona es el siguiente:

Al entrar en el modo de edicin de un registro existente, el formulario sita al usuario en la solapa Datos, refresca los controles activex de cnt_Fields y cambia es estado poniendo al form en modod de edicin. Grabar: Este mtodo ocurre cuando el usuario procede a grabar los cambios, ya sea para dar de alta un registro nuevo o bien para modificar uno existente. El grabar ya proporciona el manejo de transacciones, con lo cual, al desarrollar un futuro ABM no hay que preocuparse por este tema. Tambin realiza la validacin de los datos. El cdigo de grabacin genrico que proporciona este mtodo es el siguiente:

Autor: Leonardo D. Zulli

Pag. 10

ABM Genrico en VFP 9.0

Si observamos este cdigo, el ABM hace el llamado a Set_Insert_Cmd y Set_Update_Cmd segn la accin que est realizando el usuario en el ABM. Mediante la propiedad lTransOk, el ABM se da cuenta si la transaccin fue satisfactoria para posteriormente realizar un COMMIT o si se ha producido un fallo para realizar un ROLLBACK. En ambo caso el ABM informa al usuario mediante un MESSAGEBOX el resultado de su transaccin. En este mtodo se establece el tipo de bloqueo que debe tener una la tabla que se va a transaccionar, este ABM realiza un bloqueo por fila que sera un Buffering = 3. Este modo de bloqueo se utiliza ya que el ABM va a procesar de a una fila. Tambin se actualiza la tabla Numerad con el prximo cdigo a generar, esta tabla tambin tiene como Buffering = 3.

Autor: Leonardo D. Zulli

Pag. 11

ABM Genrico en VFP 9.0


Eliminar: Este mtodo se ejecuta cuando el usuario hace clic en el botn de comando Eliminar. El cdigo genrico que proporciona es el siguiente:

En este cdigo tambin proporciona el manejo de transacciones y establece el buffering a 3, bloqueo por fila. Hace el llamado a Set_DELETE_Cmd() para ejecutar la instruccin DELETE creada por el desarrollador en el formulario heredado. Cancelar: Proporciona un cdigo genrico que permite cancelar una operacin de Alta o Modificacin de un registro. El cdigo es el siguiente:

Autor: Leonardo D. Zulli

Pag. 12

ABM Genrico en VFP 9.0


El evento AfterRowColChange de control grdDatos, contiene el siguiente cdigo:

Cada vez que se produce el cambio de fila, recupero los datos a los controles activex que estn insertado en el cnt_Fields. El evento Load del formulario proporciona el siguiente cdigo:

Este cdigo se encarga de la apertura de las tablas que se van a necesitar en el ABM. En caso de necesitar abrir ms tablas, en el formulario heredado hay que comenzar con un DODEFAULT() para que ejecute este cdigo como herencia. En el evento Init se proporciona el siguiente cdigo:

Mediante el RefrescarGrilla(), se llena el grdDatos para mostrar la informacin al usuario, el RecuperarDatos, permite levantar los datos del primer registro en los controles activex en cnt_Fields y establece el formulario al estado inicial del ABM. En el evento Unload se realiza el cierre de las tablas que se abrieron en el Load. El cdigo que proporciona es el siguiente:

Autor: Leonardo D. Zulli

Pag. 13

ABM Genrico en VFP 9.0

De esta forma tenemos un ABM Genrico finalizado. A continuacin voy a explicar como desarrollar algunos de los controles activex como ejemplo de cmo desarrollar estos controles para darle funcionalidad al ABM genrico.

Desarrollo de controles Activex


En este apartado voy a presentar un ejemplo del desarrollo de un control activex, para que se interprete la lgica de cmo generamos los mismos para acompaar a la funcionalidad del ABM genrico.

GridControl (Control Grid Personalizado)


Este control es usado en la solapa Listado del ABM y tiene el siguiente formato:

En este control se contempl la funcionalidad para diez columnas. Propiedades: Alias_Name: Contiene el nombre del alias a mostrar en el grid List_ControlSource: Contiene la lista de campos a enlazar al cada columna Lista_Ancho_Cols: Contiene los valores de ancho de columnas Ordenado: Valor booleano de uso interno que indica si est ordenado o no. Permitir_Busqueda: Indica si la grilla debe incorporar la funcionalidad de bsqueda progresiva. Autor: Leonardo D. Zulli Pag. 14

ABM Genrico en VFP 9.0


Permitir_Ordenamiento: Indica si la grilla debe incorporar la funcionalidad de ordenamiento al hacer clic en la cabecera de la columna. Pos_Actual_Texto: Indica la posicin actual del texto que est escribiendo el usuario. Uso interno de la clase. Texto_Busqueda: Contiene el texto que el usuario escribe mientras se est realizando la bsqueda progresiva. Este se muestra mediante el comando WAIT WINDOW NOWAIT Titulos_Cabecera: Contiene los ttulos de cada columna. Ultimo_Valor: Contiene el ltimo valor buscado para recuperar la posicin.

Cdigo genrico del Evento INIT

Se establece el RecordSource con el nombre de Alias que se debe setear en la propiedad Alias_Name. Luego mtodo generar grid se encarga de realizar el muestreo de los datos. Cdigo del mtodo Generar_Grid()

En este cdigo se configuran las propiedades de cada columna para darle formato al Grid y enlazar los datos al mismo. Para esto deben existir las propiedades: Titulos_Cabecera: Ttulo de las columnas que va a ver el usuario separado por coma (,).

Autor: Leonardo D. Zulli

Pag. 15

ABM Genrico en VFP 9.0


List_ControlSource: Lista de campos por cada columna separado por coma (,). Lista_Ancho_Cols: Lista con los valores de ancho de columnas separado por (,).

Autor: Leonardo D. Zulli

Pag. 16

ABM Genrico en VFP 9.0


Cdigo del mtodo localizar_registros Este mtodo es el que hace posible que se pueda llevar a cabo la bsqueda progresiva en un control grilla.

Autor: Leonardo D. Zulli

Pag. 17

ABM Genrico en VFP 9.0

Autor: Leonardo D. Zulli

Pag. 18

ABM Genrico en VFP 9.0

Esta rutina recibe como parmetro el nombre del campo de la columna en la que se va a realizar la bsqueda, el nombre del ndice por el que se indexa y el cdigo de tecla que el usuario ha presionado. Cuando se indexa un cursor que va a estar vinculado a la grilla, es importante que el nombre del ndice sea exactamente igual al nombre del campo que se est indexando, para que este cdigo genrico pueda reconocer el mismo y al momento de buscar pueda realizar el ordenamiento de esa columna.

Autor: Leonardo D. Zulli

Pag. 19

ABM Genrico en VFP 9.0


Cdigo del mtodo Ordenar_Datos Permite realizar el ordenamiento por una determinada columna. El cdigo que proporciona este mtodo es el siguiente:

Cada celda de la grilla, por naturaleza es un control TextBox, con lo que disponemos de los eventos de cualquier control textbox normal. En este caso se va a codificar el evento KeyPress. Esto se debe hacer en el textbox de cada columna:

Este cdigo realiza el llamado a localizar_registros para realizar la bsqueda progresiva a medida que el usuario va tipeando sobre el contenido de una columna. Autor: Leonardo D. Zulli Pag. 20

ABM Genrico en VFP 9.0


Si el usuario hace presiona la tecla Enter se dispara el mtodo press_enter() que se puede personalizar en el formulario que en que se est utilizando para generar alguna funcionalidad en particular, por ejemplo, editar un registro podra ser una funcionalidad posible en un ABM. Cdigo del evento Click del Header En el evento clic del header de cada columna se debe realizar el siguiente cdigo:

Esto hace que cuando el usuario haga clic sobre el encabezado de alguna columna, los datos de ordene por dicha columna.

Control clsTextBox
Este control es un TextBox especial que acompaa a la funcionalidad del ABM Genrico que se ha desarrollado anteriormente.

Propiedades
AutoCompleta: Indica si el contenido se debe completar con ceros a la izquierda. cFieldName: Nombre del campo con el que se va a enlazar en un ABM. IsCharacter: Valor booleano que indica si el control contiene un valor de tipo texto. IsDateTime: Valor booleano que indica si el textbox contiene un valor fecha IsInteger: Valor booleano que indica si se trata de un textbox numrico que acepta solo enteros. IsNumeric: Valor booleano que indica si se trata de un textbox numrico que acepta valores decimales. MsgError: Mensaje de error a mostrar en caso de que el campo sea requerido. Requerido: Valor booleano que indica si el dato es de ingreso obligatorio.

Cdigo del evento GotFocus Al salir del recibir el foco el cuadro de texto cambia su color de fondo y al salir vuelve a su color original. Este evento se produce al recibir del foco y el cdigo es el siguiente:

Autor: Leonardo D. Zulli

Pag. 21

ABM Genrico en VFP 9.0


this.BackColor = RGB(226,230,254)

Cdigo del Evento INIT Al inicializarse el control, se debe inicializar su contenido para definir el tipo de dato que va a contener. El cdigo es el siguiente:
this.blanquear()

Cdigo del evento LostFocus Al perder el foco debe volver al color original del control. Tambin hay que verificar si se debe autocompletar con ceros a la izquierda. El cdigo es el siguiente:

El mtodo calcular se reserva por si al salir del foco se debe insertar algn tipo de frmula, por ejemplo, en el ingreso de una factura puede ser muy usado. Cdigo del mtodo Blanquear Este mtodo permite inicializar el control segn el tipo de dato que corresponda. El cdigo es el siguiente:

Autor: Leonardo D. Zulli

Pag. 22

ABM Genrico en VFP 9.0


Cdigo del mtodo EstaVacio Este mtodo permite verificar si el usuario ha ingresado algn dato en base al tipo de dato que contiene el textbox. El cdigo que proporciona es el siguiente:

Y as se puede continuar desarrollando controles activex para que el ABM Genrico pueda funcionar con distintas formas de ingresar datos. A continuacin se muestra como se puede utilizar este ABM Genrico.

Autor: Leonardo D. Zulli

Pag. 23

ABM Genrico en VFP 9.0


Ejemplo del desarrollo de un ABM utilizando el ABM Genrico desarrollado.
Diseo del ABM
A continuacin se presentar el formato del ABM en tiempo de diseo tal cual se presenta al agregar el formulario: Vista de la pgina Listados

Esta pgina contiene n simplemente un grid llamado grdDatos donde se mostrar todos los datos que tiene la tabla sobre la cual se va a trabajar.

Autor: Leonardo D. Zulli

Pag. 24

ABM Genrico en VFP 9.0


Vista de la pgina Datos

La pgina datos, tiene un contenedor donde se deber insertar los controles activex que se va a utilizar para el ingreso o la edicin de los registros. Tener en cuenta que al momento de insertar los campos en el contenedor, deber hacer clic derecho sobre el mismo e ir a la opcin Edit, ya que los campos tienen que quedar dentro del contenedor para que el formulario reconozca cada control que se inserte.

Propiedades
AutoGenCodigo
Esta propiedad permite indicar al ABM si el cdigo se generar automticamente o el usuario lo ingresar manualmente. Tenga en cuenta que el cdigo no es lo mismo que el campo Id. Hay casos en que los usuarios prefieren generar los cdigos manualmente. Se establece .T. para que se genere automticamente y .F. para que el usuario lo ingrese a mano.

cNombreTabla
Especifica el nombre de la tabla fsica sobre la que se va a trabajar.

ListCtrlSource
Este propiedad establece los nombres de los campos que se vincular con cada columna del Grid. Cada campo debe estar separado mediante una coma (,). Por ejemplo: Id,Codigo,Descripcion,etc.

Autor: Leonardo D. Zulli

Pag. 25

ABM Genrico en VFP 9.0


ListWidthCols
Esta propiedad establece el ancho de cada columna. Cada valor debe estar separado por una coma (,). Por ejemplo: 70,70,200,n Nota: Para campos de tipo numrico el estndar es 70 y para campo de texto, segn la longitud del campo se debe establecer un valor mayor a 100.

nCodigo
Devuelve el prximo cdigo que se debe generar. Para que esta propiedad contenga un valor deber tener AutoGenCodigo en .T. (verdadero). Esta propiedad recibe el valor cuando el usuario hace clic en Nuevo, donde el desarrollador debe asignar en el evento click de cmdNuevo el valor al cuadro de texto que corresponde al campo cdigo.

Pk_FieldName
Se debe establecer el nombre del campo Id. El ABM utiliza esta propiedad para saber a que campo asignar el prximo Id.

Pk_Identity
Mediante esta propiedad se indica al ABM si el campo Id. De la tabla a procesar debe ser calculado automticamente, es decir, si ese campo debe ser identity. Para que esto funcione se debe tener seteado el campo Pk_FieldName.

Titulos_Cabeceras
Esta propiedad permite establecer los ttulos de cada columna que dispone el Grid. Cada ttulo debe estar separado por coma (,), por ejemplo: Cdigo,Razn Social,etc.

Autor: Leonardo D. Zulli

Pag. 26

ABM Genrico en VFP 9.0


Mtodos que se deben desarrollar
Para que el ABM tenga funcionalidad hay ciertos mtodos que se deben desarrollar mediante un cierto criterio. Dentro de los mtodos disponemos de aquellos que pertenecen al formulario propiamente dicho. Luego para la parte de edicin, en la parte superior se encuentra una barra de herramientas llamada Herramientas, donde se debern desarrollar los mtodos que permitirn realizar las operaciones sobre los registros de la tabla. CreateCursor (Mtodo del formulario) En este mtodo se debe generar la sentencia SELECT-SQL que generar el cursor que mostrar la informacin sobre la grilla de la siguiente forma:

Para que el grid pueda tener la funcionalidad de ordenamiento y bsqueda, debe tener en cuenta que hay que indexar el cursor mediante la instruccin INDEX ON.

Autor: Leonardo D. Zulli

Pag. 27

ABM Genrico en VFP 9.0


Set_INSERT_Cmd (Mtodo del formulario) En este mtodo se debe escribir la instruccin INSERT SQL que permitir insertar un nuevo registro en la tabla. Por ejemplo, vea el siguiente cdigo:

Set_UPDATE_Cmd (Mtodo del Formulario) En este mtodo se debe insertar la instruccin UPDATE SQL que permitir modificar los datos de un registro existente. Por ejemplo:

Nuevo (Mtodo del control Herramientas)


En este mtodo se debe insertar el cdigo que permite preparar el formulario para el ingreso de un nuevo registro. El cdigo es el siguiente:

Autor: Leonardo D. Zulli

Pag. 28

ABM Genrico en VFP 9.0


Se debe establecer lNuevo en .T. para indicar al formulario que el usuario est generando un nuevo registro, luego se blanquea los controles de edicin, se cambia el estado de los mismos y se muestra el prximo cdigo en el textbox correspondiente al cdigo.

Modificar (Mtodo del control Herramientas)


En el modificar hay que establecer lNuevo en .F. para indicar al ABM que se trata de una modificacin de un registro existente y recuperar los datos en los controles correspondientes.

Grabar (Mtodo del Control Herramientas)


En este mtodo se debe realizar el cambio de estado de los controles de la siguiente forma:

Cancelar (Mtodo del control Herramientas)


En este mtodo se deben recuperar los datos del ltimo registro posicionado y situarlos en sus controles correspondientes. Tambin hay que cambiar el estado del formulario. El cdigo es el siguiente:

Notas a Tener en cuenta


En cada mtodo se siempre hay que empezar con el DODEFAULT() para que ejecute el cdigo que viene por herencia. En caso de no empezar con esta modalidad, se pierde la funcionalidad del ABM.

Autor: Leonardo D. Zulli

Pag. 29

ABM Genrico en VFP 9.0


Presentacin del Formulario en ejecucin
Este ABM en el sistema se ve de la siguiente forma:

Si el usuario se sita en una columna y comienza a tipear, el sistema proceder a realizar una bsqueda progresiva facilitando la localizacin de un registros en particular.

Autor: Leonardo D. Zulli

Pag. 30

ABM Genrico en VFP 9.0


Diseo de la pgina de Datos
Para el diseo de la pgina de datos, se deber utilizar los controles que se encuentran dentro de la librera Utilidades.vcx. Estos controles estn preparados para vincularse a la funcionalidad del ABM. Por ejemplo, en el caso expuesto en el apartado Presentacin del Formulario en Ejecucin, se utiliz dos etiquetas clsEtiqueta y dos cuadros de texto clsTextBox. Las etiquetas no causa ningn inconveniente ya que solamente presenta el nombre del campo. Los cuadros de texto hay que tener en cuenta de setear las siguientes propiedades: cFieldName: (string) Nombre del campo con el que se vincula al ABM. IsDateTime: .T. Si el campo es del tipo Date IsInteger: .T. Si el campo contiene un valor entero IsNumeric: .T. Si el campo contiene un valor decimal MsgError: Mensaje de error a mostrar durante la validacin Requerido: .T. o .F. donde se indica si el campo es de ingreso obligatorio o no. Estas propiedades se respetan para los controles clsComboBox, clsCheckBox y clsEditBox. Mediante la propiedad cFieldName, el ABM al momento de realizar la recuperacin de los datos, sabe en que control se sita cada campo que tiene el cursor. Esta propiedad sera el reemplazo del ControlSource del control original del Visual FoxPro.

Autor: Leonardo D. Zulli

Pag. 31

Potrebbero piacerti anche