Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.04.2010, 14:08
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
Лампочка MDI

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

Заранее спасибо!
Ответить с цитированием
  #2  
Старый 29.04.2010, 14:43
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Вот функция, которое ищет форму с заголовком, можно и по другим признакам искать.
Код:
function TDM.FindForm(const aCaption: Integer): TForm;
var
  i:integer;
begin
  with Application.MainForm do
  for i:=0 to MDIChildCount-1 do
    if MDIChildren[i].Caption = aCaption then
      begin
      Result:=MDIChildren[i];
      exit;
      end;
  Result:=nil;
end;
Основной смысл в следующем, ищем форму если нашли то на передний план, иначе создаем.
Код:
...
var
  C:TForm
...
  C:=DM.FindForm("Пользователи");
  if  C <> nil then C.BringToFront
    else Application.CreateForm(TUsersForm, UsersForm);
...

Последний раз редактировалось Asinkrit, 29.04.2010 в 14:46.
Ответить с цитированием
  #3  
Старый 29.04.2010, 15:05
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
По умолчанию

Очень много ошибок((
Большинство так и не исправил..
Ответить с цитированием
  #4  
Старый 29.04.2010, 15:29
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
По умолчанию

на сколько я пол BringToFront это активация формы, у меня выкидывает с ошибкой
Ответить с цитированием
  #5  
Старый 29.04.2010, 18:42
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Это рабочий код, из проекта выдернул, что у тебя за ошибки?
Ответить с цитированием
  #6  
Старый 29.04.2010, 21:09
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
Счастье

да я в принципе уже через свою функцию блокирую двойное открытие формы, осталось разобраться как сделать ее активной при повторном обращении, буду благодарен если подскажете
Ответить с цитированием
  #7  
Старый 30.04.2010, 17:38
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
Печаль

я так понял мне уже никто не поможет?
Ответить с цитированием
  #8  
Старый 03.05.2010, 11:35
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Так а чем помочь?
Представленный код почти полностью рабочий.
Ответить с цитированием
  #9  
Старый 11.08.2010, 23:00
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

подскажите, как сделать чтобы вторая форма которая вызывается из первой как бы захватывала управление
то есть когда в программе есть меню, то пока если окно с настройками из меню открыто, главное окно программы недоступно для управления
Ответить с цитированием
  #10  
Старый 11.08.2010, 23:09
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

1. Стоило создать новую тему.
2. ShowModal...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #11  
Старый 11.08.2010, 23:34
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

что то не хочет работать
Код:
procedure TForm1.menu1Click(Sender: TObject);
begin
  Form2:= TForm2.Create(Application);
Form2.Show;
Form2.ShowModal;
end;

пишет ошибку Cannot make a visible window modal
Ответить с цитированием
  #12  
Старый 11.08.2010, 23:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,090
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Form2.Show; убери. Тут либо-либо...
Ответить с цитированием
  #13  
Старый 12.08.2010, 05:25
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

убрал, все равно таже петрушка
может это изза того что TForm2.Create делает форму видимой?
тогда как ее открывать не пойму
Ответить с цитированием
  #14  
Старый 12.08.2010, 05:28
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

а все, поставил свойство visible в false
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:25.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025