![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
gesper |
|
||||||||||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
фраза была такая, а не только тот кусок, что ты привел.
Вызывается одна форма, а не несколько и надо правильно вернуть. С одной формы при одновременном вызове нельзя вернуть данные сразу в две формы, потому что вызов со второй перекроет вызов первой, даже если вы в "справочник" засунете адрес переменной, куда надо записать итог выбора. Модальность для режима выбора правильное решение, потому что идет команда "Установить значение", и некакие другие действия не должны мешать и перекрывать диалог выбора. Если нужно использовать "справочник" как просмотр данных, то пишется отдельная кнопка, которая вызывает его иначе. Можно передать просто адрес переменной в "Справочник" и вместо функции GetData справочник сам запишет запись в нужный адрес, но тогда это повлечет порчу данных, если нет блокировки через showmodal и пользователь перещелкниться в другое окно, его отвлекут, и он возьмет и кликнет другие данные, или попросту закроет окно, забыв выбрать данные, или перепутает окна, если сделать создание нескольких одинаковых окон. Одно окно, постоянно весящее в памяти без уничтожения, позволяет не только это все отфильтровать, но и сохранить свое состояние и содержимое при двух разных вызовах(к примеру выбор из дерева каталога не потребует искать все заново). Добавлено @ 13:36
примерно так можно unit
unit TFSpravocnic
unit data 1/2
Это сообщение отредактировал(а) gesper - 1.8.2013, 13:38 --------------------
...И приколется обломившийся и oбломится приколовшийся... |
||||||||||
|
|||||||||||
Poseidon |
|
||||||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
В ТЗ так и написано. Нужно вызвать одну форму, но никто не сказал, что ее должно быть можно вызвать только один раз. Поэтому и нужно предусмотреть вариант с вызовом одной формы, но несколько раз (отдельно для дада1, отдельно для дата2).
Добавлено через 8 минут и 5 секунд Кстати, я не проверял, не на чем сейчас, но по-моему в твоей SetField мы получим Incompatible types: 'Pointer' and 'TDataRecord'. Хотя могу и ошибаться. Это сообщение отредактировал(а) Poseidon - 1.8.2013, 13:52 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||||||
|
|||||||||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Я за другое. Программная реализация для меня не проблема. Я за пользователя. Пользователь вызвал окно выбора из окна А, потом из окна Б. Потом отвлекся, открыл другую программу, свернул все окна. Потом вернулся к работе. И упс, два одинаковых окна, каждое ожидает выбор данных, а какое куда эти данные вернет? -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
gesper |
|
||||||||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Я на работе, тут нет у меня компилятора проверить, а на память синтаксис не помню точно.
// все правильно, другой вариант показал просто. Открыть форму и чтобы она сама себя уничтожала при закрытии, а SetField должен быть описан так, чтобы передавалось не значение переменной, а адрес переменной куда писать данные, если будет сделан выбор. Ошибка только в том, что саму переменную забыл убрать из процедуры выше в глобальные формы. Пускай автор разбереться чего хочет, а там решение найдет. Добавлено через 2 минуты и 2 секунды
Я об этом писал выше, говоря про Showmodal и создание копий окна справки. --------------------
...И приколется обломившийся и oбломится приколовшийся... |
||||||||
|
|||||||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Не совсем так. У TApplication.CreateForm есть одна очень важная для проекта цель, которой нет у простого вызова конструктора формы. (с) Буквоед. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
Чучмек |
|
||||||||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
gesper это к Poseidon. Но он правильно говорит, про модальный режим речь не идет. А что нужно автору мы не знаем, он не уточнял. Модальный режим, возможно, подходящий, в данном случае, вариант, а может и нет.
Можно сделать псевдомодальный вызов.
Вызов
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||||||
|
|||||||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
![]() -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |