Форум: "Начинающим";
Текущий архив: 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