Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по работе с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.032 c
1-1081931412
infom
2004-04-14 12:30
2004.05.02
Найти контрол


8-1075208188
Inc-Vizitor
2004-01-27 15:56
2004.05.02
Название проигрываемой песни в winamp


1-1082119339
MicroWorld
2004-04-16 16:42
2004.05.02
файл, масив, StringGrid


11-1057764731
puky
2003-07-09 19:32
2004.05.02
Scrollbox


8-1071478333
alexeyII
2003-12-15 11:52
2004.05.02
Как можно вывести на принтер TIF-файл?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский