1,183
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Button1Click(Sender: TObject);
var
h:thandle;
begin
h:=FindWindow(0,'TESTF'); //目标form的Caption
if(h=0) then
begin
ShowMessage('TESTF not find!');
exit;
end;
SetForegroundWindow(h); //激活目标窗口
keybd_event(VkKeyScan('1'),1,1,0); //按下1键
keybd_event(VkKeyScan('1'),1,KEYEVENTF_KEYUP,0); //松开1键
end;
{加个强制转换就有text属性了}
if Form1.ActiveControl is TEdit then
TEdit(Form1.ActiveControl).Text := 'a';
{(Form1.ActiveControl as TEdit).Text := 'b'; // 两种方式都可以}
{闲来无事,给楼主写了完整实现(除无边框未设置,其他基本按楼主要求实现),其他功能你要自己加了}
{Form1、Form2全部由Application自动创建}
{Form1上放了四个Edit供测试,Form2上有你说的14个按钮}
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
{**************************************************}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure EdtClick(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.EdtClick(Sender: TObject);
begin
Form2.Visible := not((Form2.Visible) and (Form2.pEdit=TEdit(Sender)));
Form2.pEdit := TEdit(Sender);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I : integer;
begin
for I := Self.ComponentCount-1 downto 0 do
if Self.Components[I] is TEdit then
TEdit(Self.Components[I]).OnClick := Self.EdtClick;
end;
end.
{**************************************************}
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
procedure FormCreate(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
pEdit: TEdit;
procedure BtnNumClick(Sender: TObject);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
var
I : integer;
begin
for I := 1 to 9 do begin
TButton(Self.FindComponent('Button'+InttoStr(I))).Caption := InttoStr(I);
TButton(Self.FindComponent('Button'+InttoStr(I))).OnClick := Self.BtnNumClick;
end;
Self.Button10.Caption := '0';
Button10.OnClick := Self.BtnNumClick;
Self.Button11.Caption := '.';
Button11.OnClick := Self.BtnNumClick;
Self.Button12.Caption := '-';
Self.Button12.OnClick := Self.Button12Click;
Self.Button13.Caption := '退格';
Self.Button13.OnClick := Self.Button13Click;
Self.Button14.Caption := '回车';
Self.Button14.OnClick := Self.Button14Click;
end;
procedure TForm2.BtnNumClick(Sender: TObject);
begin
pEdit.Text := pEdit.Text + TButton(Sender).Caption;
Self.Button14.SetFocus;
end;
procedure TForm2.Button13Click(Sender: TObject);
begin
pEdit.Text := Copy(pEdit.Text, 1, Length(pEdit.Text)-1);
Self.Button14.SetFocus;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
Self.Button14.SetFocus;
end;
procedure TForm2.Button14Click(Sender: TObject);
begin
Self.Hide;
end;
procedure TForm2.Button12Click(Sender: TObject);
begin
pEdit.Text := '-';
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Edit1Click(Sender: TObject);
begin
Form2.hEdit := Edit1.Handle;
Form2.Show;
end;
end.
{=================================================}
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
hEdit: hWnd;
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
Button1.Caption := '1';
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
SendMessage(hEdit, WM_Char, ord('1'), 0);
end;
end.