![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
переключение между формами программы
xyz © (2009-07-28 07:42:00)Как это лучше организовать? Какую для этого назначить комбинацию клавиш, есть какие-то общепринятые варианты? И как пользователю дать понять, что именно эта комбинация переключает формы? В хэлпе написать - это понятно. Но не все же его читают. На форме открытым текстом напечатать? Не вариант.
Есть статьи на эту тему?
MonoLife (2009-07-30 04:03:00) [1]
> xyz (28.07.09 07:42)
>
> Как это лучше организовать? ...
А что, главного меню у твоей программы нет?
А так, можно в главном меню "Window" добавлять Caption по порядку открытых дочерних окон, соответственно, назначая им Ctrl+1, Ctrl+2 и т.д.
И "хот кей" есть, и пользователю видно...
Kolan (2009-07-29 12:18:00) [2]Палитра — это такое окно в котором собраны элементы управления и которое «парит» над всеми документами в MDI. Пример — палитры в фотошопе.
xyz (2009-07-29 12:01:00) [3]Палитрой - это как?
Kolan (2009-07-29 11:46:00) [4]Ну если я понял, то это что-то вроде Винампа. Зачем тогда между ними переключаться, может можно сделать, чтобы они все были видны.
А если они такие большие, то почему ин обязательно нужно выходить за пределы родительского. Можно сделать стандартный MDI, а то окно что у вас сейчас родительское и маленькое сделать не главным, а палитрой.
xyz (2009-07-29 11:35:00) [5]Я имею в виду что дочерние окна могут выходить за пределы родительского окна. У меня родительское окно кстати маленькое.
Kolan (2009-07-29 11:29:00) [6]Скриншот помог бы прояснить вопрос. Не очень понятно что вы пытаетесь сделать. Может что-то вроде старого Винампа?
xyz (2009-07-28 14:58:00) [7]Почитал. Сделал. Но окно теперь создается дочернее прямо в родительском. А мне-то надо чтобы они как бы сами по себе были. Т. е. получается, надо обрабатывать Ctrl+Tab самому?
Kolan (2009-07-28 13:11:00) [8]Почитайте, может, Delphi 5 Руководство разработчика, том 1, стр. 718?
xyz (2009-07-28 13:08:00) [9]Опишу подробнее проблему. После того, как я поставил у форм formstyle в fsMDIChild, в dpr-файле при запуске приложения возникало исключение 'Cannot create form. No MDI forms are currently active. Код dpr-файла такой:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.Run;
end.
Причем если я делаю дочерней 2-ю форму, то отладчик выделяет синей строкой 3-ю. Т. е. следующую после первой дочерней. Менять стиль форм прямо во время выполнения тоже не получалось, везде исключения.
xyz (2009-07-28 12:47:00) [10]Что-то не получается без исключений создать дочерние формы. Пытался просто менять стиль form2.FormStyle:=fsMDIChild в событиях OnShow.
Такой код выполнить тоже не получается:
procedure TForm1.FormCreate(Sender: TObject);
...
begin
...
PostMessage(Handle, WM_PostInit, 0, 0);
end;
procedure TForm1.WMPostInit(var Msg: TMessage);
begin
form2.FormStyle:=fsMDIChild;
end;
Как сделать, чтобы сообщение WMPostInit обрабатывалось? А то сейчас пишет undeclared identifier: 'WMPostInit'. Или как проще сделать окна дочерними?
Kolan (2009-07-28 12:44:00) [11]Может лучше заменить MDI-интерфейс на другой. Я вижу два варианта:
Использовать TabDI, он лучше тем, что открытые окна видны сразу, да и многие к ним привыкли в браузерах.
Сделать одно окно — имхо, может оказаться лучше, если только у вас не многодокументное приложение.
Покажите скриншоты окон и дайте небольшое описание, если требуется.
Юрий Зотов (2009-07-28 11:23:00) [12]> xyz (28.07.09 09:47) [5]
Обработано для MDI-CHILD. Это стандартная комбинация клавиш для переключения между дочерними окнами.
Palladin (2009-07-28 09:56:00) [13]
> Есть статьи на эту тему?
в msdn поиск по "Guidelines for Keyboard User Interface Design"
xyz (2009-07-28 09:47:00) [14]Нет, не обработано.
Юрий Зотов (2009-07-28 09:42:00) [15]> xyz (28.07.09 09:36) [2]
> А как обработать Ctrl+Tab?
Сначала попробуйте никак не обрабатывать. Вдруг оно уже обработано?
:o)
Dennis I. Komarov (2009-07-28 09:38:00) [16]
> Anatoly Podgoretsky © (28.07.09 08:45) [1]
> Для чего надо изобретать...
он сам же написал: Но не все же его читают
xyz (2009-07-28 09:36:00) [17]А как обработать Ctrl+Tab? Чтоб он работал также, как в Photoshop например?
Anatoly Podgoretsky (2009-07-28 08:45:00) [18]> xyz (28.07.2009 07:42:00) [0]
Для чего надо изобретать, когда еще со времен Win 1.0 для переключения есть стандартные комбинации Ctrl+Tab и Alt+Tab