![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с экспертом (IOTAFormEditor) [D7, Win2k]
Mutex © (2005-05-05 19:30:00)Пишу эксперт, в котором мне нужно получить доступ ко всем формам Группы Проектов. Для этого пытаюс перебрать все модули проекта и найти у них интерфейс формы, но ни чего не выходит - перерыл несколько тем в инете, но я все делаю так как в них описано и не могу получить ссылку на нужный мне интерфейс. Вот простой код проверки:
class function TfLanguageManager.GetFormEditor(OTAProject: IOTAProject): IOTAFormEditor;
var
i: integer;
begin
// Вот тут, по идее, среди модулей проекта должен быть эдитор формы, но его нет!!!
for i := 0 to OTAProject.ModuleFileCount - 1 do
if OTAProject.ModuleFileEditors[i].QueryInterface(IOTAFormEditor, Result) = S_OK then
begin
ShowMessage('FormEditor supported');
Exit;
end;
ShowMessage('FormEditor not supported');
end;
procedure TfLanguageManager.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 0 to OTAProjectGroup.ProjectCount - 1 do
GetFormEditor(OTAProjectGroup.Projects[i]);
end;
class function TfLanguageManager.OTAProjectGroup: IOTAProjectGroup;
var
Obj: IUnknown;
begin
Result := nil;
Obj := EnumOTAModuleServices(IOTAProjectGroup);
if Assigned(Obj) then
Result := Obj as IOTAProjectGroup;
end;
class function TfLanguageManager.EnumOTAModuleServices(
const IID: TGUID): IUnknown;
var
i: integer;
OTAModuleServices: IOTAModuleServices;
OTAModule: IOTAModule;
begin
Result := nil;
OTAModuleServices := TfLanguageManager.OTAModuleServices;
for i := 0 to OTAModuleServices.ModuleCount - 1 do
begin
OTAModule := OTAModuleServices.Modules[i];
if OTAModule.QueryInterface(IID, Result) = S_OK then
Break;
end;
end;
Кто нить знает в чем может быть дело?
Mutex (2005-05-11 19:59:00) [1]Проблема решена