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

Вниз

OTA Expert   Найти похожие ветки 

 
Mike_Goblin   (2003-05-24 16:50) [0]

Написал эксперт OTA, генерирующий некоторый код.
TmmRepositoryWizard = class(
TNotifierObject,
IOTAWizard,
IOTARepositoryWizard,
IOTARepositoryWizard60,
IOTAFormWizard,
IOTACreator,
IOTAModuleCreator)
Все хорошо кроме одной мелочи:
Иконка эксперта доступна лишь когда не открыт ни один проект, при создании проекта (File/New/Application) она пропадает.
Вопрос как объяснить IDE что эксперт должен быть доступен и при открытом проекте?
Среда D7
Заранее спасибо


 
Юрий Зотов   (2003-05-24 20:44) [1]

1. Что возвращает GetPage?

2. Не уверен, но, IMHO, подозрительно выглядит наследование от TNotifierObject.

3. Вот так все прекрасно работает:

TMyFormWizard = class(
TInterfacedObject,
IOTAWIzard,
IOTARepositoryWizard,
IOTAFormWizard)

Эксперт лежит на странице New и генерит код новых форм, а также делает еще кой-какие операции. При этом нотификатор, IOTACreator и IOTAModuleCreator реализованы отдельными классами.


 
Mike_Goblin   (2003-05-24 21:37) [2]

1. GetPage возвращает название новой закладки (не хочется в стандартные класть), может в этом проблема?

2. вряд ли
3. >При этом нотификатор, IOTACreator и IOTAModuleCreator >реализованы отдельными классами.
можно подбробнее чуть чуть? про реализацию нотификатора и креаторов отдельными классах - в примерах такого не заметил



 
Юрий Зотов   (2003-05-24 23:56) [3]

> Mike_Goblin © (24.05.03 21:37)

Весь код привести невозможно (да и неинтересно), поэтому привожу схему его построения. В основу были положены принципы CCPack50.

=================================

type
TMyWizard = class(TInterfacedObject, IOTAWIzard, IOTARepositoryWizard, IOTAFormWizard)
private
FNotifierIndex: integer;
public
constructor Create;
destructor Destroy; override;
procedure Execute;
end;

constructor TMyWizard.Create;
begin
inherited;
FNotifierIndex := (BorlandIDEServices as IOTAServices).AddNotifier(TMyNotifier.Create)
end;

destructor TMyWizard.Destroy;
begin
(BorlandIDEServices as IOTAServices).RemoveNotifier(FNotifierIndex);
inherited
end;

procedure TMyWizard.Execute;
begin
...
(BorlandIDEServices as IOTAModuleServices).CreateModule(TMyModuleCreator.Create(...));
...
end;

=====================

type
TMyNotifier = class(TInterfacedObject, IOTAIDENotifier)
public
procedure FileNotification(NotifyCode: TOTAFileNotification; const FileName: string; var Cancel: Boolean);
end;

=====================

type
TMyModuleCreator = class(TInterfacedObject, IOTACreator, IOTAModuleCreator)
public
function NewImplSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile;
end;

function TMyModuleCreator.NewImplSource(const ModuleIdent, FormIdent, AncestorIdent: string): IOTAFile;
var
Source: string;
begin
Source := ...;
Result := TMyFormFile.Create(Source)
end;

==============================

type
TMyFormFile = class(TInterfacedObject, IOTAFile)
private
FSource: string;
public
constructor Create(const Source: string);
function GetSource: string;
end;

constructor TMyFormFile.Create(const Source: string);
begin
inherited Create;
FSource := Source
end;

function TMyFormFile.GetSource: string;
begin
Result := FSource
end;



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

Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-13451
Vlad Oshin
2003-05-15 09:24
2003.06.05
Не верится, но как объяснить?


4-13522
alexsc
2003-04-07 11:31
2003.06.05
отключение windows клавиш


3-13010
Den
2003-05-16 08:57
2003.06.05
idapi32.cfg


1-13136
se-run
2003-05-26 05:53
2003.06.05
Проблемка с XPManifest


1-13249
aldan
2003-05-16 09:24
2003.06.05
Как программно из Делфи в Ехеле перейти на другой лист





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский