Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ctrl+Tab в дочернем окне [D7, WinXP]


shc ©   (2004-09-15 12:16:00) 

Добрый день, мастера. Есть проблема. По умолчанию (и привычке) переход между закладками PageControla возможно по Ctrl+Tab. Но в дочернем окне (MDI) по этой комбинации происходит переход между дочерними окнами.
Как можно отловить эту комбинацию для перехода по закладкам


shc   (2004-09-17 12:06:00) [1]

Спасибо Abel.
Действительно, все проблемы исчезли после описания процедуры в дочернем окне.


shc   (2004-09-15 15:58:00) [2]

Именно из-за этого названия и переспрашивал см.4


Amoeba   (2004-09-15 14:55:00) [3]

procedure TMDIChild.ApplicationEventsMessage(var Msg: tagMSG; var Handled: Boolean);

Смотри внимательнее.


shc   (2004-09-15 14:47:00) [4]

> Amoeba
Сижу на работе. Делфя под рукой нету. Дома Инета нету. Лучше уточнить.


Amoeba   (2004-09-15 14:34:00) [5]

А из заголовка метода разве не видно?


shc   (2004-09-15 14:30:00) [6]

Если не трудно, то можно уточнить: это процедура объявляется в дочерней форме или в главной (просто я объявлял в главной очень похожий ход)


Abel   (2004-09-15 14:13:00) [7]

Вот работающий код (проверено):

procedure TMDIChild.ApplicationEventsMessage(var Msg: tagMSG; var Handled: Boolean);
begin
 if (Self.Active) and
    (Msg.message = wm_keydown) and
    (Msg.wParam = vk_tab) and
    ((GetKeyState(VK_CONTROL) and 128) = 128) then
 begin
   if pc.ActivePageIndex = (pc.PageCount - 1) then
     pc.ActivePageIndex := 0
   else
     pc.ActivePageIndex := pc.ActivePageIndex+1;
   Handled := True;
 end;
end;


shc   (2004-09-15 13:52:00) [8]

Пробывал. Проблема в том, что, по-моему, на одно нажатие комбинации, несколько раз выполняется код.


Abel   (2004-09-15 13:37:00) [9]

Попробуйте TApplicationEvents.OnMessage(var Msg: tagMSG; var Handled: Boolean) например...


Наверх

Титульная страница Поиск, карта сайта Написать письмо