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

Вниз

переключение между формами программы   Найти похожие ветки 

 
xyz   (2009-07-28 07:42) [0]

Как это лучше организовать? Какую для этого назначить комбинацию клавиш, есть какие-то общепринятые варианты? И как пользователю дать понять, что именно эта комбинация переключает формы? В хэлпе написать - это понятно. Но не все же его читают. На форме открытым текстом напечатать? Не вариант.
Есть статьи на эту тему?


 
Anatoly Podgoretsky ©   (2009-07-28 08:45) [1]

> xyz  (28.07.2009 07:42:00)  [0]

Для чего надо изобретать, когда еще со времен Win 1.0 для переключения есть стандартные комбинации Ctrl+Tab и Alt+Tab


 
xyz   (2009-07-28 09:36) [2]

А как обработать Ctrl+Tab? Чтоб он работал также, как в Photoshop например?


 
Dennis I. Komarov ©   (2009-07-28 09:38) [3]


> Anatoly Podgoretsky ©   (28.07.09 08:45) [1]
> Для чего надо изобретать...

он сам же написал: Но не все же его читают


 
Юрий Зотов ©   (2009-07-28 09:42) [4]

> xyz   (28.07.09 09:36) [2]
> А как обработать Ctrl+Tab?

Сначала попробуйте никак не обрабатывать. Вдруг оно уже обработано?
:o)


 
xyz   (2009-07-28 09:47) [5]

Нет, не обработано.


 
Palladin ©   (2009-07-28 09:56) [6]


> Есть статьи на эту тему?

в msdn поиск по "Guidelines for Keyboard User Interface Design"


 
Юрий Зотов ©   (2009-07-28 11:23) [7]

> xyz   (28.07.09 09:47) [5]

Обработано для MDI-CHILD. Это стандартная комбинация клавиш для переключения между дочерними окнами.


 
Kolan ©   (2009-07-28 12:44) [8]

Может лучше заменить MDI-интерфейс на другой. Я вижу два варианта:

Использовать TabDI, он лучше тем, что открытые окна видны сразу, да и многие к ним привыкли в браузерах.

Сделать одно окно — имхо, может оказаться лучше, если только у вас не многодокументное приложение.

Покажите скриншоты окон и дайте небольшое описание, если требуется.


 
xyz   (2009-07-28 12:47) [9]

Что-то не получается без исключений создать дочерние формы. Пытался просто менять стиль 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". Или как проще сделать окна дочерними?


 
xyz   (2009-07-28 13:08) [10]

Опишу подробнее проблему. После того, как я поставил у форм 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-ю. Т. е. следующую после первой дочерней. Менять стиль форм прямо во время выполнения тоже не получалось, везде исключения.


 
Kolan ©   (2009-07-28 13:11) [11]

Почитайте, может, Delphi 5 Руководство разработчика, том 1, стр. 718?


 
xyz   (2009-07-28 14:58) [12]

Почитал. Сделал. Но окно теперь создается дочернее прямо в родительском. А мне-то надо чтобы они как бы сами по себе были. Т. е. получается, надо обрабатывать Ctrl+Tab самому?


 
Kolan ©   (2009-07-29 11:29) [13]

Скриншот помог бы прояснить вопрос. Не очень понятно что вы пытаетесь сделать. Может что-то вроде старого Винампа?


 
xyz   (2009-07-29 11:35) [14]

Я имею в виду что дочерние окна могут выходить за пределы родительского окна. У меня родительское окно кстати маленькое.


 
Kolan ©   (2009-07-29 11:46) [15]

Ну если я понял, то это что-то вроде Винампа. Зачем тогда между ними переключаться, может можно сделать, чтобы они все были видны.

А если они такие большие, то почему ин обязательно нужно выходить за пределы родительского. Можно сделать стандартный MDI, а то окно что у вас сейчас родительское и маленькое сделать не главным, а палитрой.


 
xyz   (2009-07-29 12:01) [16]

Палитрой - это как?


 
Kolan ©   (2009-07-29 12:18) [17]

Палитра — это такое окно в котором собраны элементы управления и которое «парит» над всеми документами в MDI. Пример — палитры в фотошопе.


 
MonoLife ©   (2009-07-30 04:03) [18]


> xyz   (28.07.09 07:42)
>
> Как это лучше организовать? ...

А что, главного меню у твоей программы нет?
А так, можно в главном меню "Window" добавлять Caption по порядку открытых дочерних окон, соответственно, назначая им Ctrl+1, Ctrl+2 и т.д.
И "хот кей" есть, и пользователю видно...



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

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

Наверх




Память: 0.49 MB
Время: 0.006 c
1-1218781281
dmitry_12_08_74
2008-08-15 10:21
2009.10.04
Как сделать, чтобы иконка в трее делалась видимой


3-1227778320
Вадим
2008-11-27 12:32
2009.10.04
SELECT к нескольким БД


15-1249370873
Kerk
2009-08-04 11:27
2009.10.04
Набор "Юный либерал"


2-1249273732
Disa
2009-08-03 08:28
2009.10.04
Если прога работает, то повторный запуск передает первой копии ин


15-1249495859
tomkat
2009-08-05 22:10
2009.10.04
Активация Delphi 6





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский