А в какой момент содержимое TEdit нужно считать "бывшим"?
Осмелюсь предположить, что Вы хотите сделать так:
Код:
var
Edit1_LastValue: string; //Не забудь инициализировать начальным значением
...
//при потере фокуса в TEdit
procedure TEdit1.OnExit(Sender: TObject);
begin
if Edit1_LastValue <> Edit1.Text then
begin
SomeProc;
Edit1_LastValue := Edit1.Text;
end;
end;
Т.е. Ваша процедура вызывается в тот момент, когда окончен ввод в поле (поле ввода теряет фокус), и новое значение запоминается.
Как-то так. Если таких полей несколько, тот тут как Вам будет удобнее:
1. Завести по переменной на каждое поле ввода
2. Сделать массив по числу таких полей ввода (хоть динамический, хоть статический) и определять в общей процедуре какое поле изменилось, например по свойству Tag.
3. Написать новый класс на основе TEdit с нужным функционалом.
4. Поискать на просторах готовый компонент с нужным функционалом.