2011-05-26 118 views
7

我使用的是Windows常用控件CHOOSECOLOR对话框,但在Win 7上它像拇指一样突出,因为它仍然使用“旧”Tahoma字体。在CHOOSECOLOR对话框中更改字体

ChooseColor Dialog

有没有得到它使用的Segoe UI或其他一些字体的一个相当简单的方法?

如果它的事项,我用Delphi/C++ Builder中......

回答

9

我不认为这是改变的默认字体是一个好主意,但肯定的是,它是可行的:

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; 

这将使用Form1.Font字体。

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

不过,在这种情况下,我可能只是认为可以接受:

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

宋体(默认值)与濑越UI

但是!有涉及的问题:

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

最安全的事情,我想,是不是改变对话框的默认(意)的外观。那么,至少,你可以责怪微软的任何尺度问题...

+0

完美的答案,谢谢! – Roddy 2011-05-26 21:49:57