Текущий архив: 2005.09.11;
Скачать: CL | DM;
Внизввод недопустимых символов Найти похожие ветки
← →
Александр1 (2005-08-09 00:25) [0]Пожалуйста, подскажите в чем проблема - не могу сделать так,
чтобы во 2-ом и 3-ем Edit набирались только "а".."я". В 1-ом же все Ок.
Вот исходник.
unit vrun1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
{ procedure Edit2KeyPress(Sender: TObject; var Key: Char);
{ procedure Edit3KeyPress(Sender: TObject; var Key: Char);}
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
"à".."ÿ": ;
#8 : ;
#13 : Edit2.SetFocus;
else Key :=Chr(0);
end;
end;
begin
case Key of
"а".."я": ;
#8 : ;
#13 : Edit3.SetFocus;
else Key :=Chr(0);
end;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
"а".."я": ;
#13 : Button1.SetFocus;
else Key :=Chr(0);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
n : string;
p : string;
s : string;
begin
n:= Edit2.Text;
p:= Edit3.Text;
s:= Edit1.Text;
label4.Caption := " "+ Edit1.Text + " " + #13;
end;
end.
← →
Eraser © (2005-08-09 00:45) [1]Александр1 (09.08.05 00:25)
Данный способ всё равно неполноценный, т.к. ещё существует Copy/Paste.
← →
Leonid Troyanovsky © (2005-08-09 09:02) [2]
> Александр1 (09.08.05 00:25)
type
TChars = set of Char;
EConvertException = class(Exception)
public
ErrorCharIndex : Longint;
constructor Create(CharIndex: Longint);
end;
constructor EConvertException.Create;
begin
ErrorCharIndex := CharIndex;
end;
function CheckInput(const s: String; ValidChars: TChars): Double;
var
i: Longint;
begin
for i := 1 to Length(s) do
if not (s[i] in ValidChars) then
raise EConvertException.Create(i);
end;
function CorrectText(s: String; Idx: Longint ): String;
begin
Result:= s;
Delete(Result, Idx, 1);
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
with Sender as TEdit do
try
CheckInput(Text, ["а".."я","А".."Я"]);
except
on E: EConvertException do
begin
Text:= CorrectText(Text, E.ErrorCharIndex);
SelStart := E.ErrorCharIndex - 1;
Beep;
end;
end;
end;
--
Regards, LVT.
← →
IceBeerg © (2005-08-09 13:29) [3]Александр1 (09.08.05 0:25)
{ procedure Edit2KeyPress(Sender: TObject; var Key: Char);
{ procedure Edit3KeyPress(Sender: TObject; var Key: Char);}
А почему это закоментировано?
Страницы: 1 вся ветка
Текущий архив: 2005.09.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.01 c