这段代码可以把你的按扭事件整和在一起 Key0...Key9为按扭的name procedure ButtonKeyDown(sender:Tobject); begin if sender=Key0 then begin edit_LCD.Text:=edit_LCD.Text+'1'; end; if sender=Key1 then begin edit_LCD.Text:=edit_LCD.Text+'1'; end; if sender=Key2 then begin edit_LCD.Text:=edit_LCD.Text+'2'; end; if sender=Key3 then begin edit_LCD.Text:=edit_LCD.Text+'3'; end; if sender=Key4 then begin edit_LCD.Text:=edit_LCD.Text+'4'; end; if sender=Key5 then begin edit_LCD.Text:=edit_LCD.Text+'5'; end; if sender=Key6 then begin edit_LCD.Text:=edit_LCD.Text+'6'; end; if sender=Key7 then begin edit_LCD.Text:=edit_LCD.Text+'7'; end; if sender=Key8 then begin edit_LCD.Text:=edit_LCD.Text+'8'; end; if sender=Key9 then begin edit_LCD.Text:=edit_LCD.Text+'9'; end; End;
上面的有点问题 procedure ButtonKeyDown(sender:Tobject); begin if sender=Key0 then begin edit_LCD.Text:=edit_LCD.Text+'0'; end; if sender=Key1 then begin edit_LCD.Text:=edit_LCD.Text+'1'; end; if sender=Key2 then begin edit_LCD.Text:=edit_LCD.Text+'2'; end; if sender=Key3 then begin edit_LCD.Text:=edit_LCD.Text+'3'; end; if sender=Key4 then begin edit_LCD.Text:=edit_LCD.Text+'4'; end; if sender=Key5 then begin edit_LCD.Text:=edit_LCD.Text+'5'; end; if sender=Key6 then begin edit_LCD.Text:=edit_LCD.Text+'6'; end; if sender=Key7 then begin edit_LCD.Text:=edit_LCD.Text+'7'; end; if sender=Key8 then begin edit_LCD.Text:=edit_LCD.Text+'8'; end; if sender=Key9 then begin edit_LCD.Text:=edit_LCD.Text+'9'; end; End;
想知道这个 是这个意思吗?procedure TForm1.Button1Click(Sender: TObject); begin edit2.SetFocus; edit2.SelStart:=0; edit2.SelLength:=length(edit1.Text); end;
我的界面是3个EDIT,0--9九个按钮控制EDIT的输入。UP,DOWN2个按钮控制EDIT上下移动(右EDIT1移动到EDIT2,不是EDIT1本身上下移动)。代码如下: private CurrentTag : integer; EditBoxCount : integer; chooseindex:integer; i:integer; procedure TForm1.FormShow(Sender: TObject);//判断EDIT个数 var i : integer; begin for i := 0 to self.ComponentCount-1 do begin if(self.Components[i] is TEdit) then begin Inc(EditBoxCount); (self.Components[i] as TEdit).Tag := EditBoxCount; if(i = 0) then (self.Components[i] as TEdit).SetFocus; end; end;end; procedure TForm1.button1click(sender:Tobject);//向上移动 var i:integer; begin if(CurrentTag > 1) then Dec(CurrentTag); for i := 0 to self.ComponentCount-1 do begin if(self.Components[i] is TEdit) then begin if( (self.Components[i] as TEdit).Tag = CurrentTag ) then begin (self.Components[i] as TEdit).SetFocus; chooseindex:=currenttag; break; end; end; end; end; procedure TForm1.Button2Click(Sender: TObject);//向下移动 var i:integer; begin if(CurrentTag < EditBoxCount) then Inc(CurrentTag); for i := 1 to self.ComponentCount-1 do begin if(self.Components[i] is TEdit) then begin if( (self.Components[i] as TEdit).Tag = CurrentTag ) then begin (self.Components[i] as TEdit).SetFocus; chooseindex:=currenttag; break; end; end; end; end; procedure TForm1.ButtonClick(Sender: TObject);//0---9按钮ONCLICK事件 var x,y: integer; begin case chooseindex of 1:begin if edit1.Text='0.000' then edit1.Text:=Tbutton(sender).Caption else begin x:=pos('.',edit1.Text); y:=length(edit1.Text)-3; if (x<>0) and (x=y) then else edit1.Text:=edit1.Text+Tbutton(sender).Caption; end; end; 2:begin if edit2.Text='0.000' then edit2.Text:=Tbutton(sender).Caption else begin x:=pos('.',edit2.Text); y:=length(edit2.Text)-3; if (x<>0) and (x=y) then else edit2.Text:=edit2.Text+Tbutton(sender).Caption; end; end; 3:begin if edit3.Text='0.000' then edit3.Text:=Tbutton(sender).Caption else begin x:=pos('.',edit3.Text); y:=length(edit3.Text)-3; if (x<>0) and (x=y) then else edit3.Text:=edit3.Text+Tbutton(sender).Caption; end; end; end;end; procedure TForm1.FormCreate(Sender: TObject);//初始化 begin CurrentTag := 1; EditBoxCount := 0; chooseindex:=1; i:=0; end;
这样改 procedure TForm1.button1click(sender:Tobject);//向上移动 var i:integer; begin if(CurrentTag > 1) then Dec(CurrentTag); for i := 0 to self.ComponentCount-1 do begin if(self.Components[i] is TEdit) then begin if( (self.Components[i] as TEdit).Tag = CurrentTag ) then begin (self.Components[i] as TEdit).SetFocus; (self.Components[i] as TEdit).SelStart:=0; (self.Components[i] as TEdit).SelLength:=length((self.Components[i] as TEdit).Text);
楼主代码有点乱,不好意思,我随便写了几句,应该能表达清楚。procedure TForm1.BtnChangeInputClick(Sender: TObject); begin if InputEdit = Edit1 then InputEdit := Edit2 else if InputEdit = Edit2 then InputEdit := Edit3 else InputEdit := Edit1; InputEdit.SetFocus; end;procedure TForm1.BtnNumericalClick(Sender: TObject); begin with InputEdit do if (Text = '0.000') or InputChanged then Text := TButton(Sender).Caption else Text := Text + TButton(Sender).Caption; InputChanged := False; end;procedure TForm1.Edit1Exit(Sender: TObject); begin InputChanged := True; end;procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text := '0.000'; Edit2.Text := '0.000'; Edit3.Text := '0.000'; InputEdit := Edit1; end;
Key0...Key9为按扭的name
procedure ButtonKeyDown(sender:Tobject);
begin
if sender=Key0 then
begin
edit_LCD.Text:=edit_LCD.Text+'1';
end;
if sender=Key1 then
begin
edit_LCD.Text:=edit_LCD.Text+'1';
end;
if sender=Key2 then
begin
edit_LCD.Text:=edit_LCD.Text+'2';
end;
if sender=Key3 then
begin
edit_LCD.Text:=edit_LCD.Text+'3';
end;
if sender=Key4 then
begin
edit_LCD.Text:=edit_LCD.Text+'4';
end;
if sender=Key5 then
begin
edit_LCD.Text:=edit_LCD.Text+'5';
end;
if sender=Key6 then
begin
edit_LCD.Text:=edit_LCD.Text+'6';
end;
if sender=Key7 then
begin
edit_LCD.Text:=edit_LCD.Text+'7';
end;
if sender=Key8 then
begin
edit_LCD.Text:=edit_LCD.Text+'8';
end;
if sender=Key9 then
begin
edit_LCD.Text:=edit_LCD.Text+'9';
end;
End;
procedure ButtonKeyDown(sender:Tobject);
begin
if sender=Key0 then
begin
edit_LCD.Text:=edit_LCD.Text+'0';
end;
if sender=Key1 then
begin
edit_LCD.Text:=edit_LCD.Text+'1';
end;
if sender=Key2 then
begin
edit_LCD.Text:=edit_LCD.Text+'2';
end;
if sender=Key3 then
begin
edit_LCD.Text:=edit_LCD.Text+'3';
end;
if sender=Key4 then
begin
edit_LCD.Text:=edit_LCD.Text+'4';
end;
if sender=Key5 then
begin
edit_LCD.Text:=edit_LCD.Text+'5';
end;
if sender=Key6 then
begin
edit_LCD.Text:=edit_LCD.Text+'6';
end;
if sender=Key7 then
begin
edit_LCD.Text:=edit_LCD.Text+'7';
end;
if sender=Key8 then
begin
edit_LCD.Text:=edit_LCD.Text+'8';
end;
if sender=Key9 then
begin
edit_LCD.Text:=edit_LCD.Text+'9';
end;
End;
是这个意思吗?procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.SetFocus;
edit2.SelStart:=0;
edit2.SelLength:=length(edit1.Text);
end;
edit2.SetFocus;
edit2.SelStart:=0;
edit2.SelLength:=length(edit2.Text);
CurrentTag : integer;
EditBoxCount : integer;
chooseindex:integer;
i:integer;
procedure TForm1.FormShow(Sender: TObject);//判断EDIT个数
var
i : integer;
begin
for i := 0 to self.ComponentCount-1 do
begin
if(self.Components[i] is TEdit) then
begin
Inc(EditBoxCount);
(self.Components[i] as TEdit).Tag := EditBoxCount;
if(i = 0) then
(self.Components[i] as TEdit).SetFocus;
end;
end;end;
procedure TForm1.button1click(sender:Tobject);//向上移动
var
i:integer;
begin
if(CurrentTag > 1) then
Dec(CurrentTag);
for i := 0 to self.ComponentCount-1 do
begin
if(self.Components[i] is TEdit) then
begin
if( (self.Components[i] as TEdit).Tag = CurrentTag ) then
begin
(self.Components[i] as TEdit).SetFocus;
chooseindex:=currenttag;
break;
end;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);//向下移动
var
i:integer;
begin
if(CurrentTag < EditBoxCount) then
Inc(CurrentTag);
for i := 1 to self.ComponentCount-1 do
begin
if(self.Components[i] is TEdit) then
begin
if( (self.Components[i] as TEdit).Tag = CurrentTag ) then
begin
(self.Components[i] as TEdit).SetFocus;
chooseindex:=currenttag;
break;
end;
end;
end;
end;
procedure TForm1.ButtonClick(Sender: TObject);//0---9按钮ONCLICK事件
var
x,y: integer;
begin
case chooseindex of
1:begin
if edit1.Text='0.000' then
edit1.Text:=Tbutton(sender).Caption
else
begin
x:=pos('.',edit1.Text);
y:=length(edit1.Text)-3;
if (x<>0) and (x=y) then
else
edit1.Text:=edit1.Text+Tbutton(sender).Caption;
end;
end;
2:begin
if edit2.Text='0.000' then
edit2.Text:=Tbutton(sender).Caption
else
begin
x:=pos('.',edit2.Text);
y:=length(edit2.Text)-3;
if (x<>0) and (x=y) then
else
edit2.Text:=edit2.Text+Tbutton(sender).Caption;
end;
end;
3:begin
if edit3.Text='0.000' then
edit3.Text:=Tbutton(sender).Caption
else
begin
x:=pos('.',edit3.Text);
y:=length(edit3.Text)-3;
if (x<>0) and (x=y) then
else
edit3.Text:=edit3.Text+Tbutton(sender).Caption;
end;
end;
end;end;
procedure TForm1.FormCreate(Sender: TObject);//初始化
begin
CurrentTag := 1;
EditBoxCount := 0;
chooseindex:=1;
i:=0;
end;
这样改
procedure TForm1.button1click(sender:Tobject);//向上移动
var
i:integer;
begin
if(CurrentTag > 1) then
Dec(CurrentTag);
for i := 0 to self.ComponentCount-1 do
begin
if(self.Components[i] is TEdit) then
begin
if( (self.Components[i] as TEdit).Tag = CurrentTag ) then
begin
(self.Components[i] as TEdit).SetFocus;
(self.Components[i] as TEdit).SelStart:=0;
(self.Components[i] as TEdit).SelLength:=length((self.Components[i] as TEdit).Text);
chooseindex:=currenttag;
break;
end;
end;
end;
end;
begin
if InputEdit = Edit1 then
InputEdit := Edit2
else if InputEdit = Edit2 then
InputEdit := Edit3
else
InputEdit := Edit1;
InputEdit.SetFocus;
end;procedure TForm1.BtnNumericalClick(Sender: TObject);
begin
with InputEdit do
if (Text = '0.000') or InputChanged then
Text := TButton(Sender).Caption
else
Text := Text + TButton(Sender).Caption; InputChanged := False;
end;procedure TForm1.Edit1Exit(Sender: TObject);
begin
InputChanged := True;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := '0.000';
Edit2.Text := '0.000';
Edit3.Text := '0.000';
InputEdit := Edit1;
end;
[email protected]