Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / про C++Builder / 5 сообщений из 5, страница 1 из 1
21.08.2003, 18:04
    #32243790
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про C++Builder
Есть значит, такая задача:
формочка, в которой несколько объектов TEdit. В них что-то вводится. По окончании ввода нажимается кнопка "+" (скан-код 107) в любом TEdite и всё, что введено пишется в базу, TEditы очищаются.

Вопрос: как поймать нажатие на "+" и сделать так, чтобы этот "+" не записался в TEdit, в котором его нажали?

я например юзаю такой event:
Код: plaintext
1.
2.
3.
void __fastcall Form::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
 if (Key ==  107 ) { сделать запись в базе }
}

а может можно какой другой?
...
Рейтинг: 0 / 0
22.08.2003, 08:49
    #32244062
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про C++Builder
Лови не KeyDown, а KeyPress

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void __fastcall TfrmMain::edPasswordDBKeyPress(TObject *Sender, char &Key)
{
  if(Key == '+'){
    .... // Чего-то делаешь
    Abort();  // После этого он не должен печататься.
  }
}
//---------------------------------------------------------------------------
...
Рейтинг: 0 / 0
25.08.2003, 09:50
    #32245778
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про C++Builder
Zmeishe, хороший совет, спасибо. Только я не использовал в обработчике onKeyPress Abort() , а просто присвоил Key = 0, после этого действительно не печатается.

Но в таком случае возникает ещё одна проблема:

onKeyPress в своём параметре передаёт символ нажатой клавиши ( char &Key ) , а он одинаковый у символа "+" в верхнем ряду кнопок и у символа "серый +" справа клавиатуры. А мне бы хотелось их как-то различать, чтобы в Edit можно было вписать " + 7 903 1234567" например, используя для этого верхний "+", и потом чего-то делать по нажатию правого "+".
...
Рейтинг: 0 / 0
25.08.2003, 10:37
    #32245841
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про C++Builder
Вот тупой способ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key){
  if( 43 ==Key)if(! Edit1->Tag)Key =  0 ;
}
// ---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,TShiftState Shift){
  if( 16 ==Key)Edit1->Tag= 1 ;
}
// ---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key,TShiftState Shift){
  if( 16 ==Key)Edit1->Tag= 0 ;
}
...
Рейтинг: 0 / 0
25.08.2003, 11:09
    #32245883
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про C++Builder
ZrenBy
Да, наверно у меня ещё не прошёл приступ утреннего слабоумия...
Я как то и не подумал о таком...
спасиба.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / про C++Builder / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]