Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамические окна [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 главной формы


Наверх

Титульная страница Поиск, карта сайта Написать письмо