[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