При работе с формой и кнопками в Delphi, зачастую возникает необходимость сохранить их имена для дальнейшего использования в программе. Например, при обработке нажатия на кнопку, может быть полезным занести имя этой кнопки и формы, на которой она размещена, в переменные для последующей обработки или для использования в логике программы.
Проблема
Рассмотрим типичную ситуацию: на форме fLayOut1 расположена кнопка bMod2. При нажатии на кнопку необходимо сохранить имена формы и кнопки для дальнейшего использования.
Решение
Для получения имени текущей формы, к которой принадлежит обработчик события, можно напрямую обратиться к свойству Name объекта. В случае с обработчиком нажатия кнопки, можно использовать параметр Sender, который обычно является ссылкой на объект, вызвавшего событие. Поскольку Sender имеет тип TObject, который не имеет свойства Name, необходимо привести тип Sender к типу, который имеет это свойство. В большинстве случаев, это будет тип самого объекта, вызывающего событие, или, если не уверены, можно использовать общий предок TComponent.
Вот пример кода, который сохраняет имена формы и кнопки:
procedure TFLayout1.bMod2Click(Sender: TObject);
var
azone: string;
adept: string;
begin
azone := Self.Name; // имя текущей формы
adept := TButton(Sender).Name; // имя кнопки, вызвавшей событие
// Для демонстрации результата используем ShowMessage
ShowMessage('Form name: ' + azone + #10 +
'Sender name: ' + adept);
end;
Альтернативные подходы
Если требуется получить имя родительского компонента кнопки, например, если кнопка расположена в TGroupBox или TPanel, можно использовать следующий подход:
var
ParentClass: TWinControl;
begin
ParentClass := Button1.Parent;
while not (ParentClass is TForm) do
ParentClass := ParentClass.Parent;
ShowMessage(ParentClass.Name); // имя родительского компонента кнопки
end;
Также, если вы не создаете композитный компонент, можно использовать свойство Owner кнопки, которое всегда указывает на форму:
В данной статье мы рассмотрели, как сохранить имена формы и кнопки в Delphi при обработке нажатия на кнопку. Представлены различные подходы, включая приведение типа Sender к типу TButton или TComponent для получения имени, а также использование свойства Owner кнопки для получения имени формы. Эти методы могут быть полезны в различных сценариях разработки под Delphi.
Описаны методы сохранения имен формы и кнопки в Delphi для использования в процедурах, связанных с их событиями.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS