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

Вниз

Кол-во экземпляров формы   Найти похожие ветки 

 
Alik1313   (2003-01-31 15:12) [0]

Мастера, есть проблема:
сущ-т mdi-приложение, в меню которого можно создавать экземпляры окон с определенным функционалом каждое...
...
Application.CreateForm(TForm20, Form20);
...
например, создали форму, а пункт меню с созданием этой формы остается активным, т.е. можно создать ещё один экземляр...

так вот, нужно делать неактивные некоторые кнопки на форме, есть существуют дубликаты этой формы.

как проверить на наличие дубликатов?


 
D   (2003-01-31 15:31) [1]

может, при создании формы делать соотв.пункт недоступным.
А при закрытии - наоборот.


 
alik1313   (2003-01-31 15:32) [2]

в том-то и дело, что блокировать нельзя из других соображений... нужно делать неактивными некоторые функции на всех эекхемплярах, если есть хоть оин дубликат


 
D   (2003-01-31 15:36) [3]

Не совсем понятно. В смысле - Создаются доч.формы, экземпляры одного класса, но чем-то различающиеся; если еще раз создана форма с такой-то функциональностью, то что-то запретить для всех доч.форм? Так?


 
myor ©   (2003-01-31 15:43) [4]

б-р-р-р.
еще раз можно?


 
D   (2003-01-31 15:44) [5]

Может, массивчик создать (логич.или просто числ.), кол-во эл-тов - по числу видов форм. Если создаем форму i-го вида, то на это место в массиве ставим 1 (или массив[i]:=массив[i]+1 - получим кол-во откр.окон). Перед созданием проверяем - если массив[i]>0 то запретить что-то


 
alik1313   (2003-01-31 15:49) [6]

а если один из дубликатов создает ещё одну форму, в которой происходит обращение к оригиналу: id:=form20.query1.fieldvalues["id"];

как быть, чтобы обращение было к окну, из которого это окно с обращением создавалось?


 
D   (2003-01-31 15:51) [7]

может лучше все общие данные вынести в дата модуль?
У меня немного похоже, а данные в неск.экземплярах, так уже путаюсь


 
alik1313   (2003-01-31 15:58) [8]

вот именно!
проблема в этом!

важно иметь различные данные и независимо перемещаться по ним, например, для сравнения некоторых показателей.
следовательно общие данные (data module) не подходят, т.к. курсор будет двигаться и в дубликатах.


 
D   (2003-01-31 16:08) [9]

Да, трудно что-то ответить, не зная подробностей
Стоит ли создавать столько форм, а из них другие формы..., да еще и не модально.


 
kva   (2003-01-31 16:22) [10]

Приблизительно так

Count:=0;
for i := 0 to Screen.FormCount-1 do
begin
if (Screen.Forms[i] is TMyForm) then
//TMyForm это тип твоей формы
Inc(Count);
end; //for
if Count>0 then много


 
alik1313   (2003-01-31 16:43) [11]

спасибо! вот это и хотелось увидеть:
вариант прямого пересчета кол-во форм по типу!!!


 
Y   (2003-01-31 16:57) [12]

Так бы сразу и написал :)


 
Chubais ©   (2003-01-31 18:48) [13]

туда же ищщо и MDIChildren[i] мона...


 
Mike_Goblin ©   (2003-01-31 19:04) [14]

Попробуй использовать атомы - функция API AddAtom
в качестве строки атома используй имя класса формы



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
7-29127
Eugene
2002-12-06 16:05
2003.02.10
Как перестроить кэш значков Windows?


3-28663
CashDi
2003-01-24 10:58
2003.02.10
Помогите с запросом


4-29149
Vladimir_Shk
2002-12-26 11:37
2003.02.10
Закрытие окна


14-29048
hatchy
2003-01-24 15:24
2003.02.10
Один из анекдотов..


1-28708
Colonel Isaev
2003-01-31 14:50
2003.02.10
Вопрос по системе