C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как создать напрмер на стрингриде такую роцедуру:, Мне надо сохздать КeyPress
Олега
Отправлено: 03.11.2003, 23:03


Не зарегистрирован







Что бы она вызывалсь, когда какаялибо кнопка нажималась на ней... И мне ещё надо знать какая то кнопка! Пмомщи прошу у вас!
exp
Отправлено: 04.11.2003, 01:12


Мастер участка

Группа: Участник
Сообщений: 304



Простенькая процедура, блокирующая ввод любых символов, кроме цифр 0..9

Насчет распознавания нажатой кнопки, думаю, нужно узнавать код кнопки а потом сравнивать с ASCII.

CODE

void __fastcall TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)
{
AnsiString str=StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row];// текущее содержание ячейки
switch (Key)    // Кеу — значение нажатой кнопки
  {
   case '1':{str+='1';break;} // допустимые для ввода значения Кеу      
   case '2':{str+='2';break;} // прибавляются к содержанию ячейки
   case '3':{str+='3';break;} //
   case '4':{str+='4';break;} //
   case '5':{str+='5';break;} //
   case '6':{str+='6';break;} //
   case '7':{str+='7';break;} //
   case '8':{str+='8';break;} //
   case '9':{str+='9';break;} //
   case '0':{str+='0';break;} //
   default :{break;}              // если введена не цифра, то ничего не надо добавлять в str
  }
  StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]=str; // перезапишем новое строковое "число" в ту же ячейку.
}


Nimble
Отправлено: 04.11.2003, 11:41


Дежурный стрелочник

Группа: Участник
Сообщений: 34



Это прокатит если курсор в конце строки, а если нет? Процедура наверняка будет добавлять символ в конец строки
Asher
Отправлено: 04.11.2003, 13:25


Мастер участка

Группа: Модератор
Сообщений: 550



Да не надо вообще никого никуда добавлять.
Если символ недопустимый, то в указанной выше процедуре делаешь Key = 0; и все. N/t/ просто не пропускаешь его дальше.
а полученную строку с учетом всех там del, bs, и ходьбы курсором прочтешь в StrinGrid1->Cells[ACol][ARow];//

Вернуться в Вопросы программирования в C++Builder