Вы не можете
Шрифт жестко задан. Вы не можете изменить это.
Вот что я пробовал
1 — Измените BDS.EXE с помощью HEX-редактора
Если вы откроете BDS.EXE
в HEX-редакторе, найдёте TextHeight
и измените значения с $0D (13) на что-то большее, то измененный bds.exe будет выглядеть точно так же.
2 – Используйте EnumChildWindows
, чтобы спамить Delphi IDE WM_SETFONT
сообщениями
Вы можете отправить WM_SETFONT
сообщение в работающее главное окно Delphi.
Вам нужно найти окно, используя вызов 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 и шрифт по умолчанию в моей системе одинаковы. И я не хочу менять шрифт по умолчанию.
Это изменило 2 выпадающих окна на моем Delphi. Не очень хороший показ.
Я разместил это как ответ в надежде, что вы сможете найти решение отсюда.
person
Johan
schedule
24.07.2014