![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамические окна [D6, XP]
Артём © (2009-10-16 17:53:00)Привет всем. Интересует вопрос, в котором хотелось бы чтоб кто-нибудь помог? Создаю формы в разрабатываемом приложении в режиме run-time. На главной форме находится кнопка Button и поле Edit, примерный обработчик Button на событие оnClick привожу ниже.
var
newForm: array [1..100] of TForm;
n: integer;
begin
n:=n+1;
newForm[n] :=TForm.Create(nil);
newForm[n].name :='NewForm'+IntToStr(n);
newForm[n].OnClick :=ClickPOforme;
newForm[n].show;
Суть заключается в следующем когда запускаешь программу и создаёшь 3 окна 3. При клике на newForm[1] в поле Edit находящееся на главной форме передаётся newForm[3].caption а не newForm[1].
Медвежонок Пятачок (2009-10-16 21:00:00) [1]Точнее TForm(Sender).caption; если кликают по форме
Медвежонок Пятачок (2009-10-16 20:58:00) [2]Inc(n);
newForm[n] :=TForm.Create(nil);
newForm[n].name :='NewForm'+IntToStr(n);
newForm[n].OnClick :=ClickPOforme;
newForm[n].Tag := n;
newForm[n].show;
В обработчике используем таг оунера(формы) как индекс массива
Хотя прямее было бы без извратов:
form1.edit1.text := TForm(Sender.Owner).caption;
Германн (2009-10-16 19:38:00) [3]2 LVT
Признаю свою ошибку. Совет использовать массивы нельзя было давать на этом форуме :(
Уже второй подобный вопрос за чуть более часа.
Артём (2009-10-16 19:38:00) [4]
> индекс предыдущей = индекс текущей -1
понял я.... что вы имеете ввиду.... но это не то что нужно мне..... Принцип по идее должен быть такой что пользователь может перещёлкнуть с третьей формы допустим на вторую со второй на 5 форму. А это я уже и сам поробывал...
anonims (2009-10-16 19:29:00) [5]индекс предыдущей = индекс текущей -1
Артём (2009-10-16 19:21:00) [6]
> Переменная n всегда равна индексу последней формы в массиве,
> поэтому newForm[n] - это всегда последняяя форма в массиве.
> Вот ее Caption и поступает в Edit1, удивляться нечему.
Понятно.... А как тогда узнать индекс предыдущей формы?
Юий Зотов (2009-10-16 18:50:00) [7]Переменная n всегда равна индексу последней формы в массиве, поэтому newForm[n] - это всегда последняяя форма в массиве. Вот ее Caption и поступает в Edit1, удивляться нечему.
Артём (2009-10-16 18:47:00) [8]
> И где мы должны искать код заполнения поля Edit главной
> формы
form1.edit1.text :=newForm[n].caption;
anonims (2009-10-16 18:24:00) [9]И где мы должны искать код заполнения поля Edit главной формы