![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
Господа, объясните как происходит удаление выделенного блока, а, точнее, как это я должен и должен ли делать из билдера? Пример проблемы. В поле текст стоит 98000. Мышкой выделяю 3 последних нуля и набиваю 'К'. Логика построена так, что это, на самом деле, одно и то же. Но в пошаге вижу, что в тексте, по-прежнему 98000, 'K' добавляет свои законные 3 нуля и я получаю переполнение.
Что и как я должен сделать, чтобы это работало, как и должно, а именно: выделенные 3 нуля замещаются на 'К', а 'К', в свою очередь, замещается 3 нулями, что сейчас и происходит. за исключением того, что выделенные нули никуда не деваются. Спасибо --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Используй while
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
Очень подробный ответ! А короче можно?
--------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
Можно
![]()
По-моему, так. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
А, по-моему, нет!
Речь идет об общем случае, а приведен был конкретный пример. Вопрос в том, что надо сделать, чтобы при выделенном блоке, любая нажатая клавиша сначала удаляля это блок, а потом осуществляла ввод. Я полагал, что винда или билдер это делают без моего участия, ан нет или я еще чего-то не знаю. А если вручную, то надо ставить обработчик на KeyPress(), хотя хотелось бы without using hands! --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Приведи код, всё должно работать и без твоего участия, компонент Memo и Edit ничего от себя не делают - это только надстройка над виндовыми API.
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
void __fastcall TForm1::LaKeyPress(TObject *Sender, char &Key)
{ if (Key >= '0' && Key <= '9'){ if ( La->Text.Length() == 9 ){ ShowMessage("This is over the limit"); Key = 0; } } else if (Key == '.'){ if ( strchr(La->Text.c_str(),'.') != NULL){ // decimal point already exists Key = '\a'; } } else if (Key == 'k' || Key == 'K'){ if (La->Text.IsEmpty()){ multi->ItemIndex = 0; Key = '\a'; } else { multi->ItemIndex = 1; Key = 0; Pect->SetFocus(); } } else if (Key == 'm' || Key == 'M'){ if (La->Text.IsEmpty()){ multi->ItemIndex = 0; Key = '\a'; } else { multi->ItemIndex = 2; Key = 0; Pect->SetFocus(); } } else if (Key != '\b') Key = '\a'; } --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
присваивай значение SelText, а значение Key обнуляй
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
SelText is the selected portion of the edit control’s text.
__property System::AnsiString SelText; Description Read SelText to determine the value of the selected text. Set SelText to replace the selected text with a new string. If there is no selection, but the edit control has focus, set SelText to insert a new string into the text at the cursor. Таким образом, я должен ВСЕ KeyPress() модифицировать на SelText = Key Если я принимаю ввод и = 0 если нет ![]() --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
Сейчас еще глянул: если выделено все целиком 98000 и я ввожу 98к, то все как и должно быть, а если выделены ТОЛЬКО нули - дудки - дописываем еще три! Странно это.
--------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |