Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.042 c
14-1124180776
Esu
2005-08-16 12:26
2005.09.11
Во блин кратер отгрохали :)


1-1124464980
Андрей Молчанов
2005-08-19 19:23
2005.09.11
свои иконки в ShellList


1-1124177403
Arkady
2005-08-16 11:30
2005.09.11
TOpenDialog


2-1123570632
ApollonX100
2005-08-09 10:57
2005.09.11
Округление и модуль?


1-1124537780
Агент Х-СОМ
2005-08-20 15:36
2005.09.11
Отладка компонентов