![]() |
|
![]() ![]() ![]() |
|
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
имеется форма, но которой есть 2 компонента MaskEdit. необходимо, чтобы когда юзер нажимал первый раз Enter, то проверялось, есть ли в первом поле какая то надпись, и если есть, тоактивным бы становилась второй компонент, а если нету никакой записи, то выводилось бы сообщение...
я наклепал вот такой код, но что то он работает несовсеми так, как надо....
что у меня не так сделано?? подскажите пожалуйста! |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 7 Всего: 122 |
|
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Rodman , выдал вот такие ошибки
[C++ Error] Unit3.cpp(27): E2034 Cannot convert 'AnsiString' to 'const char *' [C++ Error] Unit3.cpp(27): E2342 Type mismatch in parameter 'Str' (wanted 'const char *', got 'AnsiString') [C++ Error] Unit3.cpp(32): E2268 Call to undefined function 'ShowMesage' как исправить? |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
StrLen(MaskEdit1->Text)
Заменить на MaskEdit1->Text.Length() или на StrLen(MaskEdit1->Text.c_str()) |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Anikmar, сделал, но эффект тот же самый, что и с моим вариантом...при нажатии на Enter при пустом поле активным все равно становится второй компонент... я уж не знаю, что и делать!
![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
А изначально где фокус?
Вы ставите обработчик нажатия клавиши на конкретный компонене MaskEdit. Т.е., чтобы обработчик сработал, необходим фокус именно на этом компоненте. Если обработка клавиши нужна в рамках формы, то попробуйте поставить обработчик на событие формы. Например, OnShortcut |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Anikmar , изначально у меня на событии OnActivate у формы стоит MaskEdit1->SetFocus();
|
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Возможно не активен CanFocus или лучше сделать в событии OnPaint
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
В никаких событиях прописывать ничего не надо, просто пишешь код в OnKeyDown:
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Klin , все равно такая же история....давайте поподробней расскажу что у меня за история....
есть программа.... при ее открытии открываются 2 формы... активная форма, как раз та, на которой находятся компоненты MaskEdit. так вот вот...эта форма, как бы выполняет регистрацию пользователя...т.е. пользователь вволит свои данные, а потом в конце работы программы эти данные( фамилия, имя) выводятся на экран при выводе результатов... я хочу сделать, чтобы если пользователь не ввел в какое какое либо из полей данные, выводилось ссобщение о том что он не ввел данные... вот код этой формы....
так вот! когда пользователь не ввел в поле "имя" свое имя, то сообщение выводится, а когда не ввел фамилию, то активным становится второй MaskEdit, хотя вместо этого должно выводится сообщение о том, что он не ввел фамилию! помогите исправить, что у меня не так!!! я уж не знаю, что делать, вроде все варианты перепробовал! |
|||
|
||||
Anikmar |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
По-моему неправильное условие:
Надо так:
или так:
|
||||||
|
|||||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
пробовал и так! но как ни странно, вашим методом она работает неправильно.... при нажатии на Enter тогда прост оактивируется кнопка BitBtn!!! Это сообщение отредактировал(а) susanin - 15.4.2007, 22:04 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Там точно else не пропущен? Можно еще разок взглянуть на ваш код, который неправильно работает?
|
|||
|
||||
Klin |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Я уже писал, как нужно составить условие! Пожалуйста, программисты, будьте внимательны в вашем коде.
Вы пишете:
Здесь 2 ошибки: 1) "||" - означает "или", а нужно использовать "и" (&&) 2) Перевожу ваш код:
Ваша ошибка в не правильном условии, надо писать так:
Это сообщение отредактировал(а) Klin - 15.4.2007, 23:11 -------------------- Я человек - попробуйте обвинить меня за это. |
||||||
|
|||||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Однако, я не считаю, ваш код полным, поскольку после того как пользователь ввел данные, то кнопка становится активной. После этого юзер может спокойно удалить все данные и наслаждаться своей смекалкой. Поэтому я предлагаю поступить так:
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Klin , вы будете смеяться, но результата никакого! после первого нажатия на Enter фокус по прежнему переходит на второй компонент MaskEdit, а после второго нажатия кнопка BitBtn становится активной и все.... никаких сообщений не выводится....
|
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Обхохочешся, вот исходник(если не получится вложите свой):
Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Klin , сделал ваш исходник, ничего нового не обнаружил...точно такая же история.... я попробовал сделать то же самое с компонентом Edit...и с ним все получилось...сообщение выводилось.....может это зависит что то от MaskEdit????может там от масик что то зависит???
Добавлено через 11 минут и 19 секунд все! разобрался!!! все заработало! Klin , спасбо огромное! |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
код работает, но только с MaskEdit у которого не задана маска.....что сделать, чтобы он заработал при заданной маске????
![]() |
|||
|
||||
Klin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Блин. а с маской придется повозиться. Плохо, что маску я не знаю, но возможно так:
p.s. но если использовать маску и недосписать строчку до конца, то при нажатии на enter выдается внутренее сообщение MaskEdit об ошибке. Постараюсь от него избавиться. Все понял! ![]() Ну а код получается примерно таким:
Вроде все учел... Это сообщение отредактировал(а) Klin - 16.4.2007, 02:05 -------------------- Я человек - попробуйте обвинить меня за это. |
||||
|
|||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Klin , спасибо! все правильно теперь! один только вопос не по теме....
![]() а за что отвечаетт событие MaskEdit1Change??? |
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
При любом изменении данных в поле Text выполняется заданные действия.
з.ы. желательно сделать вопрос решенным. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
1. Непонятно зачем в MaskEdit использовать обработку вводимых символов ?
void __fastcall TForm3::MaskEdit2KeyPress(TObject *Sender, char &Key) { if ( WideChar(Key)>=65 && WideChar(Key)<=122 || WideChar(Key)==32) Key=NULL; } 2. Написано WideChar(Key)>=65 - зачем ? Нужно просто Key>=65 ну и вдогонку Думаю этот ман будет ответом на твой вопрос. А вообще маска на то и маска чтоб быть строгой формой и отсеивать неверный ввод. Символы шаблона маски : ! Наличие символа «!» означает, что в EditText недостающие символы предваряются пробелами, а отсутствие символа «!» означает, что пробелы размещаются в конце. > Символ «>» означает, что все последующие за ним символы должны вводиться в верхнем регистре, пока не кончится маска или пока не встретится символ «<». < Символ «<» означает, что все последующие за ним символы должны вводиться в нижнем регистре, пока не кончится маска или пока не встретится символ «>». <> Символы «<>» означают, что анализ регистра не производится. \ Символ «\» означает, что следующий за ним символ является буквенным, а не специальным, характерным для маски. Например, символ «>» после символа «\» воспримется как знак >, а не как символ, указывающий на верхний регистр. L Символ «L» означает, что в данной позиции должна бытъ буква. l Символ «l» означает, что в данной позиции может быть только буква или ничего. A Символ «А» означает, что в данной позиции должна быть буква или цифра. a Символ «а» означает, что в данной позиции может быть буква, или цифра, или ничего. C Символ «С» означает, что в данной позиции должен быть любой символ. c Символ «с» означает, что в данной позиции может быть любой символ или ничего. 0 Символ «0» означает, что в данной позиции должна быть цифра. 9 Символ «9» означает, что в данной позиции может быть цифра или ничего. # Символ «#» означает, что в данной позиции может быть цифра, знак «+», знак «-» или ничего. : Символ «:» используется для разделения часов, минут и секунд. / Символ «/» используется для разделения месяцев, дней и годов в датах. Символ « » означает автоматическую вставку в текст пробела. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Dem_max , и зачем этот мануал было писать??? это я все и так в книге читал... а дописывать надо было для того, чтобы не вводились английские буквы..
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |