Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 22:08   #21
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Далее на базе родительской сделано положим 10 разных каталогов с разными
Да мои догадки верны. Единственно моя телепатия интерпретировала каталог в понятие файловой системы и при моделировании отталкивался от этого (отсюда rootcatalog).
Ну что ж код для разных классов. Оформим все в виде единой процедуры (метода главной формы)
1. в модуле базового класса TBaseCatalogForm объявим новый тип
Код:
TBaseCatalogFormclass =class of TBaseCatalogForm;
можно обойтись и без него но с ним часть будущей работы по контролю можно будет передать компилятору (защита от ошибок программиста).
Если 11-я форма не будет основана на TBaseCatalogform Delphi об этом обязательно узнает и предупредит.
2. в Onclose разрешаем удаление
Код:
  action:=caFree;
3. теперь пишем наш метод
Код:
procedure ShowBaseCatalog(classdialog: TBaseCatalogform);
Код:
procedure TMDIMain.ShowBaseCatalog(classdialog: TBaseCatalogform);
var
  f: TBaseCatalogform;
begin
  f:=nil;
  for j:=0 to MDIChildcount-1 do begin
    if mdichildren[j] is classcatalog then begin
      f:=mdichildren[j] as TBaseCatalogform;
      f.bridgtofront;
      break;
    end;
  end;
  if f=nil then
    f:=classcatalog.Create(...);
end;
4. в ваших местах создания дочерних(MDIChildren) пишем вызовы
с указанием конкретного класса (НЕ БАЗОВОГО). Один из
Код:
ShowBaseCatalog(TBaseCatalogForm1);
Код:
ShowBaseCatalog(TBaseCatalogForm2);
ВСЕ! Никаких переменных fokmo1, fokmo2, ...

Цитата:
Всё довольно просто и имхо в 2011году должно работать стандартными средствами Delphi без замороченных "допилов".
Работает начиная с Delphi5 (как минимум). а скорее D1-D3
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.12.2011 в 23:19.
evg_m вне форума Ответить с цитированием
Старый 07.12.2011, 12:03   #22
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Преимущество Вашего варианта - нет "лишних" переменных. Минус Вашего варианта - имхо запутанный код с лишними временными переменными и невозможность обращаться к созданным каталогам через строку типа fOkno.fVar:=1. Всё равно спасибо за вариант, но я оставлю свой вариант - на мой взгляд он более очевиден и позволяет сразу при создании окна индивидуально отправлять нужные значения переменных в создаваемое окно.
Есть ли возможность скрывать/показывать MDIChild окно вместо уничтожения/создания?

Последний раз редактировалось delphicoding; 07.12.2011 в 12:05.
delphicoding вне форума Ответить с цитированием
Старый 07.12.2011, 12:18   #23
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
на мой взгляд он более очевиден и позволяет сразу при создании окна индивидуально отправлять нужные значения
Код:
function ShowCatalog(class: TMDIBASECalaogclass): TMDIBASeCatalog;
begin
....
   result:=MDIchildren[i] as TMDIBaseCatalog;
......
   result:=class.Create( );
.......
end;
Код:
fokno1:=ShowCatalog(TMDICatalog1) as TMDICatalog1;
и можно присваивать все что угодно
fokno1 ....:=.........

Цитата:
Есть ли возможность скрывать/показывать MDIChild окно вместо уничтожения/создания?
Методы Hide, show и свойство visible никто у формы не отменял.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 07.12.2011 в 12:26.
evg_m вне форума Ответить с цитированием
Старый 07.12.2011, 12:56   #24
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

caHide не пашет... то есть просто OnClose fOkno.Visible:=false и всё ???
delphicoding вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в потоках (Access violation at address) designer999 Общие вопросы Delphi 9 25.08.2011 16:04
Ошибка Access violation... ара Общие вопросы Delphi 2 15.05.2011 15:57
Ошибка access violation at adress Godod Помощь студентам 2 02.02.2011 11:11
ошибка access violation at address ... Yuran БД в Delphi 5 05.01.2011 16:04
Ошибка Access Violation AHTuKiLLeR Общие вопросы Delphi 8 02.06.2009 10:48