PDA

Ver la Versión Completa : Desactivar estilo visual


MAXIUM
27-05-2010, 02:48:21
¿Como desactivar el estilo visual de solo algunos componentes? (XPMan)

kurono
27-05-2010, 04:47:44
para los componente individuales lo puedes hacer de la manera siguiente

function SetWindowTheme(hWnd: Cardinal; Optional, pszSubAppName: PChar): Cardinal; stdcall; external 'uxtheme';

procedure TForm1.Button1Click(Sender: TObject);
begin
SetWindowTheme(Button1.Handle, ' ', ' ');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SetWindowTheme(Button1.Handle, nil, nil);
end;

y esto para el sistema windows en general

function EnableTheming(fEnable: LongBool): Cardinal; stdcall; external 'uxtheme';

procedure TForm1.Button1Click(Sender: TObject);
begin
EnableTheming(False);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
EnableTheming(True);
end;

MAXIUM
27-05-2010, 05:36:06
Muchas Gracias. Pero no me funciona.

Ñuño Martínez
27-05-2010, 10:30:22
Por favor, define "Pero no me funciona."

MAXIUM
27-05-2010, 22:20:17
function SetWindowTheme(hWnd: Cardinal; Optional, pszSubAppName: PChar): Cardinal; stdcall; external 'uxtheme';

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowTheme(Panel1.Handle, nil, ''); //<- NO FUNCIONA
SetWindowTheme(Button1.Handle, nil, '');
SetWindowTheme(GroupBox1.Handle, nil, ''); //<- NO FUNCIONA
SetWindowTheme(BitBtn1.Handle, nil, ''); //<- NO FUNCIONA
end;


http://i48.tinypic.com/2rmrths.png

kurono
28-05-2010, 04:00:49
si estas usando componentes tercero en tu aplicacion como VCL Skip ,suick pack etc debo decirte que no funcionara los codigo que te pase ya, que ese codigo solo quitan el estilo visual del xp del propio sistema no de componente tercero

MAXIUM
28-05-2010, 04:36:57
Estoy usando controles nativos, es cosa que veas el código que he puesto.

kurono
29-05-2010, 00:07:04
agrega en la linea de la funcion en el archivo que hace referencia añadele la extension .dll de esta manera

function SetWindowTheme(hWnd: Cardinal; Optional, pszSubAppName: PChar): Cardinal; stdcall; external 'uxtheme.dll';

luego en la carpeta de tu proyecto agrega el archivo uxtheme.dll que se encuenta en la carpeta C:\windows\system32 y con eso debe funcionar

MAXIUM
29-05-2010, 00:54:29
Lo curioso, es que solo funciona para los Button.

kurono
29-05-2010, 02:05:22
debo comentarte que el codigo que te e dado lo habia utilizado en una aplicacion que habia desarrollado hace mucho y me funcionaba perfectamente no solo con el los buttons si no con todo los componente de lo que no me acuerdo es si tenia que poner algo extra en los uses vere si tengo esa aplicacion todavia para revisarlo de todas manera dime si te funcionado lo ultimo que te expuse