Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2015, 19:43   #1
Kovalchuk.Dmytro
 
Регистрация: 16.01.2015
Сообщений: 7
Вопрос Оприделить через sender что показывает форму

Доброго времени суток, Господа!
Передо мною постала следующая задача, есть три формы
Форма 1 из объектом TButton при нажатии на кнопку показывает Форму3
Форма 2 из объектом TImage при нажатии на нее показывает также Форму3
Эти две формы запускаются одновримеено.
Нужно определить в событии Show формы3 какая из форм ее показала, или при нажатии на какой объект TButton или TImage была показана форма3.
Также прикладываю иходник проекта написанный на делфи7.
Вложения
Тип файла: rar Test.rar (245.9 Кб, 6 просмотров)
Kovalchuk.Dmytro вне форума Ответить с цитированием
Старый 16.01.2015, 19:54   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

в модуле с формой 3 напиши функцию её показа и передавай туда чего хошь.
я вообще так всегда делаю, ибо удобно и не захламляет основной код.
пример дать?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 16.01.2015, 19:57   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Просто в OnShow ни как. Можно перед Show в Tag формы что-то записать, или сделать public-свойство и через него параметр передавать, или сделать public-метод с параметром и к нему обращаться. Если форма создается динамически - переопределить конструктор или сделать свой с нужными параметрами. Вариантов много. min@y™ тоже дело предлагает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.01.2015, 21:08   #4
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Если бы в событие OnShow третьей формы передавался сэндер первой или второй формы, то работал бы такой код
Код:
ShowMessage((Sender as TForm).Name);
Но в событие передаётся сэндер третьей формы.
WinCoder вне форума Ответить с цитированием
Старый 16.01.2015, 21:53   #5
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

а что по вашему есть Sender ?
lomastr_ вне форума Ответить с цитированием
Старый 16.01.2015, 22:03   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я вообще так всегда делаю, ибо удобно и не захламляет основной код.
Поддерживаю. Я тоже похоже передаю обьект, который вызывал. В Форме делаю поле типа TWinControl и в него передаю Sender в обработчике-клике. А в форме уже проверяю к чему то поле указало.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2015, 01:07   #7
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Можно даже не TWinControl, а просто integer переменную в Unit3 записать.
Если вызываем Form3 из первой формы, то записывать единицу unit3.forma := 1 перед вызовом третьей формы,
а если из второй формы, то записывать двойку unit3.forma := 2 перед вызовом третьей формы.

А уже в третьей форме - смотреть чему равна forma и, соответственно, выполнять какие надо действия в зависимости от forma.
blackstrip вне форума Ответить с цитированием
Старый 17.01.2015, 02:57   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,881
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Поддерживаю. Я тоже похоже передаю обьект, который вызывал. В Форме делаю поле типа TWinControl и в него передаю Sender в обработчике-клике. А в форме уже проверяю к чему то поле указало.
Даже когда возможных сендеров всего два?
Уже почти, но ещё не очень Как два программиста хлеб пекли
northener вне форума Ответить с цитированием
Старый 17.01.2015, 03:11   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Даже когда возможных сендеров всего два?
По тому сендеру из вызывающей формы много чего можно вытащить без необходимости передачи кучи параметров
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.01.2015, 09:57   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Даже когда возможных сендеров всего два?
Да. Ибо во-первых удобно, а во-вторых - на перспективу. Могут еще штук 10 добавиться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Делфи] изменение свойства объекта через sender tobject POCOMAXA Помощь студентам 3 20.06.2013 21:39
не могу оприделить движок w1nner77 HTML и CSS 4 18.10.2012 15:36
Оприделить имя некоторых устройств Lauri Общие вопросы Delphi 5 29.05.2012 23:31
что и где нужно прописать чтобы при добавление одежды через форму на Delphi она отображалась в таблице склад студенточка! Помощь студентам 0 14.12.2011 16:35
Действие проседуры TForm1.Button2Click(Sender: TObject); на что распространяется? vedro-compota Общие вопросы Delphi 14 01.05.2010 21:22