Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 397
  • Last Modified:

TEdit OnKeyPress Event help

I have a function that converts a number to roman and visa versa. (thanks to EE expert).

I need to prevent users from entering anything other than the following characters

0..9, or  I,V,X,L,C,D,M

into a TEdit control

I guess i need to allow a backspace, but nothing else. (example, no spaces, periods, etc. etc)

thanks
0
Looking_4_Answers
Asked:
Looking_4_Answers
  • 2
1 Solution
 
Looking_4_AnswersAuthor Commented:
sorry, i meant to rephrase it

if not (Key in [#8, '0'..'9', 'I','V','X','L','C','D','M']) then
  Key := #0;

i need to prevent the person from entering a numeric if they are already entering a roman numeral character, and visa versa (if the enter a 'I','V','X','L','C','D','M'  then they can't enter a 0..9
0
 
epasquierCommented:
Voila !
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Var
 Txt:String;
 i64:Int64;
 SetAllowed:Set of Char;
Const
 AllowDigits=['0'..'9'];
 AllowRomans=['I','V','X','L','C','D','M'];
begin
 Txt:=(Sender As TEdit).Text;
 if Txt='' Then SetAllowed:=AllowDigits+AllowRomans Else
  if TryStrToInt64(Txt,i64)
   Then SetAllowed:=AllowDigits
   Else SetAllowed:=AllowRomans;
 SetAllowed:=SetAllowed+[#8];
 Key:=UpCase(Key); // convert i, v, x... to I, V, X
 If Not (Key In SetAllowed) Then Key:=#0;
end;

Open in new window

0
 
Mahdi78Commented:
Great !
Très bonne idée.
0
 
Looking_4_AnswersAuthor Commented:
NICE JOB!  Thanks!
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now