Aptem |
Отправлено: 24.10.2003, 07:48 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Привет, ВСЕМ !
У меня на форме 2 StringGrid'а. Как сделать так, чтобы при нажатии на клавишу табуляции синяя полоска выделения исчезала в одном гриде и появлялась в другом и наоборот ?
Пытался обработать нажатие клавиши Tab через OnKeyPress, но это событие не срабатывает для клавиши Tab.
Помогите !
Спасибо за внимание !
|
|
Admin |
Отправлено: 24.10.2003, 22:01 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Возможно что-то немного не так делаю, поправьте если что
но работает
В Unit1.h:
CODE |
private: // User declarations
void __fastcall CMDialogKey(TCMDialogKey& Message);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_DIALOGKEY, TCMDialogKey, CMDialogKey)
END_MESSAGE_MAP(TForm)
|
-----
В Unit1.cpp:
CODE |
void __fastcall TForm1::CMDialogKey(TCMDialogKey& Message)
{
if(Message.CharCode != VK_TAB);//inherited
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_TAB) Form1->Caption = "Tab Key Down 1 !";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_TAB) Form1->Caption = "Tab Key Down 2!";
}
//-----------------------------------------------
|
|
|
Admin |
Отправлено: 24.10.2003, 22:45 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Немного изменил код, чтобы TAB вне StringGrid 1 2 работали:
В Unit1.h:
CODE |
private: // User declarations
void __fastcall CMDialogKey(TCMDialogKey& Message);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_DIALOGKEY, TCMDialogKey, CMDialogKey)
END_MESSAGE_MAP(TForm)
}; |
В Unit1.cpp
CODE |
//---------------------------------------------------------------------------
void __fastcall TForm1::CMDialogKey(TCMDialogKey& Message)
{
if(Message.CharCode != VK_TAB ||
(ActiveControl != StringGrid1 && ActiveControl != StringGrid2))
TForm::Dispatch(&Message);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_TAB){
Key = 0;
StringGrid2->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_TAB){
Key = 0;
StringGrid1->SetFocus();
}
}
//---------------------------------- |
Отредактировано Admin — 25/10/2003, 12:23
|
|
|