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

Вниз

Вопрос по работе с Delphi Open Tools Api   Найти похожие ветки 

 
Viking   (2004-04-13 17:48) [0]

Добрый день, господа!
У меня вопрос по использованию Delphi Open Tools Api.

По Delphi 5 следующий код вполне работает:

var
 MI: TIModuleInterface;
 FI: TIFormInterface;
 CI: TIComponentInterface;

begin
 if not Assigned(ToolServices) then
   Exit;

 MI:=ToolServices.GetModuleInterface(ListForms.Strings[SelectFormIndex]);
 if not Assigned(MI) then
 begin
   ShowMessage("Форма должна быть загружена в Delphi: "+<Имя моей формы>);
   Exit;
 end;
 FI:=MI.GetFormInterface;
 if not Assigned(FI) then
 begin
   ShowMessage("Неопределен интерфейс формы: "+<Имя моей формы>);
   Exit;
 end;

 CI:=FI.GetFormComponent;
 if Assigned(CI) then
 begin
   //получить список компонент на форме...
 
 end;

. . .
end;

а под Delhi 7 не хочет!
Получаю сообщение "Неопределен интерфейс формы..." на GetFormInterface.

В чем может быть дело?

Спасибо за внимание.


 
Viking   (2004-04-14 10:14) [1]

Ещё раз, здраствуйте!
Видимо, поздно вечером задал вопрос...
Неужели никто не работает с  Tools Api?

Подскажите, хоть где ещё информацию по нему найти?


 
Юрий Зотов ©   (2004-04-14 13:16) [2]

> Viking

Не пользуйтесь ToolServices, это уже давно считается моветоном. BolandIDEServices содержит всё, что нужно.

uses
 ..., ToolsAPI;

type
 TEnumComponentProc = procedure(AComponent: TComponent);

procedure EnumComponents(Proc: TEnumComponentProc);
var
 Module: IOTAModule;
 FormEditor: IOTAFormEditor;
 Root: INTAComponent;
 i: integer;
begin
 // 1. Получаем текущий модуль
 Module := (BorlandIDEServices as IOTAModuleServices).CurrentModule;

 // 2. Если он содержит форму, модуль данных или фрейм, то
 // получаем ссылку на него и перечисляем компоненты
 if (Module <> nil) and
    (Module.CurrentEditor.QueryInterface(IOTAFormEditor, FormEditor) = S_OK) and
    (FormEditor.GetRootComponent.QueryInterface(INTAComponent, Root) = S_OK) then
   with Root.GetComponent do
     for i := 0 to ComponentCount - 1 do
       Proc(Components[i])
end;


 
Viking   (2004-04-14 15:41) [3]

>Юрий Зотов
Спасибо большое!
Сейчас гляну...

А где ещё можно информацию про BolandIDEServices найти?
Имеется в виду - примеры использования.

Спасибо.


 
Юрий Зотов ©   (2004-04-14 21:27) [4]

1. ToolsAPI.pas.
2. Справка по OTAPI (начиная с D6).
3. Исходники готовых экспертов, коих множество.
4. Поисковые машины:

http://www.yandex.ru/yandsearch?rpt=rad&text=BorlandIDEServices

http://www.google.com/search?q=%42%6F%72%6C%61%6E%64%49%44%45%53%65%72%76%69%63%65%73&hl=ru


 
Viking   (2004-04-15 10:49) [5]

>Юрий Зотов
:-)

Спасибо!
Я кое что и сам уже нашел
и применил.

Супер статьи
http://delphiplus.nagano.ru/articles/expert/toolsapi/
http://procoder.ru/articles/sys_prog/api_tools.shtml

Очень много полезной информации, рекомендую.


 
Юрий Зотов ©   (2004-04-15 11:12) [6]

> Viking   (15.04.04 10:49) [5]

> Очень много полезной информации, рекомендую.

Благодарю, но поздно. Статьи и правда хорошие, спору нет (причем первая понравилась больше), но полезны они были бы мне лет эдак 8 назад, когда я только начинал писать эксперты. К огромному сожалению, тогда таких статей еще не было, а сейчас мне уже поздно их читать. Чукча, как известно - не читатель...
:о)

В этих статьях, в общем-то, изложены азы. Изложены и правда очень хорошо, но все равно это азы. И если хотите получить более продвинутую информацию - рекомендую подписаться на почтовую конференцию Borland по OTAPI.


 
Viking   (2004-04-15 11:40) [7]

>Юрий Зотов

Я понимаю, что я наверное один такой неуч тут... :-)

Но ссылки может ещё кому пригодятся...

Маленький вопрос по поводу регистрации экспертов.
Если эксперт оформлен в виде DLL? то достаточно его прописать
в реестре:
Software\Borland\Delphi\5.0\Experts\<Моё имя>
для его появления в IDE Delphi?
А то из статей это не совсем очевидно...
Извиняюсь за элементарный вопрос... но что то я закопался, не могу поставить http://www.devrace.com/files/debug_xp.zip
(эксперт для отладки DLL в Delphi5 под XP)
:-(


 
Юрий Зотов ©   (2004-04-15 12:13) [8]

В общем, да, достаточно прописать в реестре (естественно, после этого IDE надо перезагрузить). И обратите внимание, что при этом регистрация идет только для той версии Delphi, которая указана в ветке (в данном случае - D5).



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
6-1077897538
Andrew
2004-02-27 18:58
2004.05.02
Сертификаты открытого ключа


1-1082110062
Ivolg
2004-04-16 14:07
2004.05.02
Часы


6-1078826063
knack
2004-03-09 12:54
2004.05.02
как узнать подключен или нет протокол TCP/IP?


9-1068327019
DDS
2003-11-09 00:30
2004.05.02
OpenGL: Задаю рисовать POLIGON последовательно по точкам, а он...


3-1080979904
Алексей
2004-04-03 12:11
2004.05.02
DBGrid