-
Пустой пакет создал. В uses вставляю сабж. получаю: [Pascal Fatal Error] KWizzardComponentsComponents.pas(5): F1026 File not found: 'DesignEditors.dcu'
Почему?
-
Все как обычно - надо прописать пути поиска.
-
> [1] Юрий Зотов © (09.04.07 15:35) > Все как обычно надо прописать пути поиска.
Какие? ToolsAPI ?
-
> > Какие? ToolsAPI ?
Если да, то: [Pascal Fatal Error] DesignEditors.pas(609): F1026 File not found: 'Proxies.dcu' Уже в самом DesignEditors.pas
-
-
Так, понятно. Только не понятно как понять что включить в run time, а что в дизайн. У меня два «Custom» класса, которые обеспечивют нужную функциональность в одном модуле. И их потомки, которые публикуют нужные свойства в другом модуле. Тут же и Register процедура. Что куда включать?
-
В design-time - все то, что нужно только для IDE. Включая процедуру Register (которую для этого можно вынести в отдельный модуль).
Остальное - в run-time.
Все это для того, чтобы не тащить в будущие приложения кода и ресурсов, которые им на фиг не нужны, а нужны только IDE.
-
Получилось вроде.
А где лежит: RegisterComponentEditor ?
В справке не написано
-
И поиск не работает? :o)
-
А нашел: DesignIntf
-
Странно устанавливаю: procedure Register;
begin
RegisterComponents('KSoftWareWizzard', [TWizzard]);
RegisterClass(TWizzardPage);
RegisterComponentEditor(TWizzard, TWizzardEdit);
end; Говорит что TWizzard был зарегистрирован. Открываю среду(новую) нет ни KSoftWareWizzard ни TWizzard ессно тоже
-
unit KWizzardComponentsComponents;
interface
uses
KWizzardComponentsObjects, DesignEditors, DesignIntf;
type
TWizzardEdit = class(TDefaultEditor)
private
public
function GetVerb(Index: Integer): String; override;
function GetVerbCount: Integer; override;
procedure ExecuteVerb(Index: Integer); override;
end;
procedure Register;
implementation
uses Classes;
procedure Register;
begin
RegisterComponents('KSoftWareWizzard', [TWizzard]);
RegisterClass(TWizzardPage);
RegisterComponentEditor(TWizzard, TWizzardEdit);
end;
procedure TWizzardEdit.ExecuteVerb(Index: Integer);
begin
inherited;
end;
function TWizzardEdit.GetVerb(Index: Integer): String;
begin
case Index of
0: Result := 'Add wizzard page';
end;
end;
function TWizzardEdit.GetVerbCount: Integer;
begin
Result := 0;
end; Вот текст модуля. Правильно ли японял что все остальное должно быть в другом юните? Или классы типа:
-
Или классы типа: TWizzardPage = class(TCustomWizzardPage)
published
property OnShow;
property OnHide;
property OnExecute;
property OnUnExecute;
property OnOpeartionChange;
property NextPage;
property PreviousPage;
end; Надо тоже тут оставить?
-
> Надо тоже тут оставить?
Сделал так. Теперт роворит что TWizzardPage уже существует. А где оно? Как удалить?
-
> Все это для того, чтобы не тащить в будущие приложения кода > и ресурсов, которые им на фиг не нужны, а нужны только IDE.
А много там(примерно)?
-
> А много там(примерно)?
Кто ж его знает - вопрос к разработчику. Говорит что TWizzard был зарегистрирован. Открываю среду(новую) нет ни KSoftWareWizzard ни TWizzard ессно тоже… Варианты: 1. В обция проэкта снята галочка для этого пакета 2. Компонет спятан.
RegisterClass(TWizzardPage); - скорее всего нужно перенести в секцию инициализации модуля с компонентом
-
Благодарю за обсуждение. Особенно благодарю Наиля, которого я в аське мучал целый час.
-
> которого я в аське мучал целый час.
Повезло Наилю, меня "мучали" несколько дней...
-
> Повезло Наилю, меня «мучали» несколько дней
Это был не я :)
-
> Это был не я :)
Нет, это был Александр (кликуху не помню)
|