Главная страница
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.025 c
1-1124527379
Kirill
2005-08-20 12:42
2005.09.11
Загрузить ресурс из моего приложения


3-1122378297
rayrom
2005-07-26 15:44
2005.09.11
Необходимо сократить или оптимизировать запрос!


4-1121874756
Still Swamp
2005-07-20 19:52
2005.09.11
Нужно сдлеать LogOff пользов XP после завершения работы программы


14-1124185588
Игорь Шевченко
2005-08-16 13:46
2005.09.11
О форуме, о взаимотношениях, о доброте


1-1124273278
maximm
2005-08-17 14:07
2005.09.11
кодировка dos