Форум: "Основная";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];
Внизсоздание форм по шаблону Найти похожие ветки
← →
sergkkk (2002-04-30 11:55) [0]вот у меня подобная картина! есть Form1 и Form2. использую Form2 как шаблон для создания ее клонов. на Form1 кнопочка. нажимаю- передаю один параметр (айпи юнита с которым форма будет работать). на форме2- StringGrid1 и таймер. когда создается первая Form2 - все отлично работает. создаю вторую Form2 с другим айпи все запускается только вычисления StringGrid1.Cells, StringGrid1.RowCount в обоих запущеных Form2 мешают друг другу. не знаю как сделать чтобы работающие Form2 не мешали друг другу. Этих запущеных Form2 может быть, например, с десяток. подскажите пожалуйста!
← →
Vovchik (2002-04-30 12:26) [1]Вообще, "работающие формы" мешать друг другу не могут, если не используют общие ресурсы. Я думаю, у тебя проблема в таймерах. Когда их больше одного и они работают одновременно, это неизбежно приводит к глюкам. Можешь сделать один таймер на главной форме и рассылать сообщения клонам. А можешь посмотреть в RX-либе, там есть что-то с таймерами, но я не смотрел. Таймер - это заведомо неправильный стиль программирования, нужно стараться их избегать так же как и goto.
← →
sergkkk (2002-04-30 15:14) [2]да нет. дело не в таймерах. я проверил. как бы ей сказать что в TForm2 = class(TForm) при следующем запуске - TForm3= class(TForm) при следующем- TForm4 и тд? или еще как-то. подскажите а?
← →
Vovchik (2002-04-30 15:42) [3]> sergkkk (30.04.02 15:14)
Никому такое не говори.
TForm2 - это тип и ничего более. Когда ты делаешь
Form2:=TForm2.Create()
то ты создаёшь новый инстанс, т.е. выделяется память под эту форму и всё что на ней есть, и ты получаешь указатель на вновь созданную форму. Если ты опять сделаешь Form2:=TForm2.Create(), то всё повторится точно так же, и ты опять получишь указатель, который будет указывать уже на новый инстанс объекта. При этом с тем (с теми), которые созданы раньше, ничего не случится. Поэтому я и сказал, что они не могут мешать друг другу. На то и нужны объекты (в частности).
Поэтому глюки могут быть, если эти формы используют общие участки памяти или что-нибудь типа этого.
Я бы не был уверен, что у тебя нет глюков с несколькими таймерами, тем более, что ты так и не сказал в чём глюки.
← →
sergkkk (2002-04-30 16:53) [4]дык я ж говорю. StringGrid1.RowCount при запущеных двух Form2 друг у друга воруют значения. первая запущеная Form2 на основании полученных данных от юнита рисует например 1 строку (и это соотв истине!). все отлично. запускаеи вторую Form2. этот второй клон пытается определить кол-во строк в своем StringGrid1 (а их там не менее 10)первый вдруг начинает пытаться нарисовать строк больше 1 а второй клон вообще затыкается в подсчете строк. и грит "неверное интегер значение" или "деление на 0" другого пути как переделывать код этой второй формы не подскажете?
← →
Vovchik (2002-04-30 17:23) [5]>sergkkk (30.04.02 16:53)
Очень трудно подсказывать не видя всего текста. Может у тебя есть какая-нибудь грубая ошибка, которую ты не видишь, потомучто думаешь, что это не ошибка. Выброси всё не имеющее значения и приведи текст в форуме или пришли на мыло в полной версии.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c