Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.005 c
6-50064
Q
2002-02-24 19:05
2002.05.16
JavaScript для HTML-граббера


4-50185
Frigate
2002-03-12 23:47
2002.05.16
Помогите пожалуйста!


1-49924
HDD
2002-04-29 15:26
2002.05.16
Undo


3-49879
Tolick
2002-04-19 13:41
2002.05.16
Конвертировать словарь DCT в DDF


1-49990
Explorer
2002-04-30 09:25
2002.05.16
Руссификация дизайнера PReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский