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

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

Поставь GExperts - там есть редактор hotkey`ев для IDE
...
Рейтинг: 0 / 0
Настройка хоткеев в IDE
    #39974816
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сколько я понимаю, это по ПКМ на Менеджере Проектов.
Как бы поступил я.
Написал эксперт, который в IDE рассказал мне какие компоненты есть на форме TProjectManagerForm
Добавил бы в IDE свой Action c ХотКеем, который бы дёргал Action (или MenuItem.Click - если подходящего Action не нашлось)
...
Рейтинг: 0 / 0
Настройка хоткеев в IDE
    #39974821
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Action-a (в ХЕ2) нет, то что пытаться дёргать пункт меню
...
Рейтинг: 0 / 0
Настройка хоткеев в IDE
    #39974947
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал написать своего эксперта, который бы выполнил 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
Настройка хоткеев в IDE
    #39975028
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что этот интерфейс дёргается когда пользователь выбирает по ПКМ "Clean", как бы давая вам возможность написать эксперт, который помимо (.dcu, .exe, etc) будет удалять дополнительные файлы.
Сами модули это не поддерживают
...
Рейтинг: 0 / 0
Настройка хоткеев в IDE
    #39975056
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал простой эксперт, который добавляет пункт меню в 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
Настройка хоткеев в IDE
    #39975320
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
Про добавление горячих клавиш можно почитать тут
Это я уже видел и сделал
DimaBr
В нем, ищем форму, меню и пункт меню и дёргаем его.
Проктология. Но спасибо хоть за это
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Настройка хоткеев в IDE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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