![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обуздать TDataModule ?
DevilDevil © (2007-12-06 01:24:00)Вопрос Датамодулей меня интересует давно.
Сегодня попробовал... он почему то начал грузить свойства Color, Font, PopupMenu и много других... :(((((((((((
Попробовал ещё раз... теперь вообще ничего кроме своих TDataModule-евских ничего не грузит.
Привожу код... в Инспектор Объектов должно добавиться событиеOnSomeEvent, но не добавляется.
//--------------------------
program DataModuleTest;
uses
SysUtils,
Unit1 in 'Unit1.pas' {SomeModule: TDataModule},
Unit2 in 'Unit2.pas';
begin
RunMyApplication;
end.
//--------------------------
unit Unit1;
interface
uses
SysUtils, Classes, Unit2, ExtCtrls;
type
TSomeModule = class(TMyType)
private
{ Private declarations }
public
{ Public declarations }
end;
var
SomeModule: TSomeModule;
procedure RunMyApplication;
implementation
{$R *.dfm}
procedure RunMyApplication;
begin
SomeModule := TSomeModule.Create(nil);
SomeModule.Free;
end;
//--------------------------
unit Unit2;
interface
uses
SysUtils, Classes;
type
TMyType = class (TDataModule)
private
FOnSomeEvent: TNotifyEvent;
public
published
property OnSomeEvent: TNotifyEvent read FOnSomeEvent write FOnSomeEvent;
end;
implementation
end.
//--------------------------
Для того чтобы у себя создать подобное приложение, сначала создайте ConsoleApplication, потом TDataModule.
Очень буду благодарен за помощь!
DevilDevil (2007-12-07 16:57:00) [1]Всё, разобрался.
Всем большое спасибо за помощь!
DevilDevil (2007-12-07 16:42:00) [2]Мне хотелось бы, чтобы это модуль данных и ряд других компонентов содержался в одном пакете.
Ну и чтобы их можно было использовать ))
DevilDevil (2007-12-07 16:16:00) [3]напутал с тегами, извиняюсь.
DevilDevil (2007-12-07 16:15:00) [4]> DrPass © (07.12.07 15:48) [8]
> Сделать так, чтобы процедура Register находилась в модуле
> пакета, который инсталлируется в Delphi, и не попадает в приложение</>
я если честно, не понимаю этой формулировки.
прописать в файле *.dpk ?
или создать ещё один *.pas ?
DrPass (2007-12-07 15:48:00) [5]
> Для форм эта процедура называется RegisterCustomModule,
> а как для модулей данных
Она же и для модулей данных
> Создаю новое приложение
> наследую модуль данных от моего класса
> компилятор ругается на raise и Proxies
Сделать так, чтобы процедура Register находилась в модуле пакета, который инсталлируется в Delphi, и не попадает в приложение
DevilDevil (2007-12-07 14:16:00) [6]Мда... немного продвинулся...
Создал пакет.
Создал юнит с описанием класса-модуля данных
Добавил паблишед Integer-свойство
В процедуре Register вызываю RegisterCustomModule(TMyType, TCustomModule)
uses DesignEditors, DesignIntf;
компилятор стал ругаться на raise и Proxies
добавил в пакет модуль designide.dcp
покате скомпилировался
Создаю новое приложение
наследую модуль данных от моего класса
компилятор ругается на raise и Proxies
что делать?
DevilDevil (2007-12-06 20:05:00) [7]> Юрий Зотов © (06.12.07 19:36) [5]
Большое спасибо, буду пробовать.
Юрий Зотов (2007-12-06 19:36:00) [8]> DevilDevil © (06.12.07 19:12) [4]
1. Если просто нужен просто модуль данных, то ничего регистрировать не надо. Жмем File-New-DataModule и наслаждаемся жизнью. Причем без всяких выкрутасов в коде (совершенно, кстати, непонятных и на фиг не нужных), а также и без всяких чудес типа "начал грузить Color, Font, PopupMenu".
2. Регистрация модуля данных нужна только тогда, когда Вы хотите иметь модуль данных с нестандартными свойствами в Инспекторе Объектов. Регистрируется он не как обычный компонент (кстати, где это Вы нашли модуль данных в палитре?), для этого есть специальная процедура, которую надо вызывать в процедуре register пакета. Для форм эта процедура называется RegisterCustomModule, а как для модулей данных - честно говоря, не помню, давно с этим разбирался и уже подзабыл.
DevilDevil (2007-12-06 19:12:00) [9]> Юрий Зотов © (06.12.07 05:08) [2]
Спасибо. Как зарегистрировать TMyType?
P.S. не хотелось бы, чтобы мой Датамодуль появлялся на палитре компонентов.
> icWasya © (06.12.07 12:20) [3]
Вызывает у меня сомнения... подобный комментарный метод.
icWasya (2007-12-06 12:20:00) [10]В файле проекта должно быть указано, что TMyType тоже данамодуль
Unit2 in 'Unit2.pas' {TMyType: TDataModule};
Юрий Зотов (2007-12-06 05:08:00) [11]> в Инспектор Объектов должно добавиться событие OnSomeEvent, но не
> добавляется.
И не должно. Нет регистрации TMyType.
DevilDevil (2007-12-06 01:29:00) [12]хммм... закрыл Delphi, открыл снова проект...
получил огромную кучу свойств и событий... очень интересно!