Главная страница
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.013 c
15-1248171535
Jeer
2009-07-21 14:18
2009.09.20
ГИС по китайски


2-1248180547
artemm
2009-07-21 16:49
2009.09.20
подсчет одинаковых строк


15-1248340620
РВА
2009-07-23 13:17
2009.09.20
Удаленное подключение к ПК и к базе.. как?


15-1248209018
Keph
2009-07-22 00:43
2009.09.20
Delphi demos


2-1247646301
MZG
2009-07-15 12:25
2009.09.20
Форматирование диска