| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Передача параметра для окна в многооконном прил. |
| Автор: php5 13.1.2009, 16:36 |
| Имеется многооконное приложение для роботы с БД при клике по кнопке открывается окно в которое загружаются данные из БД, так вот необходимо как то пере появлением содержания окна предать id для выборки из базы данных, с учетом того что таких окон одновременно может быть открыто большое количество |
| Автор: MAXIQ 13.1.2009, 16:58 |
| Окно создается на базе класса ? Может конструктор с параметрами замутить? |
| Автор: orthrus 13.1.2009, 17:02 |
| Как окно создаешь? |
| Автор: php5 13.1.2009, 17:48 |
| Окно создается классически Application->CreateForm(__classid(TForm1), &Form1); Form1->Show(); |
| Автор: vikaz 14.1.2009, 07:52 |
| Когда мне надо было что-то подобное, то я делал класс, и в этом классе создавал окно динамически и прописывал весь функционал. Естественно, в конструктор мог передать любые параметры. |
| Автор: vikaz 19.4.2009, 16:16 |
| Всем добрый день! Решил написать здесь, так как темы взаимосвязаны. У меня вопрос в сл. Как передать параметр в форму с нами поделился многоуважаемый Vyacheslav. Но вот как забрать из этой формы какой нибудь параметр, int, char, AnsiString и вернуть этот параметр в то место откуда он был вызван? Заранее спасибо. На данный момент, я просто создал переменную extern и пробрасываю через неё. Но может есть более правильное и рациональное решение данной проблемы? |
| Автор: Anikmar 19.4.2009, 20:38 | ||
Я передаю вместе с параметрами адрес структуры, в которую форма мне все что нужно пишет. |
| Автор: vikaz 19.4.2009, 20:53 |
| Anikmar спасибо большое за подсказку, не сообразил. |
| Автор: Лапоть 19.4.2009, 21:57 | ||
А свойства класса для этой формы (в том числе - и добавленные) никто пользовать не запрещает. |
| Автор: vikaz 20.4.2009, 08:25 |
| Anikmar, Лапоть Просто у меня вот в чем возникла проблема. Я могу вернуть параметр или структуру, но это только когда какая-то операция делается в конструкторе. А если мне нужно вернуть параметры, когда я уже сделал какие-то действия на форме, вот так у меня возвращаются пустые значения и это понятно. Вот как это победить? Заранее спасибо! |
| Автор: mrbrooks 20.4.2009, 08:54 | ||||
То бишь если продолжить мысль камрада - юзай переменные описанные в классе используемой формы. |
| Автор: vikaz 20.4.2009, 09:30 |
| Понятно, все гениальное в ...... Все спасибо! |
| Автор: artsb 20.4.2009, 12:50 | ||||||||
Объявляете в .h файле второй формы структуру, создаёте на неё указатель в закрытой области класса. Также как вам советовали, передаёте в конструкторе указатель на структуру, которую нужно заполнить и присваиваете этот указатель указателю второй формы. В общем, что-то типа: Unit2.h
Unit2.cpp
Unit1.cpp
Естественно, нужно делать кучу проверок, но я не стал их писать. |
| Автор: vikaz 20.4.2009, 18:52 |
| artsb, спасибо огромное!!! |
| Автор: vikaz 20.4.2009, 20:24 |
| Камрад, если не сложно, разъясни код. Чего то в голове нет и не могу сложить картину в одно целое. Почему он работает? |
| Автор: Anikmar 20.4.2009, 22:14 |
Достаточно сложно разъяснить такой код. Сложно найти - что разъяснять. Что вам непонятно? |
| Автор: artsb 21.4.2009, 00:39 | ||||
Сначало, в Unit2.h описываем новый тип данных, представляющий собой структуру и указатель на объект такого типа в закрытой области класса. Когда мы подключаем Unit2.h в Unit1.h этот тип данных становится доступным и там. Создаём новый конструктор для второй формы, где в качестве второго параметра будет передаваться структура. В реализации просто пишем:
Таким образом, указатель, объявленный во второй форме, ссылается теперь на структуру, созданную в первой. При нажатии Button1 на первой форме, создаём объект определённого нами типа, создаём вторую форму и передаём в качестве второго параметра конструктора указатель на наш объект. В обработчике нажатия Button1 на второй форме, заполняем поля нашего объекта данными и форма закрывается. В первой форме проверяем, была ли нажата кнопка (а, следовательно, заполнена наша структура). Если да, выдираем инфу из нашей структуры и куда-нибудь её засовываем. В самом конце оставляем за собой порядок: удаляем наш объект и вторую форму. Ну вот, вроде, всё... |
| Автор: vikaz 21.4.2009, 05:33 |
| Огромное спасибо за разъяснение. Всем по плюсу в бортовой журнал. |
| Автор: THandle 21.4.2009, 11:16 |
| Иногда может понадобится и метод с сообщениями Windows, к примеру. Создавать свои сообщения для каких-то уведомлений. Но это конечно больше используется в двух разных программах, либо в прогах с плагинами. Но иногда бывает удобно и в просто несколькоформенном приложении задействовать такой механизм |
| Автор: artsb 21.4.2009, 11:46 |
| THandle, пример в студию! |