Crea un objeto a partir de una definición de clase

Buenos días Sr. Experto. Soy algo novato en foxpro pero espero pueda ayudarme. Le explicare el asunto completo: disenne un form (formclientes) para registro de clientes. Para imprimir los reportes "personalizados" (poder escoger entre los clientes, cuales imprimir) disene un form más pequeño (siempre en la ficha de forms del Proyecto) con lo necesario. Cuando quiero imprimir un reporte, doy click a un botón (en formclientes) y usando DO FORM "Imprimir" se genera el form pequeño y listo! Funciona bien! Un Programador me aconsejo crear una clase de form para el formulario pequeño de impresión, con los mismos objetos y que después lo "llamara" o "generara" usando CREATEOBJECT () desde el formulario principal (formclientes), con esto, según dijo, iba a poder utilizar la clase para otros formularios futuros (pedidos, proveedores, factura) y así no estar haciendo en la ficha forms del proyecto, un montón de pequeños forms para cada formulario "principal". Yo, para probar lo que dijo, disene la clase basado en form, en la ficcha clases del proyecto: le puse los objetos al form (2 text y 1 botón), adecue los códigos para "ranguear" o seleccionar los clientes ha imprimir... En fin, lo necesario. Luego, en el click del botón de imprimir del "formclientes" coloque lo siguiente:
Local nimprimir
SET CLASSLIB TO imprimirclass ADDITIVE
nimprimir = CREATEOBJECT("imprimir")
nimprimir.SHOW()
Al ejecutar, doy click en el botón imprimir y se genera el form de impresión pero por menos de un segundo... Solo aparece y desaparece rapido! Viendo los resultados, le consulto: ¿Cómo puedo crear una clase form y generarla de esa manera par aasi evitar estar creando muchos forms pequeños para cada aplicación? En un ejemplo encontré que en la ficha de forms, "solo hay uno": un formulario para pedidos. EN la ficha clase, se encuentra definido un form para filtro (bastante parecido al que genera el asistent), un form para impresion y un form para busqueda. Al ejecutar el form principal de pedidos y seleccionar alguna de las opciones (imprimir, filtrar o buscar), se generan respectivamente los forms pequeños y revisando códigos encontré que usan CREATEOBJECT (). Veo que es posible. ¿Cómo hago para generar mi form de impresión de esa manera? Ojala pueda ayudarme! Gracias.
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 129px; width: 1px; height: 1px; overflow: hidden;">SET CLASSLIB TO mysearchclass ADDITIVE
njulio = CREATEOBJECT("mireporte")
njulio.SHOW()</div>
1

1 Respuesta

38.925 pts. Por el momento no estoy disponible
Antes que nada perdón por la demora en responder. Todo el fin de semana estuve fuera de la ciudad.
Con respecto a tu pregunta estás muy bien orientado.
Si vas a necesitar ese form desde varios puntos de tu sistema yo evitaría escribir todo el código en el evento click de tu botón de "formclientes", y en lugar de ello crearía un programa (en la pestaña Código del Administrador de Proyectos) llamado functions o procedures y definiría allí el código como un procedimiento o una función:
* functions.prg *
procedure callprint
     parameters nParameters
     SET CLASSLIB TO imprimirclass ADDITIVE
     Local nimprimir
     nimprimir = CREATEOBJECT("imprimir")
     nimprimir.SHOW()
     Release nimprimir
     Release classlib imprimirclass
Endproc
Luego, en el botón imprimir de tu formclientes y desde cualquier otro lugar que necesites llamar al procedimiento el código sería el siguiente:
do callprint in functions with nParameters
De esta forma sólo escribes una vez tu código de creación de nuevo form. También puedes utilizar la función show() que es bastante parecida.
Upsss! Lo ultimo de la consulta fue un error al copiar el código en esta ventana! Mil disculpas! La consulta termina en "Gracias"!
Buenos días Sr. Experto Unysoft. La orientación que me ha dado ha sido muy útil! La pondré en practica! Agradezco mucho su tiempo. Suerte y buen día! Woww... este foro si que funciona!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas