Форум: "Компоненты";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизПроблема с экспертом (IOTAFormEditor) Найти похожие ветки
← →
Mutex (2005-05-05 19:30) [0]Пишу эксперт, в котором мне нужно получить доступ ко всем формам Группы Проектов. Для этого пытаюс перебрать все модули проекта и найти у них интерфейс формы, но ни чего не выходит - перерыл несколько тем в инете, но я все делаю так как в них описано и не могу получить ссылку на нужный мне интерфейс. Вот простой код проверки:
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) [1]Проблема решена
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.052 c