PDA

Ver la Versión Completa : Problemas con form secundario


J.Slann
01-05-2012, 14:09:10
Hola,

Estoy realizando una aplicación en Delphi. Uno de los forms del proyecto incorpora gráficos realizados con GLScene.
Concretamente estoy utilizando botones (TGLButton) sobre una TGLLayout, para cargar los gráficos de dichos botones utilizo una libreria de materiales donde se dice el aspecto de dicho botón.

El aspecto lo adquiere desde un .bmp.

Mi programa funciona correctamente cuando lo ejecuto como form principal de la aplicación. Mi problema viene cuando trato de visualizar el formulario cuando lo creo como formulario secundario. Al hacer un "form2.show;" el programa muestra un aviso parecido a esto: "EAssertionFailed. Could not open archivo.bmp"

¿Porque al crearlo como secundario aparece este error?¿Delphi da diferente trato a un formulario principal que a un secundario?Parece que mi formulario solo pudiera acceder al archivo cuando es el principal, como secundario, se comporta como si no existiera el archivo .bmp.

¿Alguna idea para solucionarlo?

Gracias y un saludo.

dec
01-05-2012, 16:20:51
Hola,

¿Estás utilizando la ruta absoluta del archivo, o, por ejemplo, simplemente su nombre (una ruta relativa que puede causar algún problema aquí)? ¿Compruebas tú mismo que el archivo existe realmente antes de "cargarlo" o lo que sea que hagas con el mismo? Yo probaría, para empezar, por utilizar la ruta absoluta al archivo. Que yo sepa, Delphi no distingue entre formularios para estos menesteres. Pero, al usar rutas relativas, se hace uso también del "directorio de trabajo", y, esto puede causar problemas, porque, dicho directorio puede cambiar, incluso en tu propio código (o de terceros) sin que lo sepas.

J.Slann
01-05-2012, 17:53:37
Muchas gracias dec.

Lo acabo de probar y ya me funciona. Efectivamente estaba utilizando un ruta relativa, ahora al poner la ruta absoluta me funciona perfecto.

Gracias por la respuesta y la rapidez, porque llevaba ya un rato con esto y ando justo de tiempo.

Un saludo.

dec
01-05-2012, 20:26:25
Hola,

De nada, hombre. Hay que estar atentos con las rutas "relativas", porque, son engañosas. Como dependen del "directorio de trabajo" actual, unas veces pueden funcionar, pues el "directorio de trabajo" es el que esperamos, pero, como este puede cambiarse... usar rutas relativas pueden ser problemático. Así que toca usarlas absolutas o bien tener controlado nosotros el "directorio de trabajo", estableciendo el que queramos si es necesario, pero, a mí me parece esto más complicado (así en general) que usar directamente rutas absolutas.