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 ...
¡Respuesta perfecta, gracias! – Roddy