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

Вниз

Как обуздать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
2-1196128643
Abcdef123
2007-11-27 04:57
2007.12.30
2 вопроса по одной теме - печать файла в отчете.


2-1195211860
Yurij-7
2007-11-16 14:17
2007.12.30
Помогите с запросом


3-1188279724
dimaL
2007-08-28 09:42
2007.12.30
FLOAT в Firebird


2-1196857144
авыф
2007-12-05 15:19
2007.12.30
потоки


8-1172084201
ы
2007-02-21 21:56
2007.12.30
картинка над фоном





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