Как изменить размер шрифта в Delphi XE6 IDE

Как я могу изменить размер шрифта самой IDE Delphi XE6.

В диалоговых окнах IDE не используются мои настройки шрифта Windows, и я не могу найти какой-либо вариант для изменения шрифта, используемого IDE.

введите здесь описание изображения

Кроме того, как заставить Delphi XE6 учитывать пользовательский шрифт предпочтения?


person Ian Boyd    schedule 21.07.2014    source источник
comment
Насколько я знаю, вы не можете изменить шрифт. Это жестко запрограммировано.   -  person Rudy Velthuis    schedule 22.07.2014
comment
Вы один из тех парней (как и я) с проблемами со зрением?   -  person Z80    schedule 10.07.2019
comment
@Ригель. Да, но это нечто большее. Шрифт 8pt был хорош в 1991 году, когда мы использовали разрешение 640x480 на 14-дюймовом мониторе (43 ppi). Теперь у нас 1920x1080 на 22 мониторах (58 ppi). Все стало на 26% меньше. 16-пиксельные изображения панели инструментов могли быть хороши в 1991 году, но сегодня они слишком малы. В течение 30 лет разработчики размещали объекты в пикселях, а не в диалоговых единицах. Если они собираются спроектировать его неправильно, пришло время обновить их неправильный дизайн: изображения панелей инструментов теперь должны быть 24 пикселя, шрифты должны быть 11 пт, кнопки должны быть высотой 31 пикселя. Или они могут поступить правильно: следовать предпочтениям пользователя.   -  person Ian Boyd    schedule 11.07.2019
comment
Я начал добавлять в свои программы (панель настроек) опцию, позволяющую пользователю изменять размер шрифта для формы.   -  person Z80    schedule 11.07.2019


Ответы (2)


Вы не можете
Шрифт жестко задан. Вы не можете изменить это.

Вот что я пробовал

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
comment
Вероятно, стоит отметить, что даже если вам удалось изменить размер шрифта, IDE была разработана с текущим размером шрифта, поэтому он, вероятно, не будет хорошо работать с новым размером (и вы даже можете сделать его непригодным для использования). Иногда сложно приспособить размер шрифта и масштабирование к пользовательскому интерфейсу, и Delphi IDE имеет множество сложного пользовательского интерфейса для контента в этом отношении. (Что, кстати, вероятно, является причиной того, что нет встроенной возможности изменить размер шрифта.) - person Ken White; 25.07.2014
comment
Вы не можете отправить дескриптор шрифта другому процессу, это не сработает: дескрипторы объектов GDI являются частными для процесса. То есть только процесс, создавший объект GDI, может использовать дескриптор объекта. (Объекты GDI) - person Sertac Akyuz; 25.07.2014
comment
@SertacAkyuz, да, вы правы, но вы можете отправить hFont со значением null, что говорит Window использовать системный шрифт по умолчанию. Однако я подозреваю, что DBS.EXE игнорирует сообщения WM_SETFONT. - person Johan; 25.07.2014
comment
Любопытно, что Рэймонд Чен только что написал о WM_SETFONT и WM_GETFONT и о том, почему они могут не работать. См. Когда я отправляю окну сообщение WM_GETFONT, почему у меня нет шрифта?. - person Ken White; 25.07.2014

Лучше всего это сделать с помощью редактора тем Delphi IDE, это очень просто. Попробуйте в редакторе тем Delphi IDE предварительный просмотр:

введите здесь описание изображения

person Artur_Indio    schedule 01.04.2016
comment
Это изменит размер шрифта в редакторе, а не во всей среде IDE. Пожалуйста, прочитайте вопрос еще раз, на этот раз внимательно :) - person Z80; 10.07.2019