Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.06;
Скачать: CL | DM;

Вниз

Динамические окна   Найти похожие ветки 

 
Артём   (2009-10-16 17:53) [0]

Привет всем. Интересует вопрос, в котором хотелось бы чтоб кто-нибудь помог? Создаю формы в разрабатываемом приложении в режиме 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].


 
anonims   (2009-10-16 18:24) [1]

И где мы должны искать код заполнения поля Edit главной формы


 
Артём   (2009-10-16 18:47) [2]


> И где мы должны искать код заполнения поля Edit главной
> формы


form1.edit1.text :=newForm[n].caption;


 
Юий Зотов   (2009-10-16 18:50) [3]

Переменная n всегда равна индексу последней формы в массиве, поэтому newForm[n] - это всегда последняяя форма в массиве. Вот ее Caption и поступает в Edit1, удивляться нечему.


 
Артём   (2009-10-16 19:21) [4]


> Переменная n всегда равна индексу последней формы в массиве,
>  поэтому newForm[n] - это всегда последняяя форма в массиве.
>  Вот ее Caption и поступает в Edit1, удивляться нечему.


Понятно.... А как тогда узнать индекс предыдущей формы?


 
anonims   (2009-10-16 19:29) [5]

индекс предыдущей = индекс текущей -1


 
Германн ©   (2009-10-16 19:38) [6]

2 LVT
Признаю свою ошибку. Совет использовать массивы нельзя было давать на этом форуме :(
Уже второй подобный вопрос за чуть более часа.


 
Артём   (2009-10-16 19:38) [7]


> индекс предыдущей = индекс текущей -1


понял я.... что вы имеете ввиду.... но это не то что нужно мне..... Принцип по идее должен быть такой что пользователь может перещёлкнуть с третьей формы допустим на вторую со второй на 5 форму. А это я уже и сам поробывал...


 
Медвежонок Пятачок ©   (2009-10-16 20:58) [8]

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 21:00) [9]

Точнее TForm(Sender).caption; если кликают по форме



Страницы: 1 вся ветка

Текущий архив: 2009.12.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
15-1254826192
Windows User
2009-10-06 14:49
2009.12.06
Скрыть таскбар...


4-1224198326
Riply
2008-10-17 03:05
2009.12.06
Потоко-безопасный перебор модулей чужого процесса.


2-1256063307
Novii
2009-10-20 22:28
2009.12.06
Bitmap and Bitmap


15-1255012142
Leonid Troyanovsky
2009-10-08 18:29
2009.12.06
Похороните меня за плинтусом


11-1209014542
Алексей К.
2008-04-24 09:22
2009.12.06
Ошибка при обращении к StrList из своего объекта