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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2008, 16:28   #1
Pacific
Новичок
Джуниор
 
Регистрация: 09.11.2008
Сообщений: 1
По умолчанию MDI приложения

Привет всем. Есть вопрос... Впервые работаю с MDI формами. Создаю несколько форм и храню их названия в ComboBox. Как сделать так, что бы при выборе в Box-е становилась активной нужная форма? В инете нашел код

{
Делаем активным дочернее MDI-окно. Мы должны
послать сообщение Windows API, поскольку
дочернее MDI-окно может реагировать только
на "аварийный" набор системных сообщений.
}
i := ReadInteger( 'Main', 'ActiveMDIChild', -1 )
IF (i>=0) AND (i<MDIChildCount) THEN
POSTMESSAGE( Self.Handle, WM_MDIACTIVATE,
MDIChildren[i].Handle, 0 )


Не пойму при чем тут ини-файл. Прописал код, а он не работает... Подскажите решение, очень надо. За ранее спасибо.
Pacific вне форума Ответить с цитированием
Старый 11.11.2008, 01:54   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Как нибудь так...
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to Form1.MDIChildCount - 1 do
  begin
    if Form1.MDIChildren[i].Caption = Combobox1.Text then
    begin
     TForm(Form1.MDIChildren[i]).BringToFront;
     TForm(Form1.MDIChildren[i]).WindowState := wsNormal;
    end;
  end;
end;
Баламут вне форума Ответить с цитированием
Старый 12.11.2008, 01:04   #3
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

Если все создаваемые формы одного класса, то рекомендую при добавлении в выпадающий список кроме имени формы (или условного наименования) добавлять объект формы. Поясню на примере:

MyForm = class (TForm)
...
end;

Combobox.Items.AddObject(MyForm.Cap tion, pointer(ActiveMDIChild as MyForm));

для обратного преобразованиея используйте приведение объекта к типу формы:

MyForm(Combobox.Items.Object[Combobox.ItemIndex])

Рекомендую почитать литературу: Стив Тексейра и Ксавье Пачеко. Delphi 5. Руководство разработчика. в 2-х т.
MalexG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MDI и Access stan64 БД в Delphi 2 09.05.2008 23:53
MDI приложения и PageControl.... maLoy*508 Общие вопросы Delphi 2 04.04.2008 02:28
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. SkyM@n Фриланс 3 29.12.2007 16:21
Как сделать Панель задач для MDI окошек своего приложения? Angel86rus Общие вопросы Delphi 1 04.10.2007 15:15
MDI приложение Arsgun Общие вопросы Delphi 4 29.05.2007 12:36