[Lazarus-es] OpenDialog y Vista
Antonio Caballero Martínez
antonio.caballero.martinez en gmail.com
Mie Oct 14 11:53:28 CEST 2009
El 13/10/2009 23:04, JoshyFun escribió:
> Hello Antonio,
>
> Tuesday, October 13, 2009, 10:16:41 PM, you wrote:
>
> ACM> El 13/10/2009 18:06, JoshyFun escribió:
>
>>> Si te da error de ejecución hay algo mal, ya que debería funcionar
>>> perfectamente en todas las versiones de Windows incluido "Seven", eso
>>> si, con el "look" de windows clásico tipo XP, no con el de vista ni el
>>> de seven. ¿ Qué Lazarus usas ? ¿ Puedes generar un proyecto pequeño que
>>> te lance el error de ejecución para buscar el problema ?
>>>
>>>
> ACM> Pues no hay error ninguno ... Es más, lo he probado en un programa
> ACM> limpio en el que solo tengo un OpenDialog, y un botón que al hacer doble
> ACM> click ejecuta el código:
> ACM> IF ( OpenDialog1.Execute) THEN label1.caption:=
> ACM> OpenDialog1.Filename;
> ACM> y sigue dándo el mismo error (no recuerdo ahora mismo la frase que
> ACM> da, pero termina diciendo algo así con letras mayúsculas SEG no se qué) ...
>
> Es de suponer que es un Segmentation Fault, o lo que es lo mismo un
> error de esos de punteros locos. Acabo de probarlos en Vista64 y no he
> apreciado ningún problema (excepto si pones "OldStyle" que si provoca
> un error para el que enviaré un parche).
>
En la ventanita de error aparece un circulito rojo con un aspa
blanca, cuyo mensaje de la ventanita es: "Project1.exe raised exception
class 'External: SIGSEGV'". Desconozco si se pueden enviar adjuntos a la
lista, pero si hace falta podria mandar el proyecto y la ventana de
error ...
Esto, en el proyecto limpio, en el que solamente tengo un
formulario principal con un botón, un label, y un opendialog. Idem con
el programa que estoy desarrollando, pero cambiando el nombre del
ejecutable.
La versión de windows bajo la que compilo es windows vista home
premium service pack 1 de 32 bits.
Otra cosa: actualicé ayer el compilador Lazarus, con la última
versión del Snapshoot v0.9.29 beta de fecha 2009-10-12 y fpc v2.3.1; y
sigue generando el mismo error ...
Destacar, que tengo puesto el menú de inicio clásico, y no hago uso de
ningún tema ni nada rarito ... Es por defecto la configuración que trae ...
> ACM> Lo que sí he hecho, tras tus indicaciones, es poner la vista o look
> ACM> clásica tipo Xp y/o 2k. Teniendo Lazarus abierto y presionando la tecla
> ACM> F9 para compilar y ejecutar; al pulsar sobre el botón para abrir el
> ACM> OpenDialog, da una ventanita que indica el error (la que decía antes).
> ACM> Sin embargo, teniendo activado el look o apariencia tipo Xp o 2k; y
> ACM> ejecutándo el ejecutable obtenido con lazarus desde el explorador; sí
> ACM> abre perfectamente el cuadro de dialogo de archivos (OpenDialog); y no
> ACM> da error ninguno.
> ACM> ¿Misterios de las betas? No sé, la verdad ... Pero me deja algo
> ACM> perplejo el asunto ...
> ACM> Uso Lazarus 0.9.29 beta, de fecha 2009-09-10, con fpc v2.3.1,
> ACM> revisión SVN 21640, i386-win32-win32/win64.
>
> Hmmm. qué vista ? Tienes instalado algún paquete que altere el Aero ?
> Si puedes por favor fíjate cual es el error lo más exacto posible para
> intentar localizar el problema.
>
No tengo instalado ningún paquete que distorsione ... Es el windows
vista a pelo ...
En cuanto al compilador, solo tengo instalado 4 componentes de los
que hago uso: TPowerPdf (v 20081006),TLabelCut, TRackCtls v1.20.3, y
TUniqueInstance v0.1
>>> No necesitas condicionales de compilación, ya que estos sólo te dirán
>>> si es Windows u otro sistema operativo, pero no la versión del mismo.
>>> Eso sólo puedes hacerlo en "runtime", para ello haz uso del "uses
>>> winver;" y tendrás acceso a Win32Platform, Win32MajorVersion, ....
>>> Para una explicación de cada cosa esta web.
>>>
>>> http://www.mydigitallife.info/2008/12/29/windows-build-version-interpretation-explanation-and-definition/
>>>
> ACM> Ya, trataba de hacer uso con la url que dí antes, de alguna
> ACM> directiva para compilar esa unit para el OpenDialog especialmente para
> ACM> el caso Win-vista; y el componente OpenDialog normal que viene por
> ACM> defecto en Lazarus para el resto de sistemas ...
>
> No puedes con condicionales, tendrás que limitarte a algo como:
>
> if (Win32MajorVersion>=6) and (Win32Minor>=NoSe) then begin
> VistaOpenDialogOpen(.....)
> end else begin
> OpenDialog1.Execute();
> end;
>
> De todos modos voy a pegarle un ojo a ver si consigo que los
> OpenDialog no especializados (lo que provoca que salgan estilo XP) se
> puedan tratar sin hacer un "Hooking" y por lo tanto saldrían tipo
> Vista.
>
Vale ...
Saludos nuevamente, y gracias, si no lo había dicho ya ...
More information about the Lazarus-es
mailing list