IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Builder 6.0
Fanat
сообщение 31.01.2008 17:41
Сообщение #1


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Хочу сделать следуюшее...чтобы по определенным клавишам двигалася напиример Button1,
а по другим Button2...написал примерно так


void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
// Memo1->Lines->Add(Msg.wParam);
const nStep = 1;
switch(Msg.wParam)
{
case 40: Button1->Top += nStep;
break;
case 38: Button1->Top -= nStep;
break;
case 37: Button1->Left -= nStep;
break;
case 39: Button1->Left += nStep;
break;

case 83: Button2->Top += nStep;
break;
case 87: Button2->Top -= nStep;
break;
case 65: Button2->Left -= nStep;
break;
case 68: Button2->Left += nStep;
break;

}



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

Сообщение отредактировано: Fanat - 31.01.2008 17:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 1.02.2008 1:29
Сообщение #2


Гость






Цитата
Хотелось бы всё таки узнать как сделать через потоки...
Ты действительно этого хочешь? Тогда посмотри присоединенный файл, там описание того, как это можно сделать. Один из способов, скажем так...

Прикрепленный файл  fanat.txt ( 2.08 килобайт ) Кол-во скачиваний: 415


Цитата
А зачем Handled ( - признак обработки события) выставлять в true?..
Затем, что если ты этого не сделаешь, и у тебя на форме будет, например, Edit, и фокус будет на нем, то этот Edit будет заполняться символами, которые ты вводишь (нажимая клавишу). А если ничего из текстовых контролов не будет - то программа будет пищать. А установкой Handled = true ты говоришь обработчику ApplicationMessage, что это событие уже обработано, дальше по цепочке его передавать не надо...
 К началу страницы 
+ Ответить 
Fanat
сообщение 1.02.2008 11:53
Сообщение #3


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Цитата(volvo @ 1.02.2008 1:29) *

Ты действительно этого хочешь? Тогда посмотри присоединенный файл, там описание того, как это можно сделать. Один из способов, скажем так...

Прикрепленный файл  fanat.txt ( 2.08 килобайт ) Кол-во скачиваний: 415


Затем, что если ты этого не сделаешь, и у тебя на форме будет, например, Edit, и фокус будет на нем, то этот Edit будет заполняться символами, которые ты вводишь (нажимая клавишу). А если ничего из текстовых контролов не будет - то программа будет пищать. А установкой Handled = true ты говоришь обработчику ApplicationMessage, что это событие уже обработано, дальше по цепочке его передавать не надо...


Да...интересно..я вроде во всём разобрался...

И я так понимаю Sleep(100); чтобы мы успели нажать какую либо кнопку...но при етом слишком скорость маленькая...а при Sleep(10) у меня в конце концов всё таки зависало =(...
А вообще при отключения Sleep кнопки почему то движуться с разными скоростями и зависает быстро..=(
Не мог бы ты привести пример ещё какого либо способа...

(не обязательно на счёт данной задачи...я могу разобраться и сам попрбовать сделать..=)...в общем как тебе удобней...)

Сообщение отредактировано: Fanat - 1.02.2008 11:54
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Fanat   Builder 6.0   31.01.2008 17:41
volvo   Угу... Чтобы наконец убедиться, что весь GUI долже...   31.01.2008 19:32
Fanat   Да...так работает..=) Хотелось бы всё таки узнать...   31.01.2008 23:16
volvo   Ты действительно этого хочешь? Тогда посмотри прис...   1.02.2008 1:29
Fanat   Ты действительно этого хочешь? Тогда посмотри при...   1.02.2008 11:53
volvo   Поменял в Execute() условие выхода на ... } whi...   1.02.2008 12:24
Fanat   Поменял в Execute() условие выхода на ... } wh...   1.02.2008 12:34
volvo   Должны... Но их должна завершить система, а это тр...   1.02.2008 12:47
Fanat   Должны... Но их должна завершить система, а это т...   1.02.2008 13:10
volvo   Ну, например, вот так: const int dirLt = 0; const ...   1.02.2008 14:45
Fanat   А что значит строчка __property TDir GetState = ...   2.02.2008 3:01
volvo   Угу... Именно свойства. А что непонятно? Описываеш...   2.02.2008 4:22
Fanat   Угу... Именно свойства. А что непонятно? Описывае...   2.02.2008 13:27
volvo   Можно. Только тогда придется делать: Handled =...   2.02.2008 13:41
Fanat   Можно. Только тогда придется делать: Handled ...   2.02.2008 14:01


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 10:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"