![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
DYUMON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 17.6.2006 Где: Новосибирск Репутация: нет Всего: 3 |
Доброго всем времени суток. Возник такой вопрос.
допустим есть три формы дата1 дата2 справочник как организовать между ними общение, допустим открыты форма дата1 и дата2 затем из каждой формы вызывается форма справочник выбираются данные и необходимо правильно их вернуть в форму , из которой был вызов. пока это делаю через ид формы а на обратчике событий висит
но это если вызвать по одному разу формы дата1 и дата2 . а если их вызывают по несколько раз то тут начинается каша. |
|||
|
||||
xackera |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 17.6.2008 Где: USSR Репутация: нет Всего: нет |
Попробуйте форму справочник сделать динамической и создавайте новый экземпляр формы справочника при вызове из дата1 и дата2.
|
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
DYUMON, т.е. у тебя справочник сам записывает выбранные данные в соответствующую форму? Ну это как то не очень идеологически верно
![]() Выше xackera правильно предложил сделать справочник динамическим. От себя предложу - вызывать его классовой функцией, которая и будет возвращать результат. Как вариант, можно не делать справочник динамическим - просто написать отдельную функцию в каком то общем модуле, которая будет показывать этот справочник и возвращать выбранные данные (в виде записи например или объекта - если там больше одного значения). |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Тут в любом случае динамический вызов т.к. если делать статическую форму, то она у нас будет одна, а судя по этому:
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Или завершать предыдущий незавершенный вызов справочника "отменой"
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 5 Всего: 17 |
Всё, что я мог бы сказать по поводу этого вопроса, я уже сказал здесь:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=50045 Там-же приведён полностью рабочий пример, демонстрирующий сказанное. |
|||
|
||||
gesper |
|
||||||||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
unit1
unit form data 1/2
--------------------
...И приколется обломившийся и oбломится приколовшийся... |
||||||||
|
|||||||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
gesper, а где ты увидел что надо Showmodal? Та же 1С умеет открывать 100500 справочников и все они отнюдь не модальные.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
gesper |
|
|||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Покажите мне человека, который одновременно будет сразу в двух окнах что то выбирать. У него один справочник и как пользователь я бы не хотел что то по десять раз выбирать, раскрывать деревья и т.п., если передо мной в разные моменты открывается одна и та же форма. Нафиг ему создавать копии одной и той же формы? У него справочник это источник данных для другой формы, т.е. открыл "выбираются данные" и возврат в первую форму. ShowModal удобно реализует взможность отловить, что данные выбрали и нам нужно только их забрать. Вообщем, я показал как можно сделать, а идти или нет этим путем дело путника. --------------------
...И приколется обломившийся и oбломится приколовшийся... |
|||
|
||||
DYUMON |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 17.6.2006 Где: Новосибирск Репутация: нет Всего: 3 |
форма справочник вызывается методом
по идее да ни кто не будет вызывать из нескольких окон справочник но по опыту знаю что бывают любители открыть по 150 окон а потом удивлятся где что. думаю сделать проверку на
это хоть как то ограничет количество окон |
||||
|
|||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Замучаешься придумывать имена frmspravka, а потом замучаешься их проверять на nil. ![]() -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
gesper |
|
||||||||||||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Тогда у тебя ошибка, если в форме нету при закрытии ее нет опции "Action=cafree" в обработчике формы. Без проверки Assigned(frmspravka) у тебя создается копия класса формы, заменая адрес уже созданной формы в переменной, и связь с формой теряется, а без вызова free память не освобождается.
равносильно
Добавлено через 4 минуты и 5 секунд
Читай внимательно ТЗ автора темы. Для серьезных проектов определяется тип формы и данных в ней, чтобы знать что с ними могут делать. Не цепляйся к слову"Справочник", это трата времени, ты должен знать конкретные данные в форме и для чего они. Поскольку нас спрашивают как сделать форму, то возможно что справочник по факту "Каталог", к примеру. Добавлено через 5 минут и 24 секунды Глобальный TList его спасти бы мог, или прописать самоуничтожение при закрытии. --------------------
...И приколется обломившийся и oбломится приколовшийся... |
||||||||||||
|
|||||||||||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Решил быть дотошным? Ну читаем:
Добавлено через 1 минуту и 19 секунд Кстати, мало того что твой ShowModal не даст вызвать второй справочник, так вообще всю работу заблокирует пока эту третью форму не закроешь. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Poseidon ты прав, на модальный режим в тз ничего не указывает.
Но как узнать, какое окно и куда, должно вернуть данные, если одновременно открыто несколько экземпляров? -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |