[Lazarus-es] OpenDialog y Vista
JoshyFun
joshyfun en gmail.com
Mar Oct 13 23:04:59 CEST 2009
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).
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 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.
--
Best regards,
JoshyFun
More information about the Lazarus-es
mailing list