Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.07.2015, 18:42   #1
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию С++, подскажите что не так в коде

Код:
char DecimalSeparator = ',';
//-------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
Edit2->OnKeyPress = EditKeyPress;
Edit3->OnKeyPress = EditKeyPress;
Edit1->Tag = 1;
Edit2->Tag = 2;
Edit3->Tag = 3;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::EditKeyPress(TObject *Sender, System::WideChar &Key)
{
TEdit * Edit;
Edit = (TEdit *)Sender;
if (Key == VK_RETURN)
{
 switch (Edit->Tag) {
	case 1: Edit2->SetFocus();
	case 2: Edit3->SetFocus();
	case 3: Button1->SetFocus();
 }
 return;
}
   if (((Key >= '0') && (Key <= '9')) || Key == VK_BACK) {
   return;
}
if ((Key == ',') || (Key = '.' )) {
Key = DecimalSeparator;
if ((Edit->Text).Pos(DecimalSeparator) !=0) 
Key = 0;
return;
}
Key = 0;
}
По идеи должно разрешить ввод чисел 0-9 и знаков ',' и '.' . Так же при нажатии Enter перемещать курсор на другое поле ввода или на кнопку выполнить.
При нажатии Enter не меняется поле ввода, но скидывает на кнопку. Может кто то увидит, чего не хватает в коде.

Последний раз редактировалось Dima-91; 14.07.2015 в 19:02.
Dima-91 вне форума
Старый 14.07.2015, 19:10   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

break`ов в case не хватает, вот он и проваливается до кнопки...
p51x вне форума
Старый 14.07.2015, 19:18   #3
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Спасибо, на элементарном застопорился;-)
Еще вопрос, а звук при переходе возможно отключить, такой звук как ShowMessage или другая вещь с ошибкой связанная...

Последний раз редактировалось Dima-91; 14.07.2015 в 19:20.
Dima-91 вне форума
Старый 14.07.2015, 22:10   #4
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
а звук при переходе возможно отключить
Не уверен что корректно, но можно эту проблему решить так:

Код:
        ...
        if (Key == VK_RETURN)
        {
                switch (Edit->Tag) {
	                case 1: Edit2->SetFocus();
                        break;
                	case 2: Edit3->SetFocus();
                        break;
                	case 3: Button1->SetFocus();
                        break;
                }
                Key= 0;
                return;
        }
        ...
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 14.07.2015 в 22:17.
Krasiosoft вне форума
Старый 15.07.2015, 06:21   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

2 Krasiosoft, как ваш код относится к процитированному? про break уже ответили и ТС написал, что разобрался.

Цитата:
а звук при переходе возможно отключить, такой звук как ShowMessage или другая вещь с ошибкой связанная
Вообще-то это задается звуковой схемой в винде. Не уверен, что стоит это менять ради одного вашего приложения. Но если вам это действительно надо, можно посмотреть варианты.
p51x вне форума
Старый 15.07.2015, 16:09   #6
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

p51x, Вы наверно не обратили внимание на: Key = 0
Код:
       if (Key == VK_RETURN)
       {
                Key = 0;
                return;
       }
тогда при нажатии "Enter" не будет звука. Звук получается только тогда, когда в TEdit попадают непечатаемые символы, если не ошибаюсь. 0 в их число не входит.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума
Старый 15.07.2015, 17:26   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Цитата:
Вы наверно не обратили внимание на: Key = 0
Обратил, но:
1. там кнопка уже нажалась и если звук связан с ней, то уже проигрался
2. по ентеру итак нету звуа
3. вы пропустили пост , в котором говорится, что это уже другой вопрос и он относится к ошибкам и мессаджбоксу
p51x вне форума
Старый 15.07.2015, 17:31   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

p51x, не соглашусь. именно при смене фокуса и возникает звук ошибки.
если key присвоить нулю, то, возможно, этот звук при переходе исчезнет!

ждём реакции TC.
Serge_Bliznykov вне форума
Старый 15.07.2015, 17:45   #9
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
2. по ентеру итак нету звуа
В C++ Builder'e, если тупо поставить компонент TEdit, стать в него и нажать "Enter", то звук, похожий на ShowMessage у меня есть, правда проверял на C++ Builder 6. Поэтому я и подумал, что проблема именно в этом, т.к. других звуков нет. Возможно, в более новых версиях IDE такого звука уже нету.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума
Старый 15.07.2015, 20:20   #10
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Не уверен что корректно, но можно эту проблему решить так:

Код:
        ...
        if (Key == VK_RETURN)
        {
                switch (Edit->Tag) {
	                case 1: Edit2->SetFocus();
                        break;
                	case 2: Edit3->SetFocus();
                        break;
                	case 3: Button1->SetFocus();
                        break;
                }
                Key= 0;
                return;
        }
        ...
Да проблему решило, спасибо буду знать.

А что значит "ТС" , звучит как обзывательство... ?

Последний раз редактировалось Stilet; 15.07.2015 в 20:26.
Dima-91 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структуры в C. Ошибка в коде, что не так spectrum988 Помощь студентам 3 22.12.2013 00:48
что в коде не так? skaaater Visual C++ 2 20.02.2012 12:32
Что не так в коде? CPO4HO!! Legolas001 Visual C++ 6 03.10.2011 14:18
Что в коде не так? Simply-Art Общие вопросы Delphi 3 08.07.2007 19:32