Ledenezz |
Отправлено: 17.03.2004, 12:47 |
|
Не зарегистрирован
|
Народ, помогите, возникает глупая ошибка, я уже сталкивалась с ней полтора года назад, ну а сейчас уже не помню как разрешила.
В общем дело вот в чем : в DataModule запихнула IBDataBase и IBTranaction, на форму — IBQuery, DataSource, DBGrid. К форме подкючила h-файл DataModul-я.
Теперь все это на меня ругается и кричит, что DataBase not assigned.
Как сию проблему можно побороть? |
|
Admin |
Отправлено: 17.03.2004, 14:27 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Так ведь 'DataBase not assigned' это не значит не найден.
Посмотрите в компонентах IBTranaction, IBQuery указан
ли правильно этот IBDataBase
|
|
Ledenezz |
Отправлено: 17.03.2004, 18:09 |
|
Не зарегистрирован
|
Спасибо за участие.
Все было нормально настроено все компоненты.
А решение данный проблемы, нашла в старых пометках — нужно DataModule в Project на первое место перед формой поставить.
Это я где-то еще видела, что по умолчанию если форма первой стоит, от компилятор обращается к форме -> косяки. |
|
olegenty |
Отправлено: 18.03.2004, 18:27 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
У меня для решения такого вопроса есть событие AfterInit (пользовательское), и его обработчик. Событие посылается главной форме перед
Application->Run();
Форма его обрабатывает, и всё пучком. Это более универсально.
|
|
olegenty |
Отправлено: 18.03.2004, 18:34 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Объявление:
CODE |
#define CM_INIT_COMPLETE (WM_APP + 1000)
//---------------------------------------------------------------------------
class Tfm : public TForm
{
...
protected:
void __fastcall AfterInitComptete(TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_INIT_COMPLETE, TMessage, AfterInitComptete);
END_MESSAGE_MAP (TForm)
};
|
Реализация
CODE |
void __fastcall Tfm::AfterInitComptete(TMessage &Msg)
{
... //Инициализирующие действия, в твоём случае, установка ссылок на объекты TDataModule...
}
|
Вызов:
CODE |
#include "..\Forms\FormMain.h" // у тебя — твой заголовочный файл формы
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(Tfm), &fm); // Создаётся форма
Application->CreateForm(__classid(Tdm), &dm); // Создаётся TDataModule
SendMessage(fm->Handle, CM_INIT_COMPLETE, 0, 0);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
|
Всё просто.
|
|
Ledenezz |
Отправлено: 19.03.2004, 18:43 |
|
Не зарегистрирован
|
to olegenty :
Спасибо, воспользуюсь вашим советом, чтоб в дальшейшем не сталкиваться с ентим |
|