C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TDataModule превратился в наследника TForm, Пипец в цвете
olegenty
Отправлено: 18.08.2005, 11:26


Ветеран

Группа: Модератор
Сообщений: 2412



Суть: был у меня TDataModule. Но не нравилась мне его функциональность. Дай, думаю, сделаю так:
CODE

class CPluginDataModule: public TDataModule
{
private:
   const CCallback *m_pCallback;
   const HWND       m_hParentHandle;
protected:
   __property const CCallback *Callback = {read = m_pCallback};
   __property const HWND ParentHandle =   {read = m_hParentHandle};
public:
   __fastcall CPluginDataModule(Classes::TComponent *Owner,
                                const CCallback *Callback,
                                const HWND ParentHandle);
};


ну сделал. и занаследовал уже существующий DataModule (с существующим DFM) от сего класса.
дальше начались решечёные чудеса: в скомпилированном проекте начали происходить несуществующие события. расстроился, чуть на фекалии не изошёл. на всякий случай перезапустил C++ Builder и сделал Build EXE и DLL, с которой все эти неприятности начались. запускаю, и вижу офигенную мессагу: св-во dmPlanUnit->Color не существует. ну, странный, думаю, ты, модуль, твою мать, данных. я, типа, и сам знаю, что св-ва нету. дай, думаю, гляну-ко я на тебя. ну и открываю модуль данных. и вижу, что это уже форма!!!

чё за нахер?
olegenty
Отправлено: 18.08.2005, 11:45


Ветеран

Группа: Модератор
Сообщений: 2412



предположил, что дело всё в конструкторе. создал без "лишних" параметров. для чистоты эксперемента создал новый модуль данных. та же шняга. обидно две вещи: модуль данных придётся пересоздавать с нуля, а он отличался офигенной навороченностью. не хватало только того, что я хотел добавить. С++ Builder в рейтинге упал ниже Borland C++ 3.11 (тот хоть такой фигни не делал)
AVC
Отправлено: 18.08.2005, 12:15


Ветеран

Группа: Модератор
Сообщений: 1583



Такое бывает, когда далаешь Datamodule глобальным символом. Поробуй добавить в h описание
class PACKAGE TDM;
class TDM : public TDataModule

Без таких строк все нормально, пока не закрыл в редакторе Datamodule. Закрыл, открыл — стал формой. smile.gif Ох и попил он у меня когда-то крови. Для восстановления можно попробать ручками поправить представление "как текст".
GIZMO
Отправлено: 18.08.2005, 12:20


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (olegenty @ 18/08/2005, 11:26)
Суть: был у меня TDataModule. Но не нравилась мне его функциональность.

чё за нахер?

1. Воспользоваться репозиторием
2. Положить в пакет и сделать RegisterCustomModule



Присоединить изображение

Присоединить изображение

olegenty
Отправлено: 18.08.2005, 12:27


Ветеран

Группа: Модератор
Сообщений: 2412



Ну, восстановление оказалось тривиальным, просто нунаследовал его снова от TDataModule. Попробовал твой рецепт. Помогло. Сейчас проверю, нет ли тех самых "левых" событий, которые происходили "мимо" кода обработчиков...
olegenty
Отправлено: 18.08.2005, 12:30


Ветеран

Группа: Модератор
Сообщений: 2412



репозитарий не катит. с ним были другие проблемы, ну нафиг.

2 AVC, да, DesignTime проблема посредством твоего рецепта решилась, а вот Runtime проблема — нет...
olegenty
Отправлено: 18.08.2005, 12:50


Ветеран

Группа: Модератор
Сообщений: 2412



чё-то не пойму. на один сеанс работы Builder'а хватило счастья, а дальше всё то же.

потом буду разбираться, а сейчас вернусь к старинному способу.
AVC
Отправлено: 18.08.2005, 13:18


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

AVC, да, DesignTime проблема посредством твоего рецепта решилась, а вот Runtime проблема — нет...

А у меня она в runtime и не возникала ohmy.gif . Создаю модуль так
Писаное мной в DataModl.h +
#include "...DataModl.h"
try {
DM = new TDM(Application);
...

Да, естественно, модуль в пакете.

Отредактировано AVC — 18/08/2005, 12:19
olegenty
Отправлено: 18.08.2005, 14:08


Ветеран

Группа: Модератор
Сообщений: 2412



а у меня не в пакете, а в DLL. короче, пофигу, пока перебьюсь, потом всё равно добью.
Guest
Отправлено: 19.08.2005, 08:33


Не зарегистрирован







Если нужен свой TDataModule или свой TForm без репозитария
то смотри здесь
http://bcdev.narod.ru/Articles/FMPropeties.htm
http://bcdev.narod.ru/Articles/Expert.htm
olegenty
Отправлено: 20.08.2005, 09:43


Ветеран

Группа: Модератор
Сообщений: 2412



Спасибо, зачитал. Увы, у меня С++ Builder 6. как там у Булгакова? "Я в восхищении". От себя добавлю — от кривизны C++ Builder.

Вернуться в Вопросы программирования в C++Builder