如何多次调、用Edit1KeyPress,
我想做了个进制转换的小工具,在ToolButton1 2 3 里分别设置的是十进制转十六进制,十六进制转十进制,二转十.
我在Edit1KeyPress里判断输入的数是否正确。问题是
1.如何在ToolButton1Click里调用Edit1KeyPress?
2.如何在ToolButton2Click 3Click 4Click调用Edit1KeyPress.且能进行不同的判断Key in ['0'..'9'] Key in ['0'..'1'] Key in ['0'..'9','a'..'f','A'..'F']里呢?
我想做了个进制转换的小工具,在ToolButton1 2 3 里分别设置的是十进制转十六进制,十六进制转十进制,二转十.
我在Edit1KeyPress里判断输入的数是否正确。问题是
1.如何在ToolButton1Click里调用Edit1KeyPress?
2.如何在ToolButton2Click 3Click 4Click调用Edit1KeyPress.且能进行不同的判断Key in ['0'..'9'] Key in ['0'..'1'] Key in ['0'..'9','a'..'f','A'..'F']里呢?
楼主只需要添加一个变量就可以了
var
flag: integer;procedure TForm1.Button1Click(Sender: TObject);
begin
flag:=1;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
flag:=2;end;procedure TForm1.Button3Click(Sender: TObject);
begin
flag:=3;
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case flag of
1: if not (Key in ['0'..'9']) then
key:=#0; 2:if not (Key in ['0'..'1']) then
key:=#0;
3:if not (Key in ['0'..'9','a'..'f','A'..'F']) then
key:=#0;
end;
end;
if Edit1.Text = '' then
begin
Application.MessageBox('请输入要转换的二进制数!','');
Edit1.SetFocus;
Exit;
end;
flag:=3;
Edit1KeyPress(Sender: TObject; var Key: Char); //在这里如何调用啊??????????
Edit2.Text:=Inttostr(bin(Edit1.Text));
Label2.Caption:='该数的十进制是:';
end;
可以测试一下
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage(Key);
end;
按其形式,调用需要写成这样
procedure TForm1.Button1Click(Sender: TObject);
var
MyKey: Char;
begin
MyKey := Char('A');
Edit1KeyPress(Sender, MyKey);
end;
但在这里显然是不行的,因为Key值是要根据键盘输入获取的。
(即使要模拟键盘输入,应当考虑SendMessage等消息方式)3、尽量避免显式调用事件处理方法,虽然有时可以达到同样效果但代码的耦合性会加大,易出错,不利于代码的后续维护。