Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Можно ли в DesignMode открыть закрыть модуль зная его имя?   Найти похожие ветки 

 
jacksotnik   (2012-05-10 12:54) [0]

Произвожу манипуляции с модулем через wizard и мне надо закрыть данный модуль а потом опять его открыть не закрывая весь проект


 
AV ©   (2012-05-10 13:10) [1]

Ctrl Alt F11
DblClick
Ctrl F4


 
Юрий Зотов ©   (2012-05-10 15:55) [2]

Не проверял, но должно работать. Вставьте это в свой wizard и вызовите процедуру CloseIDEFile.

function FindInterface(AInterface: TGUID): IUnknown;
var
 i: Integer;
begin
 Result := nil;
 with BorlandIDEServices as IOTAModuleServices do
   for i := 0 to ModuleCount - 1 do
     if Modules[i].QueryInterface(AInterface, Result) = S_OK then Break
end;

function GetCurrentProjectGroup: IOTAProjectGroup;
begin
 Result := FindInterface(IOTAProjectGroup) as IOTAProjectGroup
end;

function GetCurrentProject: IOTAProject;
var
 ProjectGroup: IOTAProjectGroup;
begin
 ProjectGroup := GetCurrentProjectGroup;
 if Assigned(ProjectGroup) then
   Result := ProjectGroup.ActiveProject
 else Result := FindInterface(IOTAProject) as IOTAProject
end;

procedure CloseIDEFile(IDEFileName: string);
var
 i: integer;
begin
 with GetCurrentProject do
   for i := 0 to GetModuleCount - 1 do
     if AnsiSameText(IDEFileName, GetModule(i).Name) then
     begin
       (BorlandIDEServices as IOTAActionServices).CloseFile(GetModule(i).FileName);
       Exit
     end
end;


 
AV ©   (2012-05-10 15:58) [3]

вона как.. :)
[1] - "обшибочка" вышла ^)


 
Юрий Зотов ©   (2012-05-10 15:59) [4]

Только параметр IDEFileName надо бы переименовать в IDEUnitName, поскольку это именно имя модуля, а не имя самого файла. Впрочем, можно использовать и имя файла, но тогда GetModule(i).Name тогда надо заменить на GetModule(i).FileName.


 
Юрий Зотов ©   (2012-05-10 16:04) [5]

Открываем файл тем же кодом, только вместо CloseFile пишем OpenFile.


 
Юрий Зотов ©   (2012-05-11 08:25) [6]

Блин... вот так обрушивают IDE. А потом говорят, что она кривая.

Если не открыто ни одного проекта, то будет AV. Надо проверять.

procedure CloseIDEFile(IDEFileName: string);
var
 CurrentProject: IOTAProject;
 i: integer;
begin
 CurrentProject := GetCurrentProject;
 if CurrentProject <> nil then
   with CurrentProject do ...

и далее по тексту.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.102 c
15-1345982874
чудокод
2012-08-26 16:07
2013.03.22
Подскажите редактор кода с 2 колонками, как в Total Commandere


15-1341037128
AV
2012-06-30 10:18
2013.03.22
Хватит сыпать на пол?


2-1337338580
Глеб
2012-05-18 14:56
2013.03.22
Работа дельфи с внешь устройствами


4-1258957583
pg81
2009-11-23 09:26
2013.03.22
Как получить в переменную frm:TForm зная Handle окна?


15-1332879004
Дмитрий С
2012-03-28 00:10
2013.03.22
Как скрыть диски для пользователя?