Перейти к содержанию
Fire Monkey от А до Я
  • 0

какие евенты нужно использовать ?


chaplin.u@gmail.com

Вопрос

У меня есть компоненты ( чекбоксы , комбобоксы..)  значение которых я устанавливаю програмно или вручную.  OnChange не различает как его поменяли ( вручную юзером или программа прочитала).

какие евенты нужно использовать чтобы было понятно я получил это от юзера или прочитал програмно.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Программное изменение обычно используется при инициализации.
Чаще всего требуется, чтобы "программное изменение" не вызывало onChange и что-либо в этом духе. Это просто не нужно, поскольку вы и так знаете, что вот в этот момент времени значение меняется. Посему - срабатывание события отключают. Например, так:

var
  OldOnChange: TNotifyEvent;
begin
  OldOnChange:=myContol.OnChange;
  try
    myControl.OnChange:=nil; // вырубили обработчик события
    myControl.чего-то-там; // делаем то, что потенциально может вызвать onChange
  finally
    myControl.OnChange:=OldOnChange; // восстановили его
  end;
end;

Если после подобных манипуляций нужно вызвать "штатный" обработчик - в коде можно это сделать, например, так:

OldOnChange(myControl); // и вот здесь, если все-таки требуется что-то различать, стоит использовать, например, Nil в качестве Sender-а

И в самом обработчике уже проверять Sender-а, и в зависимости от него - выполнять нужные действия.

Изменено пользователем kami
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...