![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кол-во экземпляров формы [D5, Win2k]
Alik1313 © (2003-01-31 15:12:00)Мастера, есть проблема:
сущ-т mdi-приложение, в меню которого можно создавать экземпляры окон с определенным функционалом каждое...
...
Application.CreateForm(TForm20, Form20);
...
например, создали форму, а пункт меню с созданием этой формы остается активным, т.е. можно создать ещё один экземляр...
так вот, нужно делать неактивные некоторые кнопки на форме, есть существуют дубликаты этой формы.
как проверить на наличие дубликатов?
Mike_Goblin (2003-01-31 19:04:00) [1]Попробуй использовать атомы - функция API AddAtom
в качестве строки атома используй имя класса формы
Chubais (2003-01-31 18:48:00) [2]туда же ищщо и MDIChildren[i] мона...
Y (2003-01-31 16:57:00) [3]Так бы сразу и написал :)
alik1313 (2003-01-31 16:43:00) [4]спасибо! вот это и хотелось увидеть:
вариант прямого пересчета кол-во форм по типу!!!
kva (2003-01-31 16:22:00) [5]Приблизительно так
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 много
D (2003-01-31 16:08:00) [6]Да, трудно что-то ответить, не зная подробностей
Стоит ли создавать столько форм, а из них другие формы..., да еще и не модально.
alik1313 (2003-01-31 15:58:00) [7]вот именно!
проблема в этом!
важно иметь различные данные и независимо перемещаться по ним, например, для сравнения некоторых показателей.
следовательно общие данные (data module) не подходят, т.к. курсор будет двигаться и в дубликатах.
D (2003-01-31 15:51:00) [8]может лучше все общие данные вынести в дата модуль?
У меня немного похоже, а данные в неск.экземплярах, так уже путаюсь
alik1313 (2003-01-31 15:49:00) [9]а если один из дубликатов создает ещё одну форму, в которой происходит обращение к оригиналу: id:=form20.query1.fieldvalues["id"];
как быть, чтобы обращение было к окну, из которого это окно с обращением создавалось?
D (2003-01-31 15:44:00) [10]Может, массивчик создать (логич.или просто числ.), кол-во эл-тов - по числу видов форм. Если создаем форму i-го вида, то на это место в массиве ставим 1 (или массив[i]:=массив[i]+1 - получим кол-во откр.окон). Перед созданием проверяем - если массив[i]>0 то запретить что-то
myor (2003-01-31 15:43:00) [11]б-р-р-р.
еще раз можно?
D (2003-01-31 15:36:00) [12]Не совсем понятно. В смысле - Создаются доч.формы, экземпляры одного класса, но чем-то различающиеся; если еще раз создана форма с такой-то функциональностью, то что-то запретить для всех доч.форм? Так?
alik1313 (2003-01-31 15:32:00) [13]в том-то и дело, что блокировать нельзя из других соображений... нужно делать неактивными некоторые функции на всех эекхемплярах, если есть хоть оин дубликат
D (2003-01-31 15:31:00) [14]может, при создании формы делать соотв.пункт недоступным.
А при закрытии - наоборот.