Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.021 c
4-57571
MrAngel
2002-01-21 12:11
2002.03.18
И ещё один вопрос!!! Само описание HWND и HDC. Их внутренняя структура.


1-57393
KMM
2002-03-01 12:48
2002.03.18
Как огруглить число...?


4-57552
BWG
2002-01-18 20:54
2002.03.18
hHook: exe vs. dll


1-57454
Григорий Ситнин
2002-02-27 15:03
2002.03.18
Алгоритмы сравнения файлов...


4-57554
unKNOWN uSER
2002-01-18 00:19
2002.03.18
Создание окна и кнопки на нем





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский