Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];

Вниз

Переключение между MDI- Child   Найти похожие ветки 

 
Igor_   (2002-02-21 10:36) [0]

Есть MDI приложение как сделать чтоб доступ к дочерним окнам осуществлялся как в Word, т.е. при нажатии в меню "Окна" появлялся список MDI окон и через это меню можно было между ними переключаться.


 
Анонимщик   (2002-02-21 10:46) [1]

Следующий цикл формирует список окон

for i := 0 to MDIChildCount-1 do
ListBox1.Items.Add(MDIChildren[i]->Name);

А это - активация i - того дочернего окна:

newActiveHandle = MDIChildren[i].Handle;
SendMessage(MainForm1.ClientHandle, WM_MDIACTIVATE, newActiveHandle, 0);



 
Igor_   (2002-02-21 11:02) [2]

А как запихать не в ListBox а в список меню. Если я добавлю строку в меню (не знаю пока правда как), то мне ещё надо обработчик нажатия этой строки меню.
И еще проблема: после изменения активного окна массив MDIChildren пересортировывается.


 
ilysha   (2002-02-21 11:48) [3]

Зечем такие сложности - есть заложенное в D6 решение - в ObjectInspector главной формы укажи значение свойства WindowMenu.

И сама Win будет прописывать в пункт меню открытые окна, и текущее...


 
Igor_   (2002-02-21 11:59) [4]

Я пробовал - не хочет, указывал всё:

WindowMenu
Профессиональные MDI-приложения позволяют активизировать необходимое дочернее окно, выбрав его из списка в меню. Свойство WindowMenu определяет объект TMenuItem, который Delphi будет использовать для вывода списка доступных дочерних форм.
Для вывода списка TMenuItem должно быть меню верхнего уровня. Это меню имеет свойство Caption, равное swindow.

У меня получалось в этом меню именно swindow, а не список окон.


 
Анонимщик   (2002-02-21 12:17) [5]

Я что-то не пойму. У тебя в многооконном приложении этот список окон и так будет в подменю гавного меню "Window". Чего еще нужно?
О каком списке идет речь, собственно, что там написано должно быть?

Об остальном. В рантайме пункт в меню добавляется следующим образом. Предположим, что есть уже элемент меню File1 (типа TMenuItem). Тогда:

myPos := 5; // это позиция, куда будет вставляться новый элемент
NewItem = new TMenuItem(File1);
NewItem.Caption = "Моя строка";
File1.Add(NewItem);
File1.Insert(myPos, NewItem);
NewItem.OnClick = OpenProjectAction1Execute;

procedure TMainForm.OpenProjectAction1Execute(TObject *Sender);
begin
// здесь пишешь свою процедуру
end;

Так объясни проблему.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
14-19307
mart
2002-01-18 08:35
2002.03.07
Начинающий


14-19309
asafr
2002-01-14 13:00
2002.03.07
Интересный, но закономерный факт?


3-19045
vopros
2002-02-07 09:26
2002.03.07
Не показывает отчет


1-19175
Kas
2002-02-21 13:00
2002.03.07
Математика в Delphi


1-19218
Lokk
2002-02-19 14:45
2002.03.07
Ttimer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский