Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создана форма или нет? [D7, Win2k]


Developerr ©   (2005-03-09 19:15:00) 

Доброе время суток, подскажите, пожалуйста, как можно узнать, если есть несколько MDIChild'ов, создана какая-то определенная форма, из них (MDIChild'ов), или нет?

Спасибо.


Developerr   (2005-03-10 16:32:00) [1]


> _1


> Если подразумевается что может быть только один экземпляр
> одной TMdiChild

Именно это я имел в виду, спасибо.


_1   (2005-03-10 14:34:00) [2]

Если подразумевается что может быть только один экземпляр одной TMdiChild, то можно использовать ту переменную которую Delphi сама создаёт для формы.

var
 MdiChild: TMDIChildForm = nil

Создавать -
if MdiChild = nil then
 MdiChild:= TMdiChildForm.Create;

в MdiChildOnDestroy -
MdiChild:= nil;

Проверять -
MdiChild <> nil


Digitman   (2005-03-10 14:13:00) [3]


> Developerr   (10.03.05 13:49) [4]


> думал, что может есть другие способы без введения переменных


ты не чукча ли ?)

вот же , в [3], - пример кода, реализующего твою логику БЕЗО всяких там "переменных" !


> Ввести переменную


малацца !
насандаль таких переменных с запасом, штук эдак 1000000000.. заранее ж ты не знаешь, сколько MDIChild-форм юзер насоздает ..


Developerr   (2005-03-10 13:49:00) [4]


> grusty  

Можно и так, а можно и еще проще. Ввести переменную и при создании формы присваивать ей значение, например, OnCreate f:=true. OnDestroy f:=false; Если f=true форма создана. Я просто думал, что может есть другие способы без введения переменных.


grusty   (2005-03-09 21:02:00) [5]

А если так:

var
I: Integer;
f: Boolean;
begin
f:=False;
with Form1 do
  for I := MDIChildCount-1 downto 0 do
    if MDIChildren[I].Caption='Форма3' then f:=True;
if f
then
  ShowMessage('Форма3 создана')
else
  ShowMessage('Форма3 не создана')
end;

Правда это будет работать, если форма открыта... А вот если нет - совневаюсь...


Developerr   (2005-03-09 19:31:00) [6]

А подробнее, а то в справке показано только как закрыть все MDI children.

The following code closes all the MDI children of Form1.
var
 I: Integer;
begin
 with Form1 do
   for I := MDIChildCount-1 downto 0 do
     MDIChildren[I].Close;
end;

У меня, допустим, есть форма, например, Name MDIForm3 и Caption - Форма3, как узнать создана эта форма или нет. Если можно, пример.

Спасибо.


Плохиш   (2005-03-09 19:20:00) [7]

TForm.MDIChildren


Наверх

Титульная страница Поиск, карта сайта Написать письмо