Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];

Вниз

Поведение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
2-1247757748
antonn
2009-07-16 19:22
2009.09.20
как глянуть строку с AV в DLL? :)


15-1248070697
Припев
2009-07-20 10:18
2009.09.20
song - С днем рождения!


15-1248288596
Kerk
2009-07-22 22:49
2009.09.20
У меня почерк хреновый


1-1215616092
misha_gr
2008-07-09 19:08
2009.09.20
Контекстное меню "Открыть с помощью..."


2-1247655189
AndrewG
2009-07-15 14:53
2009.09.20
Ячейка & DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский