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

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

Переход стрелочками между окошками


Страницы:   1 2 3

Light-blr ©   (2010-05-07 01:59:00) 

Помогите, пожалуйста. На форме есть n окошек, расположенных одно под другим. Необходимо по стрелочке "вверх" переходить на окошко, расположенное выше текущего, ну и "вниз" соответственно.

Пытаюсь поймать сообщение, ничего у меня не выходит.
...
type
 TForm1 = class(TForm)
   Shape1: TShape;
   Edit1: TEdit;
   Shape2: TShape;
   Edit2: TEdit;
   procedure Edit1Enter(Sender: TObject);
   procedure Edit1Exit(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormShow(Sender: TObject);
   procedure WMKeyUp(var Msg:TWMKeyUp); message WM_KeyUp;
...
procedure TForm1.WMKeyUp(var Msg:TWMKeyUp);
begin
if Msg.CharCode = vk_Up then
 if Order[tp,3]<>0 then tp:=Order[tp,3];
Comp:=FindComponent(Names[tp]);
(Comp as TEdit).SetFocus;
inherited;
end;
в массиве Order у меня хранятся индексы названий окошек сверху/снизу/справа/слева от текущего.

Так вот в эту функцию я никак не попадаю, хотя там стоит точка останова. То есть ничего она не ловит и соответственно переход между окошками по стрелочкам не происходит.

Помогите, пожалуйста, разобраться с этой ситуацией.


Плохиш   (2010-05-15 23:50:00) [21]

Слишкам многа букав..


Light-blr   (2010-05-15 23:22:00) [22]

> Плохиш ©   (08.05.10 02:38) [8]

> Бедная страна, у же в дурдоме кодеров ищут...

как говорится, не хами и не хамим будешь.
описала по-минимуму, поскольку в случае реализации перехода стрелочками между двумя окошками, организовать такой же переход между всеми остальными несложно. но когда посыпались предложения "переходить табом и не париться", задачу уточнила. видимо, мастерам делфи лень читать что-то кроме первого сообщения.
я ведь не спрашивала, каким образом можно переходить между окошками, предполагать что программист не знает про табуляцию может только <не очень умный человек>.
пишите, пишите свои "великие игрушки". я лично ваяю сугубо прикладные программы персонально для себя. никому не пытаюсь "загнать", не предполагаю написать нечто грандиозное, руководствуясь ответами на вопросы в конференции для начинающих.
не думала, что здесь обитают настолько неприятные типы. простите, что вмешалась своим вопросом в сплошной поток "помогите не могу посчитать сумму десяти чисел", на такие, конечно, попроще отвечать. мастера, ага...


Anatoly Podgoretsky   (2010-05-10 07:44:00) [23]

Ну так не всем помогает, особенно в запущеном случае, надо повторять постоянно.


Германн   (2010-05-10 02:58:00) [24]


> Anatoly Podgoretsky ©   (09.05.10 10:24) [18]
>
> > Германн  (09.05.2010 02:36:16)  [16]
>
> Ты кончай с этим. Лучше собаку выведи погулять.

Вывел, блин.
Впервые за много лет вышли погулять всей семьей. Плюс знакомая моей жены и дочери.
В результате все промокли и замерзли. Плюс обострилась хроника моей ноги (из-за того, что она промокла под холодным дождем). Плюс обострилась хроника моей руки (из-за того, что пришлось тянуть собаку, которая жутко боится грозы).

Но после "послеполуночной", примерно полуторачасовой работы над эксклюзивной версией газоанализатора, хроники ушли.
:)


Anatoly Podgoretsky   (2010-05-09 10:24:00) [25]

> Германн  (09.05.2010 02:36:16)  [16]

Ты кончай с этим. Лучше собаку выведи погулять.


Andy BitOff   (2010-05-09 02:39:00) [26]

> MsGuns ©   (09.05.10 02:04) [15]
> дома давно уже принципиально не работаю

А я потому, что открыл для себя Бателфилд =)))


Германн   (2010-05-09 02:36:00) [27]


> MsGuns ©   (09.05.10 02:04) [15]
>
> >Германн ©   (08.05.10 02:54) [11]
> >И где же та игрушка? Ссылку дай.
>
> Вот уж бином Ньютона, самому влом напрячься

А оно мне надо? Напрягаться, то есть? Но уж если если сказал, то отвечай за сказанное!

P.S.
Для меня уже давно дом == работа.


MsGuns   (2010-05-09 02:04:00) [28]

>Германн ©   (08.05.10 02:54) [11]
>И где же та игрушка? Ссылку дай.

Вот уж бином Ньютона, самому влом напрячься :)
а если без шуток, то на работе все мои штучки - дома давно уже принципиально не работаю


Anatoly Podgoretsky   (2010-05-08 10:36:00) [29]

> Плохиш  (08.05.2010 02:56:12)  [12]

Partizanen, no pasaran.


Германн   (2010-05-08 03:08:00) [30]


> Плохиш ©   (08.05.10 02:56) [12]
>
>
> > Германн ©   (08.05.10 02:42) [9]
>
> Судя по второму абзацу из [5], я до шедевра не доживу.

Не дрейфь, старик! Мы тут многих переживём/пережуём.
:)


Плохиш   (2010-05-08 02:56:00) [31]


> Германн ©   (08.05.10 02:42) [9]

Судя по второму абзацу из [5], я до шедевра не доживу.

> MsGuns ©   (08.05.10 02:48) [10]

Ну судя по постепенно выползающим из очередного партизана подробностям, тут можно и стринггридом обойтись.


Германн   (2010-05-08 02:54:00) [32]


> MsGuns ©   (08.05.10 02:48) [10]
>
> Смех смехом, но когда то была такая проблемка

И где же та игрушка? Ссылку дай.


MsGuns   (2010-05-08 02:48:00) [33]

Смех смехом, но когда то была такая проблемка, в итоге написал пару функций, которые определя "геометрические" координады контолов на контейнере и перемещали по кнопкам фокус "куда надо"
:)


Германн   (2010-05-08 02:42:00) [34]


> Плохиш ©   (08.05.10 02:38) [8]


> Бедная страна, у же в дурдоме кодеров ищут...

Андрей. Не спеши уж с такими упрёками.
А может это будет новая игрушка, которая поразит весь мир, как когда-то Тетрис!
:)


Плохиш   (2010-05-08 02:38:00) [35]


> Light-blr   (07.05.10 01:59)
>
> Помогите, пожалуйста. На форме есть n окошек, расположенных
> одно под другим. Необходимо по стрелочке "вверх" переходить
> на окошко, расположенное выше текущего, ну и "вниз" соответственно.
>


> Light-blr   (07.05.10 22:15) [5]
>
> А какой порядок правильный, если мне нужно в 4 стороны переходить?
>  Ну не получается же линейно!

Бедная страна, у же в дурдоме кодеров ищут...


Light-blr   (2010-05-07 23:07:00) [36]

спасибо! :) всё работает как часы.


Игорь Шевченко   (2010-05-07 22:59:00) [37]


> Теперь озадачилась вопросом, как при нажатии стрелочки отследить
> одновременное нажатие клавиши ctrl


if GetKeyState(VK_CONTROL) < 0 then
// контрол нажат


Light-blr   (2010-05-07 22:15:00) [38]

А какой порядок правильный, если мне нужно в 4 стороны переходить? Ну не получается же линейно!

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


Плохиш   (2010-05-07 10:22:00) [39]


>  if Order[tp,3]<>0 then tp:=Order[tp,3];
> Comp:=FindComponent(Names[tp]);
> (Comp as TEdit).SetFocus;
> inherited;
> end;
> в массиве Order у меня хранятся индексы названий окошек
> сверху/снизу/справа/слева от текущего.
>

Выкинуть этот код вместе с массивом.
Расставить TabOrder в правильном порядке и использовать для перемещения:

     PostMessage(Handle, WM_NEXTDLGCTL, 1, 0);
     PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);


Light-blr   (2010-05-07 09:06:00) [40]

Спасибо, про таб и шифт-таб я знаю. Проблема в том, что мне надо переходить с окошка в 4 стороны (вверх-вниз-вправо-влево), а таб предполагает линейный порядок, т.е. только 2 стороны.

Leonid Troyanovsky
спасибо, почитала. Поняла, что надо заменить WM_KeyUp (ну или WM_KeyDown) на CM_CHILDKEY, поскольку окошко так и норовит само обработать сообщение, и WM_KeyDown не срабатывает.


Страницы:   1 2 3

Наверх

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