Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача данных запроса к БД из потока [D6, IB6.x, FireBird]


Страницы:   1 2 3

galexis ©   (2004-09-06 13:46:00) 

Пытаюсь работать с потоками (TThread). В потоке выполняется запрос к БД FireBird. А что делать с набором данных после этого не знаю. Как передать их в основной поток? Сейчас провожу эксперименты с SendMessage, но думаю что это не выход, да и с ним у меня пока еще ничего не вышло. Приложение у меня MDI, а поток создается из дочернего окна. Как обратиться к элементу редактирования TEdit, который расположен в таком окне?
Помогите разобраться пожалуйста.


Reindeer Moss Eater   (2004-09-06 15:49:00) [41]

Никуда наборы данных не передаются.
Они остаются там где были созданы.
Вплоть до закрытия и деструктора.


galexis   (2004-09-06 15:48:00) [42]


> Reindeer Moss Eater ©

Ну задача у меня стоит как передать набор данных из вторичного потока в основной. А уж все остальное это попутно.


Reindeer Moss Eater   (2004-09-06 15:47:00) [43]

вот если только его расположить на MainForm.

Он там один, а MDI Child'ов - много.
Как делить будем?


galexis   (2004-09-06 15:46:00) [44]


> Romkin ©  

Пока еще до меня не дошло в полной мере, то что вы предложили. Но, по моему, если я расположу TClientDataset на моей форме FindForm, я и к этому компоненту не смогу обратиться. вот если только его расположить на MainForm.


Reindeer Moss Eater   (2004-09-06 15:43:00) [45]

Дык у тебя вопрос про то как найти экземпляр формы.

При чем здесь вся предыдущая канитель со вторичными потоками?
К делу не относящаяся.


galexis   (2004-09-06 15:41:00) [46]


> Reindeer Moss Eater ©

Разница в том, что нельзя обратиться к TDBGrid обычным образом, т.е. нельзя написать FindForm.DBGrid1.DataSource.
Форма создается в процессе работы приложения и не имеет имени, к ней можно обратиться как MainForm.MDIChildren[0] Как обратиться при этом к конкретному компоненту, а мне надо DBGrid я не знаю. Точнее знаю. Надо сделать его активным и обращаться к нему как MainForm.MDIChildren[0].ActiveControl. Но это не очень хорошо.


Reindeer Moss Eater   (2004-09-06 15:31:00) [47]

Это понятно, а если TDBGrid находится на форме FindForm, которая MDIChild?

А какая разница где именно она "находится"?


Romkin   (2004-09-06 15:29:00) [48]

Элегантный выход - TClientDataset. Удивлены? Все просто, в Execute потока создавайте модуль данных с T...Query и TDatasetProvider (именно в execute ;) ). Делайте, что угодно. Потом просто передайте данные из провайдера в TClientDataSet на форме (эссно в Syncronize). И все. У вас есть набор данных, с которым вы можете делать все. Уже в основном потоке :))


galexis   (2004-09-06 15:16:00) [49]


> Reindeer Moss Eater ©

Это понятно, а если TDBGrid находится на форме FindForm, которая MDIChild?


Reindeer Moss Eater   (2004-09-06 14:58:00) [50]

TDataSource + TDBGrid


galexis   (2004-09-06 14:43:00) [51]

Могу вот так сообщение переслать
SendMessage(MainForm.MDIChildren[0].ActiveControl.Handle,WM_SETTEXT,0,Integer(PChar(cnt)));
Но это не выход. А как можно передать набор данных и поместить его в DBGrid?


galexis   (2004-09-06 14:29:00) [52]

>Карелин Артем © Вот к edit1212.text я и не могу обратиться.


galexis   (2004-09-06 14:28:00) [53]


> Digitman ©

Не могу обратиться к элементу TEditиз потока, ну например надо написать
FindForm.Edit1.Test:=...; Но Форма FindForm у меня MDIChild, т.е. к ней надо обращаться как
MainForm.MDIChildren[0]. А как обратиться к элементу Edit1 на ней?


Карелин Артем   (2004-09-06 14:15:00) [54]

Не надо сообщения мучать. Пиши просто edit1212.text:=запрос.поле1.какстрока в методе, который будешь вызывать посредством Synchronize


Digitman   (2004-09-06 14:13:00) [55]


> сообщение передается непосредственно в основной поток, а
> я к нему и обратится не могу, форма то дочерняя


???


galexis   (2004-09-06 14:05:00) [56]


> Карелин Артем ©  

Где бы прочитать в интернте про это. У меня есть распечатка главы "Создание многопоточных приложений" из какой то книги. В данный момент как раз открыта на Synchronize. С примером, где сообщение передается непосредственно в основной поток, а я к нему и обратится не могу, форма то дочерняя


Карелин Артем   (2004-09-06 13:51:00) [57]

Разберись с основами синхронизации потоков. Конкретно Synchronize


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо