Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с MaskEdit 
V
    Опции темы
svyashennik
Дата 4.4.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всем! У меня задание такое нужно чтобы юзверь вводил: Фамилию Имя (состоящие из 15 символов каждая) но при этом небыло ни каких спец символов и тому подобное! Одним словом защита от дурака! Как делать этот MaskEdit я разобрался! А вот как сделать так чтобы небыло пробелов? Так как если курсор подводишь к позиции символа то он переходит заполнять с той позиции и при этом затирается всё то что было написанно ранее на этих позициях! И как сделать чтобы нельзя было ввести английские буквы?! 


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


Эксперт
***


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

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



В событии KeyPress пишеш, что-то вроде:
Код

 if ( WideChar(Key)>=65 && WideChar(Key)<=122 || WideChar(Key)==32) Key=NULL;

В итоге, каждый английский символ и пробел блокируется.



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


Эксперт
***


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

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



Но, если он воспользуется вставкой, то это не поможет, поэтому лучше сделать так (событие KeyDown!):
Код

 if ( WideChar(Key)>=65 && WideChar(Key)<=122 || WideChar(Key)==32) Key=NULL; 
 Clipboard()->Clear();

Цитата(svyashennik @  4.4.2007,  21:31 Найти цитируемый пост)
Так как если курсор подводишь к позиции символа то он переходит заполнять с той позиции и при этом затирается всё то что было написанно ранее на этих позициях!

Немного непонятно, но удаление всех символов до курсора воть ;)
Код

 Edit1->Text=Edit1->Text.Delete(1,Edit1->CaretPos.x);

Это можно в событие MouseDown.



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


Шустрый
*


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

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



Спасибо конечно но у меня не получилось!  smile А как сделать ещё чтобы при вводе текста первая буква была заглавная а остальные нет?

При вводе: if ( WideChar(Key)>=65 && WideChar(Key)<=122 || WideChar(Key)==32) Key=NULL; 
                   Clipboard()->Clear();

Clipboard()->Clear();  -> на этой строчке компилятор ругается!! 

забыл сказать пишу на билдере 6!

Или мож какую альтернативу придложите? Просто не охото забивать весь алфавит на проверку!
PM MAIL ICQ   Вверх
susanin
Дата 5.4.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



отвечаю по поводу больших букв... чтобы первая буква была большой необходимо перед ней поставить символ > а затем после нее поставить символ < ....и последующие буквы будут маленькие... ( возможно символы надо поставить наоборот..вначале < а потом >) точно не помню...
PM MAIL   Вверх
Klin
  Дата 5.4.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Упс smile , вот как должно быть:
KeyPress
Код

if ( WideChar(Key)>=65 && WideChar(Key)<=122 || WideChar(Key)==32) Key=NULL;

Key Down
Код

 Clipboard()->Clear();
 Edit1->Text = Edit1->Text.Delete(1,Edit1->SelStart); // здесь была ошибка!!! Edit1->Text=Edit1->Text.Delete(1,Edit1->CaretPos.x);

MouseDown
Код

 Clipboard()->Clear();

рядом с includ`ами:
Код

#include <vcl\Clipbrd.hpp>

Можно в OnEnter или OnExit (для первой заглавной):
Код

 Edit1->Text = Edit1->Text.SubString(1,1).UpperCase()+Edit1->Text.Delete(1,1);


з.ы . хотя для этого, должно быть свойство...


Цитата

отвечаю по поводу больших букв... чтобы первая буква была большой необходимо перед ней поставить символ > а затем после нее поставить символ < ....и последующие буквы будут маленькие... ( возможно символы надо поставить наоборот..вначале < а потом >) точно не помню...

Это ты точно про билдер? Я попробовал, но ни динамически, ни статистически не получилось...

Это сообщение отредактировал(а) Klin - 25.4.2007, 23:16


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


Опытный
**


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

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



Цитата(Klin @  5.4.2007,  23:27 Найти цитируемый пост)
Это ты точно про билдер? 

точно! это надо писать в свойстве Mask у MaskEdit . Получится маска типа  !>L<LLL;1;_ что обозначает, что вводится будут только буквы, при этом первая буква будет большой!
PM MAIL   Вверх
svyashennik
Дата 6.4.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Clipboard()->Clear();
 Edit1->Text=Edit1->Text.Delete(1,Edit1->CaretPos.x);

Это написанно для Edit! Для MaskEdit не подойдёт он выдаёт что CaretPos не прописанно в MaskEdit!


PM MAIL ICQ   Вверх
susanin
Дата 6.4.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(svyashennik @  6.4.2007,  14:43 Найти цитируемый пост)
Это написанно для Edit!

ну так и в чем пролблема???? напиши MaskEdit1->Text=MaskEdit1->Text.Delete(1,MaskEdit1->CaretPos.x);

PM MAIL   Вверх
svyashennik
Дата 6.4.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ты думаешь что я такой ламер? написал
вот и пишет что поменял! что для MaskEdit нет такого


Это сообщение отредактировал(а) svyashennik - 6.4.2007, 21:17
PM MAIL ICQ   Вверх
susanin
Дата 6.4.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



svyashennik ....и что???? не работает???
PM MAIL   Вверх
svyashennik
Дата 6.4.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



нет! ты сам попробуй
PM MAIL ICQ   Вверх
Klin
Дата 6.4.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Так, хорош ругани  smile 
Это я с RichEdit работал, вот оттуда и оно. Прочел еще раз пост и понял, что надо.
Все просто, но захламлять тему больше не буду, скину исходник.
Успехов!

з.ы. susanin, если не используешь свойство EditMask, то лучше использовать обычный Edit

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


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


Шустрый
*


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

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



Klin Спасибо!!!! Тема закрыта!
PM MAIL ICQ   Вверх
svyashennik
Дата 25.4.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



MaskEdit1->Text=MaskEdit1->Text.Delete(1,MaskEdit1->CaretPos.x);

Люди подскажите почему ошибка выскакивает при вводе этой строки в свойство MaskEdit Key Down???????

Пишет что не известен CaretPos!

Всё это дело происходит в Builder 6

Это сообщение отредактировал(а) svyashennik - 26.4.2007, 07:12
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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