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

Вниз

Подскажите пожалуйста, как правильно создавать клоны объекта, а потом работать с каждым из них. В вопросе есть маленький пример моей проблемы...   Найти похожие ветки 

 
Kettle of delphi   (2002-03-01 12:58) [0]

Извиняйте, я слабо в курсе, как это правильно называется, поэтому написал, без спецтерминов.

1. В проекте есть объект. Вот такой:

type
TForm2 = class(TForm)
...
...
...
public
Str: String;
end;


Этот объект является шаблоном. В дальнейшем он используется так (и не факт, что правильно!))):

Application.CreateForm(TFormClass(TForm2), CloneForm);
CloneForm.Str := "A";
CloneForm.Show;


Application.CreateForm(TFormClass(TForm2), CloneForm);
CloneForm.Str := "B";
CloneForm.Show;


Application.CreateForm(TFormClass(TForm2), CloneForm);
CloneForm.Str := "C";
CloneForm.Show;


-----------
2. В основной форме (Form1), входящей тот же проект, есть 3 кнопки:

При нажатии на ПЕРВУЮ, в том клоне Form2,
в котором CloneForm.Str := "A", должно стать Caption := "Нажата кнопка 1";

При нажатии на ВТОРУЮ, в том клоне Form2,
в котором CloneForm.Str := "В", должно стать Caption := "Нажата кнопка 2";

При нажатии на ТРЕТЬЮ, в том клоне Form2,
в котором CloneForm.Str := "С", должно стать Caption := "Нажата кнопка 3";

-----------

Теперь вопрос:
Каким способом мне перебрать все CloneForm и смотреть в них переменную Str? При этом, хоть в примере показаны три CloneForm, реально из ЗНАЧИТЕЛЬНО БОЛЬШЕ.


 
IronHawk ©   (2002-03-01 13:09) [1]

Перебор форм и их свойств есть в ветке :
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1014904434&n=0
ответ : SDS © (28.02.02 17:07)


 
Kettle of delphi   (2002-03-01 13:17) [2]

Я там не очень понял. Нельзя ли объяснить на моем примере?


 
Digitman ©   (2002-03-01 13:21) [3]

with Screen do
for i:= 0 to FormCount - 1 do
if Forms[i] is TForm2 then
showmessage((Forms[i] as TForm2).Str);


 
MBo ©   (2002-03-01 13:21) [4]

у тебя одна переменная для разных форм?

значительно больше - значит, заранее количество неизвестно?



 
Kettle of delphi   (2002-03-01 13:27) [5]

Это куда понятнее. Спасибо :)

Я почитал предложенную ссылку. Там рекомендуют "занулять" форму при закрытии... А что это дает? "После закрытия формы, переменная FChild1 не изменит своего значения. ..." - ???

И последнее: как поместить клонированную форму на панель задач?


 
Kettle of delphi   (2002-03-01 13:30) [6]

2 MBo ©:
Да, заранее количество клонов неизвестно. Но я мыслю ввести глобальную переменную, которая будет указывать индекс последнего клона. Это я верно сообразил? Или в таких случаях делается как-то проще?


 
MBo ©   (2002-03-01 13:39) [7]

тогда надо или массив (что подразумевается у Digitman-а) - динамический или список TList или TObjectList


 
DieHard ©   (2002-03-01 13:39) [8]

Можно завести динамический массив of TForm2
Или, наверно, даже лучше TList или TObjectList, чтобы управлять списком форм
А чтобы поместить форму на панель задач, создавай ее так:
AForm:=TForm2.Create( nil);


 
MBo ©   (2002-03-01 13:43) [9]

>что подразумевается у Digitman
Sorry - там речь идет о другом списке


 
Kettle of delphi   (2002-03-01 13:43) [10]

Ура! Быстро и оперативно! Всем спасибо! :)



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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
4-57555
Shizik
2002-01-19 13:04
2002.03.18
Очень нужна помощь!!!!


3-57318
Vera
2002-02-17 17:50
2002.03.18
Импорт данных из Excel


1-57433
Hewlping
2002-02-28 21:08
2002.03.18
ПОМОГИТЕ СРОЧНО


3-57336
undersun
2002-02-19 19:55
2002.03.18
Народ как узнать на клиенте MS-SQL что в записи в базе изменились


3-57283
VladP
2002-02-13 19:56
2002.03.18
Альтернатива Paradox