Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Настройка хоткеев в IDE / 8 сообщений из 8, страница 1 из 1
30.06.2020, 18:50
    #39974751
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
Нужно в Delphi 10.3.1 повесить горячую клавишу на Clean проекта. Это можно как-то сделать? Или она уже есть?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
30.06.2020, 23:54
    #39974815
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
_Vasilisk_,

Поставь GExperts - там есть редактор hotkey`ев для IDE
...
Рейтинг: 0 / 0
30.06.2020, 23:57
    #39974816
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
На сколько я понимаю, это по ПКМ на Менеджере Проектов.
Как бы поступил я.
Написал эксперт, который в IDE рассказал мне какие компоненты есть на форме TProjectManagerForm
Добавил бы в IDE свой Action c ХотКеем, который бы дёргал Action (или MenuItem.Click - если подходящего Action не нашлось)
...
Рейтинг: 0 / 0
01.07.2020, 00:21
    #39974821
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
Action-a (в ХЕ2) нет, то что пытаться дёргать пункт меню
...
Рейтинг: 0 / 0
01.07.2020, 16:07
    #39974947
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
Попробовал написать своего эксперта, который бы выполнил Clean. Но не пойму как это сделать.

Нашел такой интерфейс
Код: pascal
1.
2.
3.
4.
5.
  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;

А вот откуда его добыть не пойму.

Пробовал так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
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;

не саппортится ни одним модулем
...
Рейтинг: 0 / 0
01.07.2020, 18:33
    #39975028
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
Думаю, что этот интерфейс дёргается когда пользователь выбирает по ПКМ "Clean", как бы давая вам возможность написать эксперт, который помимо (.dcu, .exe, etc) будет удалять дополнительные файлы.
Сами модули это не поддерживают
...
Рейтинг: 0 / 0
01.07.2020, 20:11
    #39975056
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
Написал простой эксперт, который добавляет пункт меню в IDE.
В нем, ищем форму, меню и пункт меню и дёргаем его.
По клику на МОЙ пункт меню - Работает.
Про добавление горячих клавиш можно почитать тут


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
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;
...
Рейтинг: 0 / 0
02.07.2020, 12:32
    #39975320
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка хоткеев в IDE
DimaBr
Про добавление горячих клавиш можно почитать тут
Это я уже видел и сделал
DimaBr
В нем, ищем форму, меню и пункт меню и дёргаем его.
Проктология. Но спасибо хоть за это
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Настройка хоткеев в IDE / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]