PDA

Ver la Versión Completa : Estilo de WIN XP vs Delphi


amadis
15-06-2005, 21:33:04
Amigos!

Estoy haciendo hace un tiempo en delphi 7 y la he probado una aplicaicon recien en un XP con el entorno grafico lindo de xp.
Todo funciona muy bien Excepto por lo siguiente.

Como vemos todos los botones nuevos de XP son mas grandes que los clasicos al igual que las barras de estado etc etc.

El problema que me surge es que la barra de tareas de windows me tapa la barra de estado de mi programa al ser mas gorda que la clasica.

Y sobre la barra de titulo de mi programa de ve un HUECO por donde se ve el escritorio.

Estuve leyendo por ahí que eso se solucionaba con el objeto XPManifiest

Pero la ayuda de delphi no me explicó mucho y en el inspector de objetos no hay mucho que ver.


alguien me puede orientar?


Saludos y gracias

mazinger
16-06-2005, 00:26:02
El XPManifest lo puedes incluir en la ficha principal de tu programa para que utilice los estilos propios del XP. Si te soy totalmente sincero, aún no sé en qué varia el programa en sí, pero supongo que lo hará compatible con los controles propios de XP

amadis
16-06-2005, 02:53:08
Lo he agregado y he probado varias cosas antes de postear en el foro pero no resultó.

Desde el principio sin XPmanifiest tuve el problema ese con el XPman lo mismo.

Luego probando con unos parametros del XPman pero nada resulta.

Cuando el XP esta en vista clasica se ve todo bien pero cuando se pone el XP en vista MODERNA aparece ese defasaje con la barra de estados y la barra de titulo.

Les agradeceria si al menos alguien me dice que con sus programas ha pasado lo mismo.

Y volviendo al XP manifiest. sin haberlo puesto al XP maniifiest ejecutando el programa en un XP con estilo moderno se ve todo con el estilo nuevo de XP.

Así que no entiendo como funciona!

Desde ya gracias y saludos

Lepe
16-06-2005, 08:38:11
Los síntomas son clásicos de una ventana MDI cuando la vas a maximizar, que no toma el tamaño correcto del escritorio. Ya ha salido en los foros, y la respuesta es esta:


procedure TFrmMdi.ApplicationEvents1SettingChange(Sender: TObject;
Flag: Integer; const Section: String; var Result: Integer);
var
R: TRect;
begin
// para arreglar el maximimizar de la ventana
// cuando esta maximizada y se cambia la barra de tareas de sitio.
if (flag = SPI_SETWORKAREA) and (frmmdi.WindowState = wsmaximized) then
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0);
SetBounds(R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top);
Result := 0;
end;

end;


Como puedes apreciar, necesitas un Applications Events, y usar el evento Settings Changing.

Un saludo