Ver Mensaje Individual
  #3  
Antiguo 07-02-2006
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Reputación: 19
xEsk Va por buen camino
Version mejorada

Aqui pongo el codigo final que he dejado en mi programa (comentarios traducidos al español), y funciona bastante bien hasta el momento:

Código Delphi [-]
... 
var 
  DropShadowEnabled: Boolean; // flag para activar/desactivar la sombra 
... 

// Devuelve si el programa corre bajo winxp 
function IsWinXP: Boolean; 
begin 
 Result:=(Win32Platform = VER_PLATFORM_WIN32_NT) and 
         (Win32MajorVersion >= 5) and (Win32MinorVersion >= 1); 
end; 

// Devuelve si el usuario tiene activada la sombra de los menus 
function isDropShadowEnabled: Boolean; 
begin 
  SystemParametersInfo(SPI_GETDROPSHADOW, 0, @Result, 0); 
end; 

// Activa o desactiva la sombra de la ventana 
procedure TMainForm.doActivateDropShadow; 
var 
  teniaSombra: Boolean; 
begin 
  // Config. inicial del usuario 
  teniaSombra:=isDropShadowEnabled; 
  // Hay q poner sombra? 
  if DropShadowEnabled then 
    begin 
      //Activa la sombra 
      SystemParametersInfo(SPI_SETDROPSHADOW, 0, Pointer(True), 0); 
      SetClassLong(Handle,GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_DROPSHADOW); 
    end 
  else // Quita sombra 
    SystemParametersInfo(SPI_SETDROPSHADOW, 0, Pointer(False), 0); 
  // Recrea la ventana 
  RecreateWnd; 
  // Restaura la configuracion de l'usuario 
  SystemParametersInfo(SPI_SETDROPSHADOW, 0, Pointer(teniaSombra), 0); 
end;

Saludos.
Responder Con Cita