|
Вопрос # 5 469/ вопрос открыт / |
|
Здравствуйте, эксперты!
У меня такая проблема-нужно чтобы в Edit можно было ввести только латиницу(ну и цифры и символы) главное чтобы без кириллицы.
Как это сделать?
 |
Вопрос задал: Aristotel (статус: Посетитель)
Вопрос отправлен: 1 июля 2011, 11:54
Состояние вопроса: открыт, ответов: 3.
|
Ответ #1. Отвечает эксперт: Эхо Унитазного Бачка
Здравствуйте, Aristotel!
На память есть обработчик OnKeyPress - туда воткни проверку на вхождение <key> в множество ['а' .. 'я', 'А', 'Я'].
 |
Ответ отправил: Эхо Унитазного Бачка (статус: 1-ый класс)
Время отправки: 1 июля 2011, 12:29
Оценка за ответ: -1
Комментарий к оценке: Ну и как проверить?
|
Ответ #2. Отвечает эксперт: bugmenot
Боян, обсуждалось бесчисленное кол-во раз.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
Allowed = ['0'..'9', 'A'..'Z', 'a'..'z'];
begin
if not CharInSet(Key, Allowed) then
Key := #0;
end;
 |
Ответ отправил: bugmenot (статус: 3-ий класс)
Время отправки: 1 июля 2011, 12:35
Оценка за ответ: 3
Комментарий к оценке: А в какое место программы надо вставлять это?
|
Ответ #3. Отвечает эксперт: min@y™
Цитата (Aristotel):
Я написал кусок кода
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё']
then Key := #0;
end;
но у меня всё равно вводятся русские буквы-уже не знаю что делать. Подскажите плиз
Да надоел ты уже! Ну сколько можно? Написал я тебе пример, потратил 3 минуты. Прицепляю к ответу.
З.Ы. Мой телепатор говорит, что ты не смог присвоить обработчик событию OnKeyPress. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 6 июля 2011, 11:05
Оценка за ответ: 4
Комментарий к оценке: У меня почему то не пашет хотя сделал как у тебя
|
Мини-форум вопроса
Всего сообщений: 39; последнее сообщение — 7 июля 2011, 10:51; участников в обсуждении: 6.
Страницы: [« Предыдущая] [1] [2]
|
Aristotel (статус: Посетитель), 5 июля 2011, 11:29 [#21]:
Я вставил кусок кода который мне написал bugmenot но у меня пишет что нашол какие-то ошибки
|
|
Aristotel (статус: Посетитель), 5 июля 2011, 11:32 [#22]:
И что означает Expected '+=' but ';' found ?
|
|
Aristotel (статус: Посетитель), 5 июля 2011, 11:33 [#23]:
Пардон ошибся там Expected '='
|
|
min@y™ (статус: Доктор наук), 5 июля 2011, 11:37 [#24]:
Да напиши ты вот так:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not CharInSet(Key, ['0'..'9', 'A'..'Z', 'a'..'z'])
then Key := #0;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 5 июля 2011, 11:52 [#25]:
-1 - это очень хреновая оценка! А ответ-то правильный...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aristotel (статус: Посетитель), 5 июля 2011, 11:53 [#26]:
Щас попоробую
|
|
Вадим К (статус: Академик), 5 июля 2011, 11:53 [#27]:
вопрошающий не смог его применить.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Aristotel (статус: Посетитель), 5 июля 2011, 11:55 [#28]:
Блин-нашёл ошибки: Undeclared identifier: 'CharInSet'
Unsatisfied forward or external declaration: 'TForm1.FormCreate'
|
|
min@y™ (статус: Доктор наук), 5 июля 2011, 11:59 [#29]:
Цитата (Aristotel):
Undeclared identifier: 'CharInSet'
Вселенская катастрофа! Ну, переделай вот так:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё']
then Key := #0;
end;
Цитата (Aristotel):
Unsatisfied forward or external declaration: 'TForm1.FormCreate'
Изменил/удалил обработчик OnCreate формы? Исправляй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aristotel (статус: Посетитель), 5 июля 2011, 12:43 [#30]:
Чего то у меня всё равно в Edit вводятся русские буквы(
|
|
Aristotel (статус: Посетитель), 5 июля 2011, 12:58 [#31]:
А в Edit1Change нужно менять что-то?
|
|
min@y™ (статус: Доктор наук), 5 июля 2011, 13:13 [#32]:
Цитата (Aristotel):
А в Edit1Change нужно менять что-то?
Расскажи-ка, лучше, зачем тебе понадобилось такое ограничение?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
bugmenot (статус: 3-ий класс), 5 июля 2011, 18:46 [#33]:
Цитата (Aristotel):
Оценка за ответ: 3
Надо бы добавить, начальник; вопросы очень толстые.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Gooddy (статус: 3-ий класс), 5 июля 2011, 19:22 [#34]:
Мда.
Чисти код! Чисти код! Чисти код!
|
|
Aristotel (статус: Посетитель), 6 июля 2011, 10:53 [#35]:
Я написал кусок кода
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё']
then Key := #0;
end;
но у меня всё равно вводятся русские буквы-уже не знаю что делать.
Подскажите плиз
|
|
Aristotel (статус: Посетитель), 7 июля 2011, 10:38 [#36]:
Смотрите-написал прогу но в LabeledEdit1 всё равно вводятся русские буквы-не пойму в чём дело-должно всё работать а не хочет
Вот прога:
unit lab1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
LabeledEdit1: TLabeledEdit;
XPManifest1: TXPManifest;
procedure LabeledEdit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['А'..'Я', 'а'..'я', 'Ё', 'ё']
then Key := #0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str:STRING;
k:integer;
begin
str:=LabeledEdit1.Text;
k:=Length(str);
str[k+1]:=#0;
LabeledEdit1.Text:=str;
LabeledEdit1.Text:=StringReplace(LabeledEdit1.Text, 'ed ', 'ing ', [rfReplaceAll, rfIgnoreCase]);
if (str[k]='d') and (str[k-1]='e') then
begin
LabeledEdit1.Text:=StringReplace(LabeledEdit1.Text, 'ed', 'ing', [rfReplaceAll, rfIgnoreCase]);
end;
end;
end.
|
|
Aristotel (статус: Посетитель), 7 июля 2011, 10:48 [#37]:
НАКОНЕЦ-ТО ЭТО СВЕРШИЛОСЬ-ВСЁ ЗАРАБОТАЛО-УРА! УРА! УРА!!!
ТЕМА ЗАКРЫТА
|
|
Вадим К (статус: Академик), 7 июля 2011, 10:48 [#38]:
меня вот этот код
Цитата (Aristotel):
str:=LabeledEdit1.Text;
k:=Length(str);
str[k+1]:=#0;
смущает. Это не С/С++, тут не нужно зануливать последний символ.
А код фильтрации в принципе верный. Он позволяет любые кириллические символы вводить? И привязана ли эта процедура к компоненту? (хотя судя по названию - наверное да).
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 7 июля 2011, 10:51 [#39]:
Цитата (Aristotel):
У меня почему то не пашет хотя сделал как у тебя
Ну мой ехе-шник ты запускать пробовал? У меня он нормально работает.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|