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

如何更改Delphi XE6 IDE的字体大小,delphi,delphi-xe6,Delphi,Delphi Xe6,如何更改Delphi XE6的IDE本身的字体大小 IDE的对话框没有使用我的Windows字体首选项,我找不到任何选项来更改IDE使用的字体 或者,你不能 字体是硬编码的。你不能改变它 以下是我尝试过的 1-使用十六进制编辑器更改BDS.EXE 如果在十六进制编辑器中打开BDS.EXE,查找TextHeight,并将值从$0D(13)更改为更大的值,则更改后的BDS.EXE的外观将完全相同 2-使用EnumChildWindows向Delphi IDE发送WM_SETFONT消息 您可以向正

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

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


或者,你不能 字体是硬编码的。你不能改变它

以下是我尝试过的

1-使用十六进制编辑器更改BDS.EXE

如果在十六进制编辑器中打开
BDS.EXE
,查找
TextHeight
,并将值从$0D(13)更改为更大的值,则更改后的BDS.EXE的外观将完全相同

2-使用
EnumChildWindows
向Delphi IDE发送
WM_SETFONT
消息

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

发件人:

wParam
字体的句柄(HFONT)。如果此参数为NULL,控件将使用默认的系统字体绘制文本。
LPRAM
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上的两个下拉框。不是很好的表演


我将此作为答案发布,希望您能从这里找到解决方案

最好的方法是使用Delphi IDE主题编辑器,它非常简单。试用,预览:


好的,您不能更改字体。它是硬编码的。你和我一样是有眼睛问题的人吗?@Rigel。是的,但不止这些。1991年,当我们在14英寸显示器(43 ppi)上运行640x480时,8pt字体还不错。现在我们在22英寸显示器(58 ppi)上运行1920x1080。一切都变小了26%。16px工具栏图像在1991年可能还不错,但现在太小了。30年来,开发人员一直在用像素而不是对话框单位来布局。如果他们打算设计错误,那么是时候更新他们错误的设计了:工具栏图像现在必须是24像素,字体必须是11像素,按钮必须是31像素高。或者他们可以做正确的事情:遵循用户的偏好。我开始在我的程序(设置面板)中添加一个选项,允许用户更改表单的字体大小。可能值得注意的是,即使您确实更改了字体大小,IDE也是按当前字体大小设计的,因此它可能无法与新的字体大小配合使用(您甚至可能会使其无法使用)。在UI中调整字体大小和缩放有时很困难,而Delphi IDE在这方面有很多复杂的UI内容。(顺便说一句,这可能是没有内置更改字体大小功能的原因。)您不能将字体句柄发送到另一个进程,这是行不通的:“GDI对象的句柄对进程是私有的。也就是说,只有创建GDI对象的进程才能使用对象句柄。”()@SertacAkyuz,是的,你是对的,但是你可以发送一个空的hFont,告诉窗口使用系统默认字体。但是我怀疑DBS.EXE忽略了WM_SETFONT消息。奇怪的是,Raymond Chen刚刚发布了关于WM_SETFONT和WM_GETFONT的信息,以及它们可能不起作用的原因。请参阅。这将在编辑器中更改字体的大小,而不是在整个IDE环境。请再次仔细阅读问题:)