Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Синтаксис ссылки на событие

Delphi , Компоненты и Классы , Свойства и События

Синтаксис ссылки на событие

Автор: Kurt

Я хочу проверить значение события, чтобы убедиться, что оно указывает в настоящий момент на определенную функцию.

По всей видимости вам придется использовать две временные переменные. Попытайтесь сделать следующее:


var
  ClickMethod: TNotifyEvent;
  B1Click: TNotifyEvent;
...
ClickMethod := Button1.OnClick;
B1Click := Button1Click;
if @ClickMethod = @B1Click then 
  messagebeep(0);

Here's the translation of the provided text into Russian:

Код, который вы предоставили, пытается проверить, являются ли два обработчика событий одинаковыми. Однако, в Delphi есть более эффективный способ сделать это.

В Delphi тип TNotifyEvent представляет собой обработчик события для событий, таких как OnClick, OnMouseDown и т.д. Когда вы назначаете обработчик события для контрола, вы не назначаете адрес функции, аrather ссылку на функцию. Поэтому сравнивать адреса двух обработчиков событий с помощью @ClickMethod = @B1Click не будет работать так, как ожидалось.

Вместо этого можно использовать событие ObjectAfterConstruction и хранить оригинальный обработчик события в переменной. Затем, когда вы хотите проверить, является ли текущий обработчик события тем же, что и оригинальный, можно просто сравнить две переменные.

Вот пример, как это можно сделать:

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    FOriginalButtonClick: TNotifyEvent;
  end;

var
  Form1: TForm1;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOriginalButtonClick := Button1Click;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Assigned(FOriginalButtonClick) and (FOriginalButtonClick = Button1Click) then
    MessageBeep(0);
end;

В этом примере Button1Click - это оригинальный обработчик события. Когда вы назначаете новый обработчик события для Button1.Click, он заменит оригинальный. Если вы хотите проверить, является ли текущий обработчик события тем же, что и оригинальный, можно сравнить FOriginalButtonClick с текущим Button1Click.

Автор Kurt описывает синтаксис ссылки на событие в Delphi, используя временные переменные для сравнения значений событий.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Свойства и События ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 11:31:12/0.0061829090118408/0