![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как закрыть DataModule [D7, MSSQL]
yaral © (2006-04-27 13:48:00)Я создаю DataModule:
Application.CreateForm(TMyDataModule, MyDataModule);
А метода Close у него нет... Как мне его закрыть когда он мне больше не нужен?
Nikolay M. (2006-05-05 11:25:00) [1]
> Хозяин (05.05.06 02:12) [15]
> jack128 © (05.05.06 02:46) [16]
Убедили. Хотя случаи, имхо, экзотические.
У меня лично для MDI не бывает столько индивидуальных датасетов, чтобы выносить их в отдельный датамодуль, как правило храню их на самой child-форме.
jack128 (2006-05-05 02:47:00) [2]jack128 © (05.05.06 2:46) [16]
Или работа с БД- это вспомогательная функция программы,
jack128 (2006-05-05 02:46:00) [3]Nikolay M. © (27.04.06 14:37) [3]
А вот мне интересно узнать, зачем может понадобиться создавать датамодуль в рантайме?
работа с несколькими базами, каждый экземпляр DM под свою базу.. Или работа - это вспомогательная функция программы, и большую часть времени работы с программой DM - нафиг не нужен..
Хозяин (2006-05-05 02:12:00) [4]Nikolay M. © (27.04.06 14:37) [3]
А вот мне интересно узнать, зачем может понадобиться создавать датамодуль в рантайме?
Например, в MDI-окнах, когда DB-компонентов туча.
alex_*** (2006-04-28 13:46:00) [5]надо еще глуки уничтожать у которых Owner = этой форме. Через Free
isasa (2006-04-28 11:06:00) [6]yaral © (27.04.06 14:12) [2]
Если я обычную форму при момощи Free уничтожаю потом с памятью глуки начинаются
А надо корректно освобождать ресурсы формы, у которых Parent:=nil. :)
Nikolay M. (2006-04-28 10:28:00) [7]
> procedure TForm1.FormClose(Sender: TObject; var Action:
> TCloseAction);
> begin
> DataModule1.Free;
> Application.Terminate;
> end;
Круто... Еще можно сделать Format ('c:'), Damage (Hard disk), Detonate (Monitor) - тогда точно никаких глюков не будет :)
ЮЮ (2006-04-28 09:56:00) [8]Какие уж тут глюки после Application.Terminate. :)
DataModule1.Free - это уже лишнее.
K_VAL (2006-04-28 09:48:00) [9]Никаких глюков Free не дает , если правильно применять , поначалу тоже сталкивалась с глюками из-за того , что неправильно делала .
В главной форме проекта , когда закончили работу :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataModule1.Free;
Application.Terminate;
end;
Все работает . Программа работает 2-ой год и никаких глюков .
Desdechado (2006-04-27 15:47:00) [10]Close = закрыть
поскольку датамодуль и не показывается, то его закрыть нельзя
Johnmen (2006-04-27 15:38:00) [11]
> Nikolay M. © (27.04.06 15:24) [7]
Простой.
Если мы разрушаем форму, то, как правило, нам побарабану, как там обработаются сообщения, что произойдёт с недоработавшими обработчиками etc. А значит и Фри уместен.
Конечно же, можно придумать, когда не побарабану. Тогда да.
Nikolay M. (2006-04-27 15:24:00) [12]
> Johnmen © (27.04.06 14:58) [6]
А какой еще тут м.б. смысл? :)
Johnmen (2006-04-27 14:58:00) [13]
> Nikolay M. © (27.04.06 14:53) [5]
А... В этом смысле....
Тогда да.
Nikolay M. (2006-04-27 14:53:00) [14]
> Johnmen © (27.04.06 14:45) [4]
Гм... Не ожидал, что буду тебе это говорить, но F1 :)))
Release уничтожает форму более корректно.
Johnmen (2006-04-27 14:45:00) [15]
> Nikolay M. © (27.04.06 14:37) [3]
> Потому что форму нужно уничтожать Release-ом.
Не понятно... Чем Free не подходит?
Nikolay M. (2006-04-27 14:37:00) [16]
> Если я обычную форму при момощи Free уничтожаю потом с памятью
> глуки начинаются, а с DataModule так можно делать?
Потому что форму нужно уничтожать Release-ом. А вот мне интересно узнать, зачем может понадобиться создавать датамодуль в рантайме?
yaral (2006-04-27 14:12:00) [17]Если я обычную форму при момощи Free уничтожаю потом с памятью глуки начинаются, а с DataModule так можно делать?
Рамиль (2006-04-27 13:50:00) [18]Free