2011-05-26 22 views
7

Windows ortak denetimleri CHOOSECOLOR iletişim kutusunu kullanıyorum, ancak Win 7'de hala 'eski' Tahoma yazı tipini kullandığı için ağrılı bir başparmak gibi yapışıyor.CHOOSECOLOR iletişim kutusunda yazı tipini değiştirme

ChooseColor Dialog

Segoe UI veya başka yazı kullanmak almanın oldukça kolay bir yolu var mı?

Bu konularda, ben kullanıyorum Delphi/C++ Builder ...

cevap

9

Ben varsayılan yazı tipini değiştirmek için iyi bir fikir olduğunu sanmıyorum, ama emin Bu mümkün:

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; 

Bu, Form1.Font yazı tipini kullanır.

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

Yine bu durumda, sadece kabul edilebilir bulabilirsiniz:

Segoe UI

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

Tahoma (Varsayılan)! katılan sorun vardır:

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

güvenli şey yapmak, bence, diyalog varsayılan (amaçlanan) görünümünü değiştirmek için değil. Sonra, en azından, herhangi bir ölçekleme sorunu için Microsoft'u suçlayabilirsiniz ...

+0

Mükemmel cevap, teşekkürler! – Roddy

İlgili konular