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

Тема в разделе "Delphi - Компоненты", создана пользователем jeckp, 7 июл 2006.

Статус темы:
Закрыта.
  1. jeckp

    jeckp Гость

    Добрый день.

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

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

    Но мне кажется - это не совсем удачное решение т.к. код меняется, гдето чтото забыл поменять и потом ловишь глюк два дня. Я хотел написать некую процедуру в которой перечислить все поля, которые необходимо контролировать на изменения и в случае такого события изменять флаг.
    Подскажите можно ли это сделать и как?
     
  2. AnCC

    AnCC Гость

    Можно сделать обработчик вида
    procedure TMainForm.OnUpdateControl(Sender: TObject);
    begin
    ФлагКонтроляИзменений := Истина;
    end;
    и установить его через редактор свойств на соответствующие компоненты. Можно сделать свои компоненты на основе стандартных с аналогичным обработчиком ну и т.д.
     
  3. Barmutik

    Barmutik Гость

    А почему бы на кнопку не повесить Action и унего в обработчике не написать:

    Код (Text):
     MyAction.Enabled := (Edit.Text <> OldText) or (myCheckBox.Checked <> Oldchecked) и т.д.
    Тогда при появлении новых контролов вы просто будете дописывать туда условия и всё будет работать автоматом....
     
  4. AnCC

    AnCC Гость

    Может я торможу, но как это решение поможет, если изначально кнопка заблокирована и активироваться она будет только после изменения Edit или CheckBox, т.е. обработчик Action не будет вызван вообще.
     
  5. Barmutik

    Barmutik Гость

    Причём здесь вызван обработчкик ?

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

    AnCC Гость

    Ступил, каюсь...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей