Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.28;
Скачать: CL | DM;

Вниз

использовать IBQuery в разных юнитах   Найти похожие ветки 

 
Fynjy   (2008-08-21 11:02) [0]

Здраствуите! такое дело: есть две формы, в форме1 есть IBQuery и DBGrid,  как сделать так чтобы компанент IBQuery можно было бы использовать и в форме2 (коротко осути: В форме2 задаются параметры поиска, а в форме1 выводятся результаты).


 
Amoeba ©   (2008-08-21 11:05) [1]

Размести IBQuery и DataSource на DataModule.


 
Fynjy   (2008-08-21 11:08) [2]

А по другому никак?


 
Сергей М. ©   (2008-08-21 11:11) [3]

Вообще-то дейтамодули как раз для таких потребностей и предназначены.


> по другому никак?


Форма2 видит Форму1 ?

Тогда объяви в Форме1 публичное свойство типа TIBQuery и в его методе-геттере возвращай указатель на объект IBQuery.

Но вообще-то это изврат)


 
Fynjy   (2008-08-21 11:14) [4]

Действительно изврат, но спасибо за идею, буду пробовать!


 
MsGuns ©   (2008-08-21 11:26) [5]

>Сергей М. ©   (21.08.08 11:11) [3]
>Вообще-то дейтамодули как раз для таких потребностей и предназначены.

Бывают, однако, исключения. Например, в MDI может быть энное кол-во экземпляров одного и того же класса формы, а на форме свой собственный набор компонент доступа. В этом случае датамодуль не решает проблемы.

В целом же есть довольно простое правило, соблюдение которого позволяет сократить "непонятки" с "межмодульными" обращениями если не до нуля, то до минимума:
формы не должны обращаться друг к другу по явным ссылкам. Вместо этого используются сообщения либо внешние указатели (в главной форме или том же датамодуле) либо посредством процедур, в которых ссылки на объекты представлены параметрами.


 
Сергей М. ©   (2008-08-21 11:28) [6]


> MsGuns ©   (21.08.08 11:26) [5]
>
> Бывают, однако, исключения


Бесспорно.


 
Fynjy   (2008-08-21 11:32) [7]

Я сейчас работаю не со своим кодом, мне придется разбираться еще дольше если я перемещю эти компаненты в дата модуль. Друзья, вы наверное не учли что я начинающий самоучка, поэтому мне не доконца понятно, что делать - то?


 
Сергей М. ©   (2008-08-21 11:34) [8]


> что делать - то?


Для начала однозначно определиться со временем жизни/показа Формы2 и с ее модальностью ее показа ..


 
MsGuns ©   (2008-08-21 11:34) [9]

Внимательно прочитать и ПОНЯТЬ что написано в [5]


 
Fynjy   (2008-08-21 11:43) [10]

Вот что касается модальности, нужна форма (форма 2) немодальная и чтобы при клике на форме 1, форма 2 не пропадала.


 
Сергей М. ©   (2008-08-21 11:46) [11]

А если Ф1 будет разрушена узером, что должно произойти с Ф2 ?

Ведь она пользовала живой объект с живой Ф1, а теперь ни Ф1 ни объекта на ней не существует ..


 
Fynjy   (2008-08-21 11:51) [12]

Ф1 это MainFraim  на ней все завязано, так что если закрыть Ф1, то ничего не будет-это выход из программы


 
Сергей М. ©   (2008-08-21 12:07) [13]

Ну тогда, например, объяви и реализуй конструирующий метод Ф2, в которым предусмотрена передача доп.параметром ссылки на объект, с Ф2 будет работать после конструирования.

TForm2 = class(TForm)
..
private
..
 FIBQuery: TIBQuery;
..
public
..
 constructor Create(AOwner: TComponent; AQuery: TIBQuery);
..
end;

..

constructor TForm2.Create(AOwner: TComponent; AQuery: TIBQuery);
begin
 Create(AOwner);
 FIBQuery := AQuery;
end;

..

Form2 := TForm2.Create(Application, IBQuery);


 
Fynjy   (2008-08-21 13:09) [14]

Сергей М., спасибо!



Страницы: 1 вся ветка

Текущий архив: 2008.09.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
8-1186337227
DelphiKettle
2007-08-05 22:07
2008.09.28
Audio Tools Library


2-1218647371
Logger
2008-08-13 21:09
2008.09.28
Как вынести в отдельный юнит, свои Конструкторы? (constr)


15-1218192877
axis_of_evil
2008-08-08 14:54
2008.09.28
принимайте дипломированного лопуха


15-1217962116
No_Dead(w)
2008-08-05 22:48
2008.09.28
нет ли стандартной функции?(пхп)


2-1219244224
Сергей Кокоулин
2008-08-20 18:57
2008.09.28
Тестирование прокси соединения?