• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Как отследить изменение содержания отдельных полей на форме?

  • Автор темы Автор темы jeckp
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
J

jeckp

Добрый день.

У меня есть форма, представляющая собой лист настроек для программы. На ней примерно с десятка два "существенных" и "не существенных" управляющих полей: Edit-ов, Checkbox-ов и RadioButton-ов. Для удобства (как мне кажется) я сотворил кнопку "Применить", которая должна активироваться только при изменении "существенных" управляющих полей. Сейчас я контролирую изменение кождого такого управляющего поля и в соответстующем методе изменю флажок состояния. Т.е. примерно так

procedure TMainForm.ButtonClick(Sender: TObject);
begin
ФлагКонтроляИзменений := Истина;
end;

Но мне кажется - это не совсем удачное решение т.к. код меняется, гдето чтото забыл поменять и потом ловишь глюк два дня. Я хотел написать некую процедуру в которой перечислить все поля, которые необходимо контролировать на изменения и в случае такого события изменять флаг.
Подскажите можно ли это сделать и как?
 
Можно сделать обработчик вида
procedure TMainForm.OnUpdateControl(Sender: TObject);
begin
ФлагКонтроляИзменений := Истина;
end;
и установить его через редактор свойств на соответствующие компоненты. Можно сделать свои компоненты на основе стандартных с аналогичным обработчиком ну и т.д.
 
А почему бы на кнопку не повесить Action и унего в обработчике не написать:

Код:
 MyAction.Enabled := (Edit.Text <> OldText) or (myCheckBox.Checked <> Oldchecked) и т.д.

Тогда при появлении новых контролов вы просто будете дописывать туда условия и всё будет работать автоматом....
 
Может я торможу, но как это решение поможет, если изначально кнопка заблокирована и активироваться она будет только после изменения Edit или CheckBox, т.е. обработчик Action не будет вызван вообще.
 
Причём здесь вызван обработчкик ?

Разговор шёл о возможности енэйбла и дизэйбла кнопки .. а для этого Action как нельзя лучше подходит... Одно из условий выполнится и кнопка включится .. если ни одно не выполнено будет задизэйблена...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab