Недавно меня попросили автоматизировать небольшую подпрограмму, которая представляла собой серию записей данных и любые две из четырех потенциальных кнопок, которые пользователь мог выбрать после просмотра анализа записи.Босс сказал, что когда пользователи видят, что анализ тратит время, так как пользователи неизменно выбирали номер один в списке кнопок, и он был готов согласиться с моими догадками для всех, кроме лучших его пользователей.Таким образом, он хотел, чтобы добавилась НОВАЯ серия кнопок, предлагающих «Обрабатывать автоматически», «Обрабатывать вручную» и «Обрабатывать индивидуально».Последняя кнопка просто запустит уже существующий код.Вторая кнопка по сути ничего не сделает и просто выйдет.Первая кнопка?Ну, вот в чем дело.
Я решил использовать пару флагов, а затем использовать автоматический путь, просто имитирующий нажатие любой дополнительной кнопки, основываясь на анализе.Проблема заключалась в том, что вызов Button1Click (Sender) был невозможен, поскольку процедура, выполняющая анализ, называлась RunAnalysis и не была привязана к конкретному объекту для прохождения объекта TObject.В конце концов я реорганизовал внутренности метода Button1Click в Button1Pressed, а затем вызвал THAT из Button1Click.Таким образом, я смог вызвать Button1Pressed из RunAnalysis.
Избегаемым путем было бы вызвать Button1Click (Nil).Я не пробовал, так как у меня было простое решение (кстати, спасибо Modelmaker).Но мой вопрос в том, сработала бы нулевая ссылка или это привело бы к катастрофе.Мог ли я вызвать более высокую функцию (случайно), у которой был отправитель, ТОЛЬКО чтобы иметь объект отправителя в вызове процедуры?Насколько важен объект Sender, если я не использую ничего, что действительно ссылается на Sender?
Сведения о системе: Delphi 7 в среде программирования Win 7 для использования в Windows XP.
Спасибозаранее за любую мудрость, GM