Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с MaskEdit 
V
    Опции темы
susanin
Дата 16.4.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Klin , вы будете смеяться, но результата никакого! после первого нажатия на Enter фокус по прежнему переходит на второй компонент MaskEdit, а после второго нажатия кнопка BitBtn становится активной и все.... никаких сообщений не выводится....
PM MAIL   Вверх
Klin
Дата 16.4.2007, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Обхохочешся, вот исходник(если не получится вложите свой):

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  sample.zip 28,77 Kb


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
susanin
Дата 16.4.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Klin , сделал ваш исходник, ничего нового не обнаружил...точно такая же история.... я попробовал сделать то же самое с компонентом Edit...и с ним все получилось...сообщение выводилось.....может это зависит что то от MaskEdit????может там от масик что то зависит???

Добавлено через 11 минут и 19 секунд
все! разобрался!!! все заработало! Klin , спасбо огромное!
PM MAIL   Вверх
susanin
Дата 16.4.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



код работает, но только с MaskEdit у которого не задана маска.....что сделать, чтобы он заработал при заданной маске???? smile 
PM MAIL   Вверх
Klin
Дата 16.4.2007, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Блин. а с маской придется повозиться. Плохо, что маску я не знаю, но возможно так:
Код

 if (Key == VK_RETURN)
  if (MaskEdit1->Text.Pos(" ")>=0 && MaskEdit1->Text.Pos(" ")!=1) MaskEdit2->SetFocus();
  else ShowMessage ("Фамилия не введена!");


p.s. но если использовать маску и недосписать строчку до конца, то при нажатии на enter выдается внутренее сообщение MaskEdit об ошибке. Постараюсь от него избавиться.

Все понял! smile Во первых, в маске символом для пробелов делаем пробел;) А для устранения выше указанной ошибки, в начале маске ставим !
Ну а код получается примерно таким:
Код

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 BitBtn1->Enabled=false;
 MaskEdit2->OnChange = MaskEdit1->OnChange;
 MaskEdit2->OnKeyPress = MaskEdit1->OnKeyPress;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MaskEdit1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if (Key == VK_RETURN)
  if (MaskEdit1->Text.SubString(1,1)!=" ") MaskEdit2->SetFocus();
  else ShowMessage ("Вы не ввели фамилию!");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MaskEdit2KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if (Key == VK_RETURN)
  if (MaskEdit2->Text.SubString(1,1)!=" ") {BitBtn1->SetFocus(); BitBtn1->Enabled = true; }
  else ShowMessage ("Вы не ввели имя!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MaskEdit1KeyPress(TObject *Sender, char &Key)
{
if ( WideChar(Key)>=65 && WideChar(Key)<=122 || WideChar(Key)==32) Key=NULL;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MaskEdit1Change(TObject *Sender)
{
 if (MaskEdit1->Text.SubString(1,1)==" " || MaskEdit2->Text.SubString(1,1)==" ")
  BitBtn1->Enabled = false;
 else BitBtn1->Enabled = true;
}
//---------------------------------------------------------------------------

Вроде все учел...

Это сообщение отредактировал(а) Klin - 16.4.2007, 02:05


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
susanin
Дата 16.4.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Klin , спасибо! все правильно теперь! один только вопос не по теме.... smile 
а за что отвечаетт событие MaskEdit1Change???
PM MAIL   Вверх
Klin
Дата 16.4.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



При любом изменении данных в поле Text выполняется заданные действия.

з.ы. желательно сделать вопрос решенным.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Dem_max
Дата 16.4.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 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")
PM MAIL   Вверх
susanin
Дата 16.4.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Dem_max , и зачем этот мануал было писать??? это я все и так в книге читал... а дописывать надо было для того, чтобы не вводились английские буквы..
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0799 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.