0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 6
1

Крутящаяся кнопка!

21.06.2010, 16:22. Показов 1808. Ответов 10
Метки нет (Все метки)

Доброго времени суток всем!!!
Нужно зделать круглую кнопку, при повороте которой в одну сторону - выполнялось одно действие, а в другую - другое (как енкодер в автомагнитоле). Как это осуществить? через BitBtn?
Просьба расписать все популярно, а то только недавно начал програмировать(
Заранее всем спасибо!!!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2010, 16:22
Ответы с готовыми решениями:

Крутящаяся форма
Помогите В создание крутящейся формы в Rad studio .... смысл такой при запуске открывается форма...

Как сделать что бы кнопка добавилась, а предыдущая кнопка не исчезла с страницы?
Добрый день. Есть кнопка1, которая добавляет кнопку2, следующая в свою очередь создает кнопку3....

Как сделать что бы кнопка добавилась, а предыдущая кнопка не исчезла с страницы?
Как сделать что бы кнопка3 добавилась, а кнопка2 не исчезла с страницы? <?php if...

Не работает кнопка Ctrl + левая кнопка мыши в Excel
Не работает кнопка ctrl + левая кнопка мыши в excel.Не выделяются ячейки.Хотя на рабочем столе или...

10
Мы все БОЛЬШАЯ программа
52 / 52 / 5
Регистрация: 16.04.2009
Сообщений: 489
21.06.2010, 17:22 2
Лучше всего это выполнить через Panel, сделать его круглым и нарисовать круг с помощью канвы, а потом перемещая круг по кругу имитировать вращение панели.
1
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 6
21.06.2010, 17:30  [ТС] 3
bond95, благодарю, но не мог бы ты описать подробнее описать? или пример кинуть? Буду очень признателен!!!
0
Мы все БОЛЬШАЯ программа
52 / 52 / 5
Регистрация: 16.04.2009
Сообщений: 489
21.06.2010, 18:19 4
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
HRGN rect;
rect=CreateEllipticRgn(11,12,Panel1->Width-8,Panel1->Height-8); //задает параметры формы
SetWindowRgn(Panel1->Handle,rect, true); //накладывает форму на панель
Ну а дальше накладываешь на панель Image с помощью канвы рисуешь круг:
C++
1
Image1->Canvas->Ellipse(20,20,40,40);
А дальше с помощью события OnMouseDown рассчитываешь и меняш положение круга.
5
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 6
21.06.2010, 21:32  [ТС] 5
Еще раз спасибо!!! Будим делать.
Еще один вопрос возник.
У меня есть кнопка
C++
1
2
3
4
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Beep(1200,100);//Звук нажатия на клавишу
}
Каким образом мне продублировать ее нажатием кнопки, тоесть чтоб кроме нажатия на этой кнопке мышки, она еще выполняла действия, при нажатии кнопки "Q" клавиатуры допустим?
И как зделать так, чтоб после WM_KEYDOWN - программа не продолжала работу, а ждала пока произойдет событие WM_KEYUP?
0
Мы все БОЛЬШАЯ программа
52 / 52 / 5
Регистрация: 16.04.2009
Сообщений: 489
22.06.2010, 12:50 6
В обработчик событий кнопки onKeyUp:
C++
1
2
if(Key=='Q')
Beep(1200,100);
Поставь этот же обработчик и для формы.
1
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 6
22.06.2010, 12:58  [ТС] 7
С первым разобрался. А вот как осуществить
чтоб после WM_KEYDOWN - программа не продолжала работу, а ждала пока произойдет событие WM_KEYUP?
Ведь после нажатия и удерживания кнопки, действие выполняется неоднократно, или я не прав?
Мне нужно подавать только 1 сигнал, и еще 1 когда кнопку отпущена.
0
Мы все БОЛЬШАЯ программа
52 / 52 / 5
Регистрация: 16.04.2009
Сообщений: 489
22.06.2010, 13:18 8
В обработчик событий кнопки onMouseUp запиши:
C++
1
2
if(Button==mbLeft)
Beep(1200,100);
1
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 6
22.06.2010, 13:30  [ТС] 9
Мы наверное не поняли друг друга(
Вообщем в моей проге есть обработчик keydown. При нажатии на кнопку - выполняется заданый код, и подается звуковой сигнал (бипом), и когда я держу кнопку нажатой - у меня сигнал подается не однократно.
Так как мне прописать ожидание отпуска клавиши, тоесть чтоб прога не принимала повторного нажатия на кнопку, а ожидала пока я не отпущу ее. Я думал через while, тоесть вписать в TForm1::Button1Click следующее:
C++
1
2
3
4
5
//при нажатии на кнопку переменная приравнивается к 1
while(переменная){
if(кнопка 'g' отпущена||кнопка мышки отпущена)
//подается нужный сигнал! или FormKeyUp(Sender); в котором прописан нужный мне сигнал.
переменная = 0;}
таким образом мы после нажатия на кнопку, мы открываем цикл, а при отпускании - закрываем его.
Единственное но, я не знаю как прописать отпускание клавиш в функции if?
0
Мы все БОЛЬШАЯ программа
52 / 52 / 5
Регистрация: 16.04.2009
Сообщений: 489
22.06.2010, 14:10 10
Либо я чего-то не понимаю но то что я тебе выше написал идеально подходит.
2
Покинул форум
3186 / 1365 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
22.06.2010, 14:26 11
drekhaker, попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool down=false;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(!down){
 
 if(Key == 'Q' ){
  down=1;
  Beep(1200,100);
 }}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
down=0;
}
//---------------------------------------------------------------------------
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2010, 14:26
Помогаю со студенческими работами здесь

Кнопка BS_OWNERDRAW или кнопка со своей картинкой
Есть код, с помощью которого можно менять картинку при нажатии, при фокусе { // ownerdraw...

Подскжите создать макрос , одно кнопка копирует выделенные объекты, вторая кнопка вставит эти данные в excel?
Sub macros6() Sheets("Ëèñò1").Select Range("C9:D13").Select Selection.Copy ...

Кнопка свертывания + кнопка справки (MFC)
Обшарил огромные просторы инета, так и не нашел VS MFC Диалоговое окно, как добавить...

кнопка на стоимость и кнопка на завтрашнюю дату
Добрый день. Мне нужно сделать в форме 2 кнопки У меня есть база данных из набора hdd, в которых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru