Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Настройка хоткеев в IDE  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11914
Нужно в Delphi 10.3.1 повесить горячую клавишу на Clean проекта. Это можно как-то сделать? Или она уже есть?

С уважением, Vasilisk
30 июн 20, 18:50    [22159920]     Ответить | Цитировать Сообщить модератору
 Re: Настройка хоткеев в IDE  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6321
_Vasilisk_,

Поставь GExperts - там есть редактор hotkey`ев для IDE
30 июн 20, 23:54    [22160023]     Ответить | Цитировать Сообщить модератору
 Re: Настройка хоткеев в IDE  [new]
DimaBr
Member

Откуда:
Сообщений: 11717
На сколько я понимаю, это по ПКМ на Менеджере Проектов.
Как бы поступил я.
Написал эксперт, который в IDE рассказал мне какие компоненты есть на форме TProjectManagerForm
Добавил бы в IDE свой Action c ХотКеем, который бы дёргал Action (или MenuItem.Click - если подходящего Action не нашлось)

Сообщение было отредактировано: 30 июн 20, 23:55
30 июн 20, 23:57    [22160024]     Ответить | Цитировать Сообщить модератору
 Re: Настройка хоткеев в IDE  [new]
DimaBr
Member

Откуда:
Сообщений: 11717
Action-a (в ХЕ2) нет, то что пытаться дёргать пункт меню

К сообщению приложен файл. Размер - 55Kb
1 июл 20, 00:21    [22160033]     Ответить | Цитировать Сообщить модератору
 Re: Настройка хоткеев в IDE  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11914
Попробовал написать своего эксперта, который бы выполнил Clean. Но не пойму как это сделать.

Нашел такой интерфейс
  IOTAModuleCleanup = interface
    ['{682E85BB-AF62-4868-BEFF-0C1515F006A8}']
    { When implemented on a module, this method will delete generated files like .dcu, .exe, etc }
    procedure CleanupFiles;
  end;
А вот откуда его добыть не пойму.

Пробовал так
procedure Cleanup;
var
  LMsg: IOTAMessageServices;
  LModuleSrvc: IOTAModuleServices;
  LPrj: IOTAProject;
  Li: Integer;
  LModInfo: IOTAModuleInfo;
  LModule: IOTAModule;
  LModClean: IOTAModuleCleanup;
begin
  LMsg := BorlandIDEServices as IOTAMessageServices;

  ABindingResult := krNextProc;
  LModuleSrvc := BorlandIDEServices as IOTAModuleServices;
  LPrj := LModuleSrvc.GetActiveProject;
  if LPrj = nil then
    Exit;
  for Li := 0 to LPrj.GetModuleCount - 1 do begin
    LModInfo := LPrj.GetModule(Li);
    LMsg.AddTitleMessage(Format('Process: %s, Type: %d', [LModInfo.Name, LModInfo.ModuleType]));
    try
      if LModInfo.ModuleType in [omtForm, omtDataModule, omtProjUnit, omtUnit] then begin
//        LModule := LModInfo.OpenModule;
//        if Supports(LModule, IOTAModuleCleanup, LModClean) then begin
        if Supports(LModInfo, IOTAModuleCleanup, LModClean) then begin
          LModClean.CleanupFiles;
          LMsg.AddTitleMessage('  Clean');
        end;
      end;
    except
      on E: Exception do
        LMsg.AddTitleMessage('  ' + E.Message);
    end;
  end;
end;
не саппортится ни одним модулем
1 июл 20, 16:07    [22160237]     Ответить | Цитировать Сообщить модератору
 Re: Настройка хоткеев в IDE  [new]
DimaBr
Member

Откуда:
Сообщений: 11717
Думаю, что этот интерфейс дёргается когда пользователь выбирает по ПКМ "Clean", как бы давая вам возможность написать эксперт, который помимо (.dcu, .exe, etc) будет удалять дополнительные файлы.
Сами модули это не поддерживают
1 июл 20, 18:33    [22160345]     Ответить | Цитировать Сообщить модератору
 Re: Настройка хоткеев в IDE  [new]
DimaBr
Member

Откуда:
Сообщений: 11717
Написал простой эксперт, который добавляет пункт меню в IDE.
В нем, ищем форму, меню и пункт меню и дёргаем его.
По клику на МОЙ пункт меню - Работает.
Про добавление горячих клавиш можно почитать тут


procedure TMenuExpert.OnMenuClick(Sender: TObject);
var A,F,M,C: TComponent;
    i: integer;
    S: string;
begin
  A := Application.FindComponent('AppBuilder');
  if A = nil then begin
    ShowMessage('AppBuilder not found');
    Exit;
  end;

  F := A.FindComponent('ProjectManagerForm');
  if F = nil then begin
    ShowMessage('ProjectManagerForm not found');
    Exit;
  end;

  M := F.FindComponent('FormPopupMenu');
  if M = nil then begin
    ShowMessage('FormPopupMenu not found');
    Exit;
  end;
  for i := 0 to TMenu(M).Items.Count-1 do
    if TMenu(M).Items.Items[i].Caption = 'Clean' then begin
      C := TMenu(M).Items.Items[i];
      TMenuitem(C).Click;
    end;
end;
1 июл 20, 20:11    [22160391]     Ответить | Цитировать Сообщить модератору
 Re: Настройка хоткеев в IDE  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11914
DimaBr
Про добавление горячих клавиш можно почитать тут
Это я уже видел и сделал
DimaBr
В нем, ищем форму, меню и пункт меню и дёргаем его.
Проктология. Но спасибо хоть за это
2 июл 20, 12:32    [22160768]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить