Страница 1 из 1

Проверить если кнопка нажата на другой форме

СообщениеДобавлено: 09.09.2015 14:16:23
jenny
Всем здравствуйте, возник вопрос. Хотелось бы проверить если кнопка нажата на другой форме. Знаю ответ возможно легкий, но я в этом новичок :). Пыталась что то вроде этого:
Код: Выделить всё
if Form2.button.click = true then
begin
function...
end;


но тут выскакивает ошибка. Очень нужна ваша помощь :(

Re: Проверить если кнопка нажата на другой форме

СообщениеДобавлено: 09.09.2015 15:46:41
serg_iv
а почему не ловите событие от той кнопки, которая на другой форме?

Re: Проверить если кнопка нажата на другой форме

СообщениеДобавлено: 09.09.2015 16:09:27
jenny
дело в том что при нажатии на кнопку 1 на форме А выскакивает форма Б со всеми функциями, при нажатии на кнопку 2 выскакивает так же форма Б но с ограниченными функциями, например скрыты пару strgrid's или memo's. Так вот я думала на форме Б проверять нажата ли кнопка и например на методе OnFormShow, при нажатии определенной кнопке на форме А скрывать ненужные функции...

Re: Проверить если кнопка нажата на другой форме

СообщениеДобавлено: 09.09.2015 17:02:49
Лекс Айрин
jenny, имхо, слишком запутанно. Проще, просто в обработчике кнопок предусмотреть сокрытие/отображение нужных компонент. Если неохота чтобы это видели пользователи, то запускайте форму скрытой, а после окончания подготовительной работы отображайте.

Re: Проверить если кнопка нажата на другой форме

СообщениеДобавлено: 10.09.2015 01:11:26
wavebvg
Ну в Lazarus-е есть цикл обработки сообщений. Можно перехватить все сообщения приложения, только для этого придется дописывать текущую реализацию виджетов или писать грубый хак для DeliverMessage. Можно переопределить WndProc, к примеру. Все это просто, но некрасиво.
Лучше завести состояния у диалога с настройками и выставлять состояния перед показом формы.

Re: Проверить если кнопка нажата на другой форме

СообщениеДобавлено: 10.09.2015 07:42:20
Снег Север
jenny писал(а):дело в том что при нажатии на кнопку 1 на форме А выскакивает форма Б со всеми функциями, при нажатии на кнопку 2 выскакивает так же форма Б но с ограниченными функциями, например скрыты пару strgrid's или memo's. Так вот я думала на форме Б проверять нажата ли кнопка и например на методе OnFormShow, при нажатии определенной кнопке на форме А скрывать ненужные функции...
В профессионально сделанных программах реализуют именно так, как написал выше Лекс Айрин - в вызывающем модуле, по нажатию кнопки, показывают или скрывают компоненты на вызываемой форме. Напрямую, или вызовом соответствующей функции из вызываемого модуля перед показом его формы.