![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поведение TEdit на модальной форме. [D7, WinXP]
wiser87 © (2009-07-15 08:37:00)Проблема такая: есть главная форма Form1 и модальная Form2. Form2 является редактором ini-файлов, которые используются в программе. На Form2 расположено более 20 компонентов TEdit.
Мне необходимо отслеживать любое изменение в них. В первый раз, когда вызывается Form2, изменения отслеживаются. Но стоит закрыть эту форму и открыть вызвать вновь, то программа перестает отслеживать изменения. Почему?
Вот код:
Процедура Tform2.MassivEdits создает массив из компонентов TEdit.
procedure Tform2.MassivEdits;
var
i: integer;
AComponent: TComponent;
begin
FEdits:=Tlist.Create;
for i := 1 to MaxInt do
begin
AComponent := FindComponent('Edit'+IntToStr(i));
if AComponent = NIL then break;
FEdits.Add(AComponent);
end;
end;
Процедура TForm2.EditChange (Sender:TObject) отвечает события (например, вывод текста в строке состояния), которые будут происходить в случае изменения любого TEdit.
procedure TForm2.EditChange (Sender:TObject);
begin
StatusBar1.SimpleText:='Были внесены изменения!';
end;
Процедура TForm2.Changes присваивает свойству OnChange всех компонентов TEdit вызов процедуры EditChange.
procedure TForm2.Changes;
var
i: integer;
begin
for i:=0 to FEdits.Count-1 do
begin
TEdit(FEdits[i]).OnChange:=EditChange;
end;
end;
При показе Form2 формируется массив и присваивается свойство OnChange компонентам TEdit.
procedure TForm2.FormShow(Sender: TObject);
begin
MassivEdits;
Changes;
end;
При закрытие формы происходит высвобождение массива FEdits
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Fedits.Free;
end;
Помогите разобраться что не так?
Игорь Шевченко (2009-07-15 11:37:00) [1]
> Почему?
Запускаем из-под среды, ставим точки останова в указанных процедурах, смотрим, что выполняется при первом показе, смотрим, что при последующих показах.
clickmaker (2009-07-15 11:14:00) [2]> Помогите разобраться что не так?
а смысл этого массива в чем?
{RASkov} (2009-07-15 09:02:00) [3]> [0] wiser87 © (15.07.09 08:37)
> что не так?
Много чего не так.... для начала не ту конференцию выбрал...
Код ужасный, а проблема непонятная... Хоть и много написано :(
....
В данном случае не нужны ни MassivEdits; ни Changes; ибо едиты статические(т.е. в дизайнере присутствуют) поэтому и обработчик OnChange можно там же(в дизайнере) им и добавить... А если уж так хочется все это программно, то следует их переписать по нормальному...