ollado algunos programas sencillos de mantenimiento de
tablas en donde intervienen dos formas, tal y como se muestra en los ejemplos.
app-1-main.vrf El programa funciona bien si corre solo, pero si lo incluyo en un menu en
donde este no se ejecuta primero la compilacion dice que no reconoce las formas, subfiles
y archivos de la segunda forma. Podria alguien ayudarme a resolver este inconveniente.
a mi me pasaba lo mismo, sobre todo si el primer programa del menu el cual llamaba al
segundo y este no utilizaba la opcion de variables globales. Siempre el primer programa
debe de tener las definiciones de los demas como variables globales y alli se termina el
problema. ojala te sirva de algo.
Ademas de definir variables globales en el formulario principal o en una de Code
principal, tambien puedes hacer referencia a los objetos de los otros formularios
indicando el formulario 'padre' en el que se encuentran. p.e.: frm2.IOCod2 = frm1.IOCod1
Esto se puede hacer teniendo en cuenta que; en el caso que el formulario frm1 este
cerrado, se nos volvera a cargar frm1 y tendremos que cerrarlo nosotros. Tenemos la opcion
de dejarlo en modo Hide (en memoria) si no nos interesa que este visible. La dinámica del
VRPG es que los ficheros, variables etc. que se definen en el primer programa del proyecto
permanecen activos en todos los programas del mismo. El programa inicial lo puedes
establecer en la opción herramientas, opciones, projecto del VRPG. Si ya tienes un
mantenimiento de este tipo y quieres crear un menu podrías hacerlo creando un projecto
nuevo que fuera el menú y desde este llamar con un "Exec" a los proyectos que
correspondan a cada opción. Si lo que prefieres es tener un sólo ejecutable tienes que
pasar a definir los ficheros y las variables que tenías en el primer programa del
mantenimiento al código del formulario del menú.
- Tengo una lista con la propiedad Sorted=True en la que guardo importes, pero los
negativos los coloca entre los positivos sin orden concreto. Cuál es el problema?? Y la
solución?? Gracias.
El estandard de microsoft y AVR para el "list box" o "combo box" no
acepta valores numericos negativos, en realidad, estos controles solo aceptan
"strings" (literales) y valores positivos. (Suponiendo que estas usando AVR 2.2)
Para resolver este problema tienes dos alternativas: 1. puedes escribir un tu programa una
funcion que ayude a la lista a organizar los valores negativos. Esto se hace creando otra
lista invisible que ayuda a organizar los valores numericos y luego se pasan a la lista
visible al usuario: DCLFLD X *PACKED LEN(9,2) DCLFLD Y *PACKED LEN (15,2) Y = IO1
//SUPONIENDO QUE LOS NUMEROS SON INPUTS DEL USURARIO. Y = 10000000 + Y //SEIS 0'S POR LOS
SIETE DIGITOS DE LA X X = LIST1.ADDITEM (Y) LIST2.ADDITEM (IO1.TEXT,X) 2. Esperar AVR 3.0.
En el "release" 3.0 de AVR vas a poder crear tus propios controles Active X; de
esta forma, por ejemplo, podras hacer que una lista acomode logicamente valores negativos
de la manera en que tu quieres.
- Me gustaria saber como se habria de hacer para conseguir imprimir el grafico
dinamicamente en el registro de un fichero de impresión, ya que parace ser que el
grafico, en vez de guardarse un puntero hacia el archivo de imagen lo que se guarda es
directamente toda la imagen, merci.
En la pagina de ASNA hay un ejemplo en el que se muestra como cambiar la foto
dinamicamente al momento de imprimir: http://www.asna.com/examples_2.2_new.asp El nombre
del archivo del ejemplo es:"Image Display.VRM" localizado en el folder llamado
"Intermediate examples". Fundamentalmente, solo necesitas ejecutar el comando
LoadPicture. Es decir, suponiendo que el "print image control" esta definido
como "prtimage" en el print file format "fmtpicture".
"\\myimages\picture.bmp" Entonces: LoadPicture
file("\\myimages\picture.bmp") target(fmtPicture!prtimage.picture) write
fmtPicture
- Desearia saber como crear un fichero en formato xls o doc a partir de un fichero de
AS/400.
Una solución es copiar el archivo de AS/400 a un archivo de B.D. Local mediante el
mandato de Visual RPG DGCPYFILE y a continuación exportar todo el fichero a ASCII con el
mandato DGEXPFILE y darle un nombre con extension XLS, de esta manera a continuación con
el mandato EXEC se abrira automaticamente el EXCEL, con el archivo perfectamente
transformado.
- Me gustaría si es posible poner fondos de diferentes colores a botones en un mismo
formualrio.
Si quieres poner distintos colores a los botones de un mismo formulario. Seria mejor
que utilizaras los CommandButton incluidos en Windows, dentro de FM20.dll . Esta DLL
incluye distintos controles utilizados por windows que forman parte de los Microsoft Form
2.0. Cuidado que no todos los controles que hay en esta DLL funcionan para VisualRPG.
- En un formato de Acceler8DB Print File Editor quiero imprimir un campo en distintos
colores en función de su valor, y no sé cómo hacerlo.
Hay un ejemplo muy bueno referente a tu pregunta en la pagina de asna en la direccion:
http://www.asna.com/examples_2.2_new.asp
"Baja" el ejemplo del internet y asi podras ver la forma en que se hace en AVR22
- Trabajando con Visual RPG, al mover la paleta de control de los controles ocx, la he
desplazado a un lugar de la pantalla que no puedo verlas. ¿Hay alguna manera de
recuperarla) Gracias,
La manera de recuperar la 'Control Palette' si tener de inicializar el 'Regedit'. Es la
siguiente: Abrir la carpeta del Regedit: HKEY_CURRENT_USER/Software/ASNA/ ASNA Visual
RPG/Current Version/IDE/Toolbars-Bar3 En esta carpeta se ha de modificar el valor de XPos
a 0. Tambien se puede modificar el valor de YPos a 100 por ejemplo.
- Somos una cadena de productos de alimentacion.
Ahora tenemos una aplicacion en AS/400 de gestion y la queremos traspasar a entorno
Visual, queremos aprovechar el diseño de Base de Datos y los fuentes de los programas, y
mejorar el entorno de la aplicacion con imagenes.
¿Es posible con Visual RPG?
¿Cuanto tiempo me costaria aprender Visual RPG y convertir la aplicacion?
Con Visual RPG, se puede desarrollar una aplicacion en un PC, aprovechando el codigo
RPG, incluso se pueden importar pantallas 5250 y trabajar contra la B.D del AS/400
directamente. Ademas, se puede traspasar la B.D. del AS/400 al PC y con el gestor de B.D.
Acceler8DB que esta incluido en el Suite de Visual RPG se puede trabajar en el PC local o
contra un servidor NT perfectamente.
La conversion de aplicaciones RPG a entorno Visual es factible gracias a que Visual RPG
entiende y trabaja con la misma programacion que el RPG. Ademas la curva de aprendizaje es
de 1 semana.
- Necesitaría saber como poder obtener la lista de los controles del formulario de
VRPG, así como sus propiedades y el contenido de las mismas en tiempo de ejecución. Ya
se que esto no es posible a través de VRPG, pero la opción de generar un OCX con visual
Basic 6.0 no la descarto. ¿Que rutinas o API's debería usar para generarme este
control?.
Muy agradecido.
IOleClientSite* pSite = GetClientSite(); ASSERT(pSite); LPOLECONTAINER pContainer; if
(FAILED(pSite-*GetContainer(&pContainer))) { pSite-*Release(); return; } IEnumUnknown*
pEnum = NULL; // OLECONTF_EMBEDDINGS is used to retrieve OLE Controls. // OLECONTF_OTHERS
is used to retrieve other objects such as // Visual Basic internal controls HRESULT
hResult = pContainer-*EnumObjects(OLECONTF_EMBEDDINGS | OLECONTF_OTHERS, &pEnum); if(
FAILED(hResult) ) return; ....
- Me interesa haber si alguien conoce alguna solución para saber si hay alguna
instrucción para saber si existe un fichero concreto,sin tener que abrirlo, para en caso
contrario crearlo por programa. Gracias
Utilitzando el objeto *app de VisualRPG podemos controlar los errores que se producen
en el transcurso del programa. Este objeto esta incluido por defecto en todos los
proyectos, de manera que no es necesario incluirlo, de hecho, no se puede añadir , ya que
es un objeto que no tiene representación física.
Asi pues, para controlar el aceso a un fichero que no existe podemos hacer :
DGCLRMBR DB('BaseDatos') FILE('Biblioteca\Fichero')
MBR('Miembro') ERR(*IN89)
Select
when *app.DBErrorCode=603
Msgbox 'El fichero no existe'
when *app.DBErrorCode=604
Msgbox 'El miembro no existe'
EndSl
Creo que esto solucionara tu problema.
- Quisiera saber como poder trabajar con miembros de ficheros durante la ejecucion del
programa. Lo equivalente a un OVRDBF. Gracias.
La forma de hacerlo, es definir el fichero controlando la apertura en calculo mediante
UC. Y definir el miembro con una variable, de forma que puedas utilizar el miembro que
quieras y a continuacion realizar el OPEN del fichero, de esta manera se abrira el miembro
que hayas movido a la variable.
Ejemplo en Caviar:
DCLDISKFILE NAME(CLIENTES) TYPE(*INPUT) DSG(*FULL) ORG(*INDEXED) DB(BD) FILE(CLIENTES)
MBR(MBRVARIABLE)