Есть ли в Delphi 10.3.3 IDE сочетание клавиш для создания нового UNIT? Или можно создать такое сочетание клавиш?
Переход через File -> New слишком громоздкий.
Есть ли в Delphi 10.3.3 IDE сочетание клавиш для создания нового UNIT? Или можно создать такое сочетание клавиш?
Переход через File -> New слишком громоздкий.
Поскольку главное меню позволяет использовать ALT
ярлыки, вы можете сделать:
ALT + Ф, Н, У
Это быстро выбирает «Файл»> «Создать»> «Единица».
В приведенном ниже коде показан минимальный подключаемый модуль IDE, который использует OTA для добавления горячей клавиши для открытия нового модуля. Как показано, он активируется с помощью Ctrl-Alt-U.
Он работает так: использует сервисы OTA для доступа к главному меню IDE и добавляет новый пункт меню с заголовком MyAdded для простоты идентификации, который, если он виден (а это не обязательно), будет отображаться справа от Help
. в главном меню IDE.
Этот добавленный пункт меню имеет сочетание клавиш Ctrl-Alt-U. Его обработчик OnClick, MyAddedClick
, выполняет метод ClickNewUnit
, который итерирует File | Новое подменю, чтобы найти Unit - Delphi
MenuItem и вызвать его Click
Method, в результате чего IDE создаст и откроет новый блок.
Добавьте приведенный ниже модуль в новый файл .DPK с именем NewUnit.Dpk, скомпилируйте его, затем используйте Component | Установите пакеты для установки.
unit NewUnitu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ToolsAPI, Menus;
type
TNewUnit = class
private
procedure ClickNewUnit(Sender: TObject);
public
//Services: IOTAServices;
IntaServices : INTAServices40;
ModServices: IOTAModuleServices;
Module : IOTAModule;
AddedMenuItem : TMenuItem;
MainMenu : TMainMenu;
procedure MyAddedClick(Sender : TObject);
constructor Create;
destructor Destroy; override;
end;
var
NewUnit: TNewUnit;
[...]
constructor TNewUnit.Create;
begin
inherited Create;
//Services := BorlandIDEServices as IOTAServices; not needed
IntaServices := BorlandIDEServices as INTAServices40;
Assert(IntaServices <> Nil);
MainMenu := IntaServices.GetMainMenu;
AddedMenuItem := TMenuItem.Create(Nil);
AddedMenuItem.Caption := 'MyAdded';
AddedMenuItem.ShortCut := 49237; // = Ctrl-Alt-U
AddedMenuItem.OnClick := MyAddedClick;
// AddedMenuItem.Visible := False;
MainMenu.Items.Add(AddedMenuItem);
end;
destructor TNewUnit.Destroy;
begin
MainMenu.Items.Remove(AddedMenuItem);
AddedMenuItem.Free;
//Services := Nil;
IntaServices := Nil;
inherited Destroy;
end;
procedure TNewUnit.ClickNewUnit(Sender : TObject);
var
MenuItem : TMenuItem;
AMenuItem : TMenuItem;
i,
j,
k : Integer;
Done : Boolean;
begin
// ShowMessage('In click new unit'); exit; for debugging
Done := False;
for i := 0 to MainMenu.Items.Count - 1 do begin
MenuItem := MainMenu.Items[i];
if Pos('file', LowerCase(MenuItem.Caption)) > 0 then begin
AMenuItem := MenuItem;
for j := 0 to AMenuItem.Count - 1 do begin
for k := 0 to AMenuItem.Items[j].Count - 1 do begin
if Pos('unit', LowerCase(MenuItem.Items[j].Items[k].Caption)) > 0 then begin
MenuItem.Items[j].Items[k].Click;
Done := True;
Break;
end;
end;
if Done then Break;
end;
end;
if Done then Break;
end;
end;
procedure TNewUnit.MyAddedClick(Sender: TObject);
begin
ClickNewUnit(Sender);
end;
initialization
NewUnit := TNewUnit.Create;
finalization
NewUnit.Free;
end.
Предостережения
Это было написано и протестировано в Delphi 10.2.2 Seattle, потому что у меня не установлен Rio.
Он отлично работает, если окно редактора кода открыто во время нажатия Ctrl-Alt-U. Было бы надежнее, если бы он проверял, открыто ли окно редактора кода, и, если нет, открывал бы его.
Нет, такого ярлыка нет. Альтернативой является щелчок правой кнопкой мыши по проекту -> Add New
-> Unit
.
Существуют сторонние дополнения, такие как GExperts или CnPack, которые добавляют возможности макросов в IDE, позволяя вам автоматизировать многие такие задачи, но это не встроено в vanilla IDE. Вы также можете написать собственное расширение IDE, используя API Open Tools.
File
) не предназначен для создания нового модуля (в данный момент у меня нет под рукой IDE)? Я знаю, что это не сочетание клавиш, но это быстрее, чем щелкать меню. - person Delphi Coder   schedule 12.12.2019