如何更改Delphi XE6 IDE的字体大小

时间:2014-07-21 19:33:34

标签: delphi delphi-xe6

如何更改Delphi XE6的IDE本身的字体大小。

IDE的对话框没有使用我的Windows字体首选项,我找不到任何更改IDE使用的字体的选项。

enter image description here

或者,how do i get Delphi XE6 to honor the user's font preferences?

2 个答案:

答案 0 :(得分:1)

你不能
字体是硬编码的。你无法改变它。

以下是我尝试过的内容

1 - 使用HEX编辑器更改BDS.EXE

如果在HEX编辑器中打开BDS.EXE,请查找TextHeight并将值从$ 0D(13)更改为更大的值,然后更改的bds.exe将看起来完全相同。

2 - 使用EnumChildWindows通过WM_SETFONT消息向Delphi IDE发送垃圾邮件

您可以向正在运行的Delphi主窗口发送WM_SETFONT消息 您必须使用FindWindow API调用找到该窗口。

来自:http://msdn.microsoft.com/en-us/library/windows/desktop/ms632642%28v=vs.85%29.aspx

  

<强>的wParam
      字体句柄(HFONT)。如果此参数为NULL,则控件使用默认系统字体绘制文本   的 lParam的
      lParam的低位字指定在设置字体时是否应立即重绘控件。如果此参数为TRUE,则控件将重绘自身。

因为您希望Delphi使用默认字体,所以消息非常简单。

Delphi XE6主窗口名为TAppBuilder,因此您必须使用FindWindow获取该窗口的句柄。

我尝试了这个,但它没有用。

unit Unit4;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm4 = class(TForm)
    FontDialog1: TFontDialog;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

const
  DelphiWindows: array [1 .. 1] of PWideChar = ('TAppBuilder');

function EnumChildProc(const hWindow: hWnd; const hFont: LParam): boolean; stdcall;
begin
  SendMessage(hWindow, WM_SETFONT, hFont, 1);
  Result:= True;
end;

procedure TForm4.Button1Click(Sender: TObject);
var
  BDSWindow: HWND;
  ChildWindow: HWnd;
  Font: HFONT;
  i: Integer;
begin
  if FontDialog1.Execute then begin
    BDSWindow:= FindWindow(DelphiWindows[1], nil);
    Font:= FontDialog1.Font.Handle;
    EnumChildWindows(BDSWindow, @EnumChildProc, Font);
    ShowMessage('Done');
  end;
end;

end.

我没有尝试过默认字体,因为Delphi字体和默认字体在我的系统上是相同的。而且我不想更改默认字体。

这样做改变了我的Delphi上的2个dropdown_boxes。不是很好的表现。

我发布了这个答案,希望你能从这里找到解决方案。

答案 1 :(得分:0)

最好的方法是使用Delphi IDE Theme Editor,它非常简单。试试Delphi IDE Theme Editor,预览:

enter image description here