Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.20;
Скачать: CL | DM;

Вниз

Поведение TEdit на модальной форме.   Найти похожие ветки 

 
wiser87 ©   (2009-07-15 08:37) [0]

Проблема такая: есть главная форма 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;


Помогите разобраться что не так?


 
{RASkov} ©   (2009-07-15 09:02) [1]

> [0] wiser87 ©   (15.07.09 08:37)
> что не так?

Много чего не так.... для начала не ту конференцию выбрал...
Код ужасный, а проблема непонятная... Хоть и много написано :(
....
В данном случае не нужны ни MassivEdits; ни Changes; ибо едиты статические(т.е. в дизайнере присутствуют) поэтому и обработчик OnChange можно там же(в дизайнере) им и добавить... А если уж так хочется все это программно, то следует их переписать по нормальному...


 
clickmaker ©   (2009-07-15 11:14) [2]

> Помогите разобраться что не так?

а смысл этого массива в чем?


 
Игорь Шевченко ©   (2009-07-15 11:37) [3]


> Почему?


Запускаем из-под среды, ставим точки останова в указанных процедурах, смотрим, что выполняется при первом показе, смотрим, что при последующих показах.



Страницы: 1 вся ветка

Текущий архив: 2009.09.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
2-1247657267
Алексей85
2009-07-15 15:27
2009.09.20
Позиция в DBGrid


15-1248160976
4got10
2009-07-21 11:22
2009.09.20
Не пашет клава%)


2-1247750493
Константин
2009-07-16 17:21
2009.09.20
Сообщение кнопке. Подскажите пожалуйста.


15-1248204795
DVM
2009-07-21 23:33
2009.09.20
Расщепление байта на биты


15-1248199056
Kerk
2009-07-21 21:57
2009.09.20
Предлагаю дополнение к ППД