bitanga |
Отправлено: 05.07.2003, 14:38 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 25
|
на форме много кнопок с цифрами и знаками (больше всего єто похоже на програму Калькулятор).
Нужно чтобы к примеру кнопка "1" на форме реагировала и на нажатие мышкой на неё и на нажатие клавиши на клавиатуре.
А теперь вопрос: Какой компонент-кнопку лучше для этого использовать?
и за одно, ещё общий вопрос:
Перечислите вкратце чем эти кнопарики отличаются, а то когда размещаю на форме, то выбираю "от балды". |
|
Admin |
Отправлено: 05.07.2003, 17:19 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Смотря для чего.
Если нужна просто с надписью — то типа Button
Если нужно и с картинкой — то типа TBitBtn
Если нужно их несколько (группу), и только с картинками
(без надписей) то обычно это TSpeedButton, но они
фокус ввода от клавиатуры не получают.
Можно и надпись на них разместить — но обычно они используются
без надписей с картинками (например быстрые кнопки).
Также они могут образовывать группу (GroupIndex) и быть в положении
"нажата","отжата" одна из них (Down), то есть при переключении
одной из них в положение "нажата", остальные кнопки этой
группы (с одинаковым GroupIndex) становятся в положение "отжата",
прочитать состояние можно по свойству Down. (true если нажата).
То есть, в Вашем случае, если нужно чтобы реагировала и на мышку
и на клавиатуру и получала фокус ввода от клавиатуры,
и отражалась картинка, можно использовать типа TBitBtn
Если фокус ввода от клавиатуры не нужен, то можно
TSpeedButton, а реакцию на нажатие кнопки на клавиатуре
можно всегда программно передать на обработчик кнопке,
для этого фокус ввода от клавиатуры не нужен.
Например, в том же калькуляторе — кнопки фокус ввода от клавиатуры
не получают, но нажатие клавиш реагируют, это вполне можно
использовать TSpeedButton.
Например размещаем на форме 3 кнопки типа TSpeedButton
в свойстве формы ставим KeyPreview в true,
чтобы на уровне формы перехватывать нажатие кнопок
клавиатуры и передаем на обработку в кнопки, у кнопок ставим
AllowAllUp = true и GroupIndex = 1
CODE |
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
SpeedButton1->Down = true;
Label1->Caption = "SpeedButton1";
Application->ProcessMessages();
Sleep(500);
SpeedButton1->Down = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
SpeedButton2->Down = true;
Label1->Caption = "SpeedButton2";
Application->ProcessMessages();
Sleep(500);
SpeedButton2->Down = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
SpeedButton3->Down = true;
Label1->Caption = "SpeedButton3";
Application->ProcessMessages();
Sleep(500);
SpeedButton3->Down = false;
}
//---------------------------------------------------------------------------
// реакция на нажатие на клавиатуре кнопок 1 2 3
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key == '1') SpeedButton1->Click();
if(Key == '2') SpeedButton2->Click();
if(Key == '3') SpeedButton3->Click();
}
//-----------------------------------------------------
|
А различного вида и формы красивые кнопки есть в других
компонентах, например CoolControls, EldoS ElPack и т.д...
смотри в закрытом форуме для зарегистрированных участников
Отредактировано Admin — 05/07/2003, 19:00
|
|
|