Форум: "Начинающим";
Текущий архив: 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