delphi萌新求解惑
delphi吧
全部回复
仅看楼主
level 1
我想写一个从键盘按数字键1---7,触发PC喇叭发声的小程序,但是问题来了,每次运行程序只能按一次键盘,然后就没反应了,这是为什么?
源码如下:
unit Sound;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
img1: TImage;
btn1: TButton;
btn2: TButton;
btn3: TButton;
btn4: TButton;
btn5: TButton;
btn6: TButton;
btn7: TButton;
btn8: TButton;
lbl1: TLabel;
procedure sound(d: word);
procedure btn8Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure btn5Click(Sender: TObject);
procedure btn6Click(Sender: TObject);
procedure btn7Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
FInputString: string;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.sound(d: word);
begin
Windows.Beep(d, 100);
end;
procedure TForm1.btn8Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
sound(100);
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
sound(200);
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
sound(300);
end;
procedure TForm1.btn4Click(Sender: TObject);
begin
sound(400);
end;
procedure TForm1.btn5Click(Sender: TObject);
begin
sound(500);
end;
procedure TForm1.btn6Click(Sender: TObject);
begin
sound(600);
end;
procedure TForm1.btn7Click(Sender: TObject);
begin
sound(700);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview := true; //可以接收键盘操作
FInputString := '';
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if integer(Key) >= 32 then
FInputString := FInputString + Key;
if FInputString = '1' then
btn1.Click;
if FInputString = '2' then
btn2.Click;
if FInputString = '3' then
btn3.Click;
if FInputString = '4' then
btn4.Click;
if FInputString = '5' then
btn5.Click;
if FInputString = '6' then
btn6.Click;
if FInputString = '7' then
btn7.Click;
if FInputString = '8' then
btn8.Click;
end;
end.
2018年09月06日 07点09分 1
吧务
level 14
低级错误。你先学会debug,然后一切迎刃而解。
2018年09月06日 23点09分 2
你说的是调试吗?我调试好像是卡在procedure TForm1.FormKeyPress 这个过程里面出不去,但是不知道怎么办[乖]
2018年09月07日 00点09分
level 12
2018年09月07日 06点09分 3
真的解决了!这一个IF我是网上找的,不知道为什么要判断,原来是这里错了[黑线]
2018年09月07日 06点09分
1