2011-05-26 11 views
7

Estoy usando el cuadro de diálogo de controles comunes de Windows CHOOSECOLOR, pero en Win 7 sobresale como un pulgar dolorido ya que todavía usa la 'antigua' fuente Tahoma.Cambiar la fuente en el cuadro de diálogo CHOOSECOLOR

ChooseColor Dialog

¿Hay una manera bastante fácil de conseguir que se utilice Segoe interfaz de usuario o alguna otra fuente?

si importa, estoy usando Delphi/C++ Builder ...

Respuesta

9

no creo que es una buena idea para cambiar la fuente predeterminada, pero seguro, es factible:

function EnumChildProc(hWnd: HWND; lParam: LPARAM): LongBool; stdcall; 
begin 
    SendMessage(hWnd, WM_SETFONT, lParam, Integer(true)); 
    result := true; 
end; 

procedure TForm1.ColorDialogShow(Sender: TObject); 
var 
    dlg: TColorDialog; 
begin 
    if not (Sender is TColorDialog) then Exit; 
    dlg := TColorDialog(Sender); 

    SendMessage(dlg.Handle, WM_SETFONT, Self.Font.Handle, Integer(true)); 

    EnumChildWindows(dlg.Handle, @EnumChildProc, Self.Font.Handle); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    with TColorDialog.Create(nil) do 
    try 
     OnShow := ColorDialogShow; 
     Execute(Handle); 
    finally 
     Free; 
    end; 
end; 

Esto utilizará la fuente Form1.Font.

Color Dialog with custom font http://privat.rejbrand.se/ColorDialogWCustomFont.png

Sin embargo, en este caso, sólo puede encontrar aceptable:

Color Dialog with default font (Tahoma) http://privat.rejbrand.se/WCPDefTahoma.pngColor Dialog with Segoe UI font http://privat.rejbrand.se/WCPSegoeUI.png

Tahoma (por defecto) vs. Segoe UI

Pero! Hay cuestiones implicadas:

Color Dialog with default font - no issues http://privat.rejbrand.se/WCLNoFontIssue.png

Color Dialog with custom font causing issues http://privat.rejbrand.se/WCLFontIssue.png

Lo más seguro que hacer, creo, es que no altera el aspecto por defecto (la intención) del cuadro de diálogo. Entonces, al menos, puede culpar a Microsoft por cualquier problema de escalado ...

+0

¡Respuesta perfecta, gracias! – Roddy

Cuestiones relacionadas