Código para la clase Botón Editar VFP

Dejame decirte que las orientacioens que me has dado en la creación de la clase del botón nuevo me ha dejado muy satisfecho! Mi conocimiento respecto a la creación de clases se ha enriquecido muchísimo con tus orientaciones! Ahora permíteme consultarte sobre el código para la clase del botón editar! Saludos! :D :D :D

1 Respuesta

Respuesta
1
Me alegra mucho que vayas progresando. Te cuento que hace unos años todo esto me costó un perú !
Puedes creer que hace dos horas mínimo que te envié la respuesta y parece que no se envió, recién me doy cuenta, y ahí va de nuevo.
Ahora vamos a tratar de avanzar más rápido, sigue las siguientes instrucciones:
1) Desde el Administrador de Proyectos selecciona la pestaña Clases, luego selecciona tu clase commandgroup y dale click a modificar. Selecciona el botón Editar y pega este código en el evento click: (te lo paso en minúsculas porque sino no sale la respuesta)
if (thisform.validrecord())=2
    if (thisform.validfile())=1
        * variables locales *
        local lc_tablename, lc_buffer, lc_rectoblock
        * verifica si el registro esta en buffer *
        lc_tablename=alias()
        lc_buffer=iif(recno(alias())<0, "s", "n")
        lc_rectoblock=alltrim(str(recno(alias())))
        if lc_buffer="s"    && registro almacenado en buffer
            do form alltrim(p_form_name)
            else
            * intenta bloquear el registro activo *
            if rlock (lc_rectoblock, alias())= .t.
                do form alltrim(p_form_name)
                unlock in (lc_tablename)
                else
                #include ebm.h
                =messagebox (_unblock, _mbxfrmt, _mbxtit)
            endif
        endif
        * libera variables *
        release lc_tablename, lc_buffer, lc_rectoblock
    endif
endif
2) Ahora vamos a editar tu clase Form, una vez que la abras selecciona el menú Clase (arriba) y dale clck a Nuevo Método: En nombre debes poner validrecord, visibilidad público, Click en agregar y luego en cerrar. Ahora dale doble click a tu clase miform y selecciona el procedimiento validrecord, copia y pega el siguiente código:
*---------------------------------------------------------------*
*  Llamado desde la clase _Comdgroup
*
*  Verifica si hay algún registro selecionado
*
*  DEVUELVE VALORES NUMERICOS:
*    0 -- No hay ninguna tabla Seleccionada
*    1 -- No hay ningún registro seleccionado
*    2 -- Si hay un registro seleccionado
*---------------------------------------------------------------*
#include ebm.h
* define variables
local v_result
* verifica los datos
if empty(alias())
    v_result=0
    =messagebox (_notablesel, _mbxfrmt, _mbxtit)
    else
    if eof()=.t.
        v_result=1
        =messagebox (_norecsel, _mbxfrmt, _mbxtit)
        else
        v_result=2
    endif
endif
return v_result
3) Ahora, desde el Administrador de Proyectos vamos a la pestaña Otros, Edita tu archivo de texto. H y agrégale las siguientes líneas:
#DEFINE _UNBLOCK        "El registro está siendo utilizado por otro usuario del sistema." + CHR(13) + "No podrá realizar modificaciones hasta que el registro sea liberado."
#DEFINE _NOTABLESEL        "No hay ninguna tabla seleccionada."
#DEFINE _NORECSEL         "No hay ningún Registro Seleccionado."
4) Vuelve a generar el proyecto
5) Ejecuta el programa entorno
6) Ejecuta tu Formulario de prueba, (con el que probaste hoy) y dale clic al botón editar.
Si todo está correcto deberías recibir el mismo mensaje que con el botón nuevo.
Me avisas cualquier duda.
Si todo sale bien cierra la pregunta y vamos con el siguiente botón.
Ya falta poco para terminar esta parte !
Te paso el código para el resto de los botones
1) Desde el Administrador de Proyectos selecciona la pestaña Clases, luego selecciona y abre tu clase commandgroup y dale doble click a tu botón Eliminar y pega este código en el evento click:
if (thisform.validrecord())=2
    if (thisform.validfile())=1
        * variables locales *
        local lc_tablename, lc_buffer, lc_rectoblock
        * verifica si el registro esta en buffer *
        lc_tablename=alias()
        lc_buffer=iif(recno(alias())<0, "s", "n")
        lc_rectoblock=alltrim(str(recno(alias())))
        if lc_buffer="s"    && registro almacenado en buffer
            do form alltrim(p_form_name)
            else
            * intenta bloquear el registro activo *
            if rlock (lc_rectoblock, alias())= .t.
                do form alltrim(p_form_name)
                unlock in (lc_tablename)
                else
                #include ebm.h
                =messagebox (_unblock, _mbxfrmt, _mbxtit)
            endif
        endif
        * libera variables *
        release lc_tablename, lc_buffer, lc_rectoblock
    endif
endif
2) Código para el evento click del Botón Buscar de la clase Commandgroup:
if (thisform.validrecord())=2
    if (thisform.validfile())=1
        do form alltrim(p_form_name)
    endif
endif
3) Código para el evento click del Botón Filtrar de la Clase Commandgroup:
if (thisform.validfile())=1
    do form alltrim(p_form_name)
endif
4) Código para el evento clic del Botón Imprimir de la Clase Commandgroup:
if (thisform.validrecord())=2
    if (thisform.validfile())=1
        report form alltrim(p_form_name) noconsole preview in screen to printer prompt
    endif
endif
5) Código para el último Boton de la Clase Commandgroup:
if (thisform.validrecord())=2
    if (thisform.validfile())=1
        do form alltrim(p_form_name)
    Endif
Endif
6) Vuelve a generar el proyecto.
Si todo está correcto deberías recibir el mismo mensaje que con el botón nuevo para cada uno de los otros botones.
Me avisas cualquier duda.
Cuando finalices cierra la pregunta y vamos con la siguiente:
"Crear un formulario Maestro de ABM"
De a poco vas a ir comprendiendo que es mejor programar genéricamente que específicamente. Además el mantenimiento de tu código será mucho más simple.
Hola Carlos! Disculpa la demora en contestar... ayer tuve clases hasta muy tarde en la noche y no pude conectarme! He realizado todo a como me has orientado y esta vez, no tuve inconveniente alguno! Realice los cambios en los botones restantes y al ejecutar, me envío los mensajes correctos! Cierro esta consulta y paso a la siguiente! He recibido con mucha alegría todas tus orientaciones! Saludos! XD

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas