Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.04;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
1-1218291861
lordalex
2008-08-09 18:24
2009.10.04
Не отображает иврит


15-1249286693
cwl
2009-08-03 12:04
2009.10.04
Аудионаркотики


1-1218039013
andreil
2008-08-06 20:10
2009.10.04
Быстрое сравнение строк?


15-1248772370
yantux
2009-07-28 13:12
2009.10.04
ускорение 2D


15-1249126212
Kerk
2009-08-01 15:30
2009.10.04
Как пережить финансовый кризис?