![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
Есть Form1 с двумя пунктами меню MenuItem1,2
Есть Form2 с двумя едитами Edit1,2 Надо чтобы при нажатии на MenuItem1 открывалась Form2 с Edit2.visible:=false, а при нажатии на MenuItem2 открывалась Form2 c Edit1.visible:=false; Можно сделать на процедуру нажатия меню Menuitem1 код
Но мне надо знать из формы 2 при открытии формы (например в procedure TForm2.FormShow(Sender: TObject); ) каким пунктом меню было вызвано Form2.ShowModal; Подозреваю что можно через Sender но не знаю как. |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Собственно, чего тут знать? если Edit2.Visible = false то Menuitem1 и наоборот.
|
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
superVad, это если я из Form1 это значение задам. Я же хочу задавать это значение из Form2 в зависимости от того пункта меню на Form1 которым была открыта Form2.
|
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
В Form2 создаешь property. До вызова ShowModal заполняешь эту пропертю. В FormShow считываешь. Как-то так:
Form1
Form2
Правда мне не очень нравится обращение к Form1 из метода TForm2.FormShow. Возможно я бы сделал через Tag или еще как-нибудь. Но общий принцип, думаю. понятен. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Как я понял - надо всю логику перенести в Form2. Тут я могу только какие то свои мысли написать. Привязываться к Menuitem - плохо. Есть две причины. Возможно, потом надо будет этот же экшн (желательно, что бы айтим вызывал экшн из ЭкшнМенеджера или ЭкшнЛиста) вызывать еще и из контекстного меню и с панельки и с клавиатуры... Формы не должны знать ничего друг про друга - инкапсуляция, такое всякое... Т.е. плохо когда Form1 обращается к эдитам Form2 и плохо когда Form2 знает про Menuitem Form1. Как сделал бы я: Убрал Form2 из автосоздания. Создавал и показывал Form2 через классовый метод (если интересно могу подробнее, я тут где то про это уже писал). Ну и собственно для каждого варианта вызова: или передавал разные параметры в этот классовый метод, или сделал несколько классовых методов для каждого случая. |
|||
|
||||
| Агрох |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.4.2013 Где: Москва Репутация: 3 Всего: 6 |
В Form2 добавь процедуру
Ну и из Form1 вызывай не Form2.ShowModal а Form2.MyShowModal(SomeIndex); Можно аналогично предложенному Poseidonом:
Ну и вызов при нажатии кнопки будет
--------------------
Putin here, Putin there, Putin almost everywhere! |
||||||
|
|||||||
![]()
|
| Правила форума "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. |