Om |
Отправлено: 13.07.2005, 14:05 |
|
Не зарегистрирован
|
Подскажите плиз, как при вводе символов в поле ComboEdit
заменять их на лету. Например чтобы при нажатии "пробела" вводился
символ "точки"? |
|
Sl@Sh |
Отправлено: 13.07.2005, 16:02 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
В событии OnKeyPress читать последний символ строки :
char c = Combo->Text[Combo->Text.Length() — 1];
А дальше условная инструкция и.т.п.
|
|
** Admin |
Отправлено: 13.07.2005, 21:33 |
|
Не зарегистрирован
|
В событии OnKeyPress только не последний символ,
а параметр Key.
CODE |
void __fastcall TForm1::ComboBox1KeyPress(TObject *Sender, char &Key)
{
if(Key == ' ') Key = '.';
}
| |
|
Om |
Отправлено: 14.07.2005, 09:09 |
|
Не зарегистрирован
|
Спасибо за советы. Уменя еще один вапрос родился:
На форме два ComboEdit, хочу чтобы при нажатии "стрелок(up/down)"
фокус переходил с одного на другой. В событии OnKeyDown ставлю условие if(Key == VK_RETURN || Key == VK_UP || Key == VK_DOWN)
{...обработка текста... ComboEdit2->SetFocus();} при нажатии Enter все нормально работает, а на стрелки не реагирует. Прогоняю по шагам: ComboEdit2->SetFocus(); типа выполняется, но фокус остается на том же ComboEdit. |
|
Guest |
Отправлено: 14.07.2005, 11:10 |
|
Не зарегистрирован
|
Значит где-то что-то еще меняете, например Key.
CODE |
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_RETURN || Key == VK_UP || Key == VK_DOWN)
ComboBox2->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_RETURN || Key == VK_UP || Key == VK_DOWN)
ComboBox1->SetFocus();
}
//---------------------------------------------------------------------------
|
так переходы работают нормально.
|
|