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

Вниз

Как обуздать TDataModule ?   Найти похожие ветки 

 
DevilDevil   (2007-12-06 01:24) [0]

Вопрос Датамодулей меня интересует давно.

Сегодня попробовал... он почему то начал грузить свойства 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-06 01:29) [1]

хммм... закрыл Delphi, открыл снова проект...
получил огромную кучу свойств и событий... очень интересно!


 
Юрий Зотов ©   (2007-12-06 05:08) [2]

> в Инспектор Объектов должно добавиться событие OnSomeEvent, но не
> добавляется.

И не должно. Нет регистрации TMyType.


 
icWasya ©   (2007-12-06 12:20) [3]

В файле проекта должно быть указано, что TMyType тоже данамодуль
Unit2 in "Unit2.pas" {TMyType: TDataModule};


 
DevilDevil ©   (2007-12-06 19:12) [4]

> Юрий Зотов ©   (06.12.07 05:08) [2]

Спасибо. Как зарегистрировать TMyType?
P.S. не хотелось бы, чтобы мой Датамодуль появлялся на палитре компонентов.

> icWasya ©   (06.12.07 12:20) [3]
Вызывает у меня сомнения... подобный комментарный метод.


 
Юрий Зотов ©   (2007-12-06 19:36) [5]

> DevilDevil ©   (06.12.07 19:12) [4]

1. Если просто нужен просто модуль данных, то ничего регистрировать не надо. Жмем File-New-DataModule и наслаждаемся жизнью. Причем без всяких выкрутасов в коде (совершенно, кстати, непонятных и на фиг не нужных), а также и без всяких чудес типа "начал грузить Color, Font, PopupMenu".

2. Регистрация модуля данных нужна только тогда, когда Вы хотите иметь модуль данных с нестандартными свойствами в Инспекторе Объектов. Регистрируется он не как обычный компонент (кстати, где это Вы нашли модуль данных в палитре?), для этого есть специальная процедура, которую надо вызывать в процедуре register пакета. Для форм эта процедура называется RegisterCustomModule, а как для модулей данных -  честно говоря, не помню, давно с этим разбирался и уже подзабыл.


 
DevilDevil ©   (2007-12-06 20:05) [6]

> Юрий Зотов ©   (06.12.07 19:36) [5]

Большое спасибо, буду пробовать.


 
DevilDevil ©   (2007-12-07 14:16) [7]

Мда... немного продвинулся...

Создал пакет.
Создал юнит с описанием класса-модуля данных
Добавил паблишед Integer-свойство
В процедуре Register вызываю RegisterCustomModule(TMyType, TCustomModule)
uses DesignEditors, DesignIntf;
компилятор стал ругаться на raise и Proxies
добавил в пакет модуль designide.dcp
покате скомпилировался

Создаю новое приложение
наследую модуль данных от моего класса
компилятор ругается на raise и Proxies

что делать?


 
DrPass ©   (2007-12-07 15:48) [8]


> Для форм эта процедура называется RegisterCustomModule,
> а как для модулей данных

Она же и для модулей данных

> Создаю новое приложение
> наследую модуль данных от моего класса
> компилятор ругается на raise и Proxies

Сделать так, чтобы процедура Register находилась в модуле пакета, который инсталлируется в Delphi, и не попадает в приложение


 
DevilDevil ©   (2007-12-07 16:15) [9]

> DrPass ©   (07.12.07 15:48) [8]

> Сделать так, чтобы процедура Register находилась в модуле
> пакета, который инсталлируется в Delphi, и не попадает в приложение</>

я если честно, не понимаю этой формулировки.
прописать в файле *.dpk ?
или создать ещё один *.pas ?


 
DevilDevil ©   (2007-12-07 16:16) [10]

напутал с тегами, извиняюсь.


 
DevilDevil ©   (2007-12-07 16:42) [11]

Мне хотелось бы, чтобы это модуль данных и ряд других компонентов содержался в одном пакете.

Ну и чтобы их можно было использовать ))


 
DevilDevil ©   (2007-12-07 16:57) [12]

Всё, разобрался.

Всем большое спасибо за помощь!



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

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

Наверх




Память: 0.5 MB
Время: 0.018 c
9-1164757810
_Andru_
2006-11-29 02:50
2007.12.30
Кому-то нужны сырцы двигла?=)


15-1196249867
ocean
2007-11-28 14:37
2007.12.30
Excel


15-1196191309
Anatoly Podgoretsky
2007-11-27 22:21
2007.12.30
Заветы, советы и КИ и тормоза


2-1196935732
Scazzi
2007-12-06 13:08
2007.12.30
Помогите перевести string в keycode


2-1196332387
Kvendi
2007-11-29 13:33
2007.12.30
В качестве parent- а компонента рабочий стол