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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2009, 17:58   #1
SlavaSH
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 174
По умолчанию MDI формы

Всем привет!
Создаю MDI-приложение...
У меня в меню есть три пункта, которые открывают 3 различные MDI-формы.
Мне надо сделать, чтобы при выбора пункта меню проверялось создана ли эта форма уже, и если нет, то создать, а если создана, то активировать ее.

Я делаю это так:
if MDI_Form1 = nil then
Application.CreateForm(TMDI_Form1, MDI_Form1)
else
ShowWindow(MDI_Form1.Handle, SW_RESTORE);

Если форма не создана, то все ок - она создается)
если она минимизирована, то тоже все ок - она восстанавливается
но если она не минимизирована, а просто активна другая форма, то она не просто становится активной, а делается маленькой, как будто я нажал на кнопку восстановить.
И меня это жутко бесит!!!
Как сделать правильно???


И еще такая проблема:
При создании MDI-формы я не хочу видеть анимацию (она как будто сначала сворачивается, потом разворачивается), бесит это. Как сделать, чтобы она открывалась нормально, как это сделано в ворде?
SlavaSH вне форума Ответить с цитированием
Старый 16.04.2009, 12:07   #2
ch_vas
 
Регистрация: 09.11.2007
Сообщений: 5
По умолчанию

У меня еще и дополнение к этому вопросу (хотя смотрю что многоуважаемый Гурру на наши вопросы не чень то и отвечает)
Возможно ли сделать так что бы если одна MDI форма открыта и развернута во весь экран - то другая - которая открывается - была открыта в размере указанном при design и не сворачивала предыдущую.. (может коряво описал но принцип такой.
Когда открываю одну MDI-форму и разворачиваю навесь экран .. потом другую - но хочу видеть ту которая под ней то и первая уменьшается до размеров design
ch_vas вне форума Ответить с цитированием
Старый 16.04.2009, 14:20   #3
ch_vas
 
Регистрация: 09.11.2007
Сообщений: 5
По умолчанию

Для Slava_SH

Код:
procedure Tmain.AuditForms(Sender: TObject); // Процедура проверки форм
Var i: integer; // счетчик открытых форм
  flag : boolean; // просто флаг для открытия или не открытия формы
Begin
  flag := true;
// ShowMessage((Sender as TMenuItem).Name); 
// Перебираем все открытые формы 
 For i:=0 to Screen.FormCount-1 do
  Begin
   // проверяю каким пунктом меню открывается форма
  If (Sender as TMenuItem).Name = 'mstreet' then
    // проверяю имя открытой формы
    if Screen.Forms[i].Name = 'street' then
      begin
         // если есть открыта - то показываю её
        Screen.Forms[i].Show;
        flag := false;
      end
  End;
if flag then
  // если не открыта то открываю
 Street := TStreet.Create(Self)

End;
может можно как-то по другому .. просто не думал - это так что по быстрому в голову пришло
хотя ..буду думать и оптимизировать т.к.самому такое надо

Последний раз редактировалось ch_vas; 16.04.2009 в 14:26.
ch_vas вне форума Ответить с цитированием
Старый 11.04.2014, 21:16   #4
alexuss88
Новичок
Джуниор
 
Регистрация: 06.09.2009
Сообщений: 2
По умолчанию

функция поиска формы mdi по имени
Код:
// поиск mdi форм
function TfrMain.findForm(nameform:string):boolean;
var i:integer;
begin
    for i:= 0 to MdiChildCount - 1 do
    if MDIChildren[i].Name = nameform then  result:= true;
end;
и соответсвенно проверка и создание

Код:
// создание формs user
procedure TfrMain.CreateFormUserForm;
begin
   // проверка существования Формы
   if findForm('FormUser')=false then
   FormUser:=TFormUser.Create(Application);    // создание Формы
end;
alexuss88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Картинка на фоне MDI формы... Как? masterdela Общие вопросы Delphi 4 13.01.2009 14:41
MDI Forms 1234 Общие вопросы Delphi 8 23.08.2008 11:43
Ошибка создания MDI Child формы VVVadim Общие вопросы Delphi 7 05.06.2008 19:25
Закрытие формы MDIChild в MDI приложении Avalonix Общие вопросы Delphi 4 29.05.2008 16:45
MDI и Access stan64 БД в Delphi 2 09.05.2008 23:53