powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / про C++Builder
5 сообщений из 5, страница 1 из 1
про C++Builder
    #32243790
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть значит, такая задача:
формочка, в которой несколько объектов 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
про C++Builder
    #32244062
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лови не KeyDown, а KeyPress

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

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

onKeyPress в своём параметре передаёт символ нажатой клавиши ( char &Key ) , а он одинаковый у символа "+" в верхнем ряду кнопок и у символа "серый +" справа клавиатуры. А мне бы хотелось их как-то различать, чтобы в Edit можно было вписать " + 7 903 1234567" например, используя для этого верхний "+", и потом чего-то делать по нажатию правого "+".
...
Рейтинг: 0 / 0
про C++Builder
    #32245841
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тупой способ
Код: 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
про C++Builder
    #32245883
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZrenBy
Да, наверно у меня ещё не прошёл приступ утреннего слабоумия...
Я как то и не подумал о таком...
спасиба.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / про C++Builder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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