窗体FORM1里有EDIT1,EDIT2,BUTTON1,在EDIT1里面输入字符串#字符串#.....格式。点击button1,弹出计算公式生成FORM2,EDIT1里有几个字符串段在FORM2里就自动生成以这几个字符串为名的按钮,旁边还有+ - */()按钮,点击这些按钮和运算按钮,在FORM2的EDIT3里显示生成的公式,点击确定后所生成的公式自动添加到FORM1里的EDIT2里。
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;  s:array of string;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
  str,tempstr:String;
  ipos:integer;
  Num:integer;
begin
  str:=trim(edit1.Text);
  if str= '' then exit;
  ipos:=1;
  Num:=1;
  setlength(s,num);
  while ipos>0 do
  begin
    ipos:=pos('#',str);
    tempStr:=copy(str,0,ipos-1);
    if (tempStr='') and (str <>'') then
      tempstr:=str;
    if ipos<>1 then
    begin
      s[num-1]:=tempstr;
      setlength(s,num+1);
      num:=num+1;
    end;
    str:=copy(str,ipos+1,length(str)-ipos);
  end;  form2.show;
end;end.
=============================================
unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;type
  TForm2 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Panel1: TPanel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    procedure FormShow(Sender: TObject);
    procedure btn_Click(Sender:Tobject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form2: TForm2;
  btn:array of Tbutton;
implementation
uses unit1;
{$R *.dfm}procedure TForm2.btn_Click(Sender: Tobject);
begin
  with sender as Tbutton do
  begin
    edit1.Text:=edit1.Text+Tbutton(Sender).Caption;
  end;
end;procedure TForm2.FormShow(Sender: TObject);
var
  i:integer;
  count:integer;
  top:integer;
begin
   top:=0;
   count := 1;
   for i :=0 to high(s) do
   begin
      if s[i]<>'' then
      begin
        setlength(btn,Count);        btn[Count-1]:=TButton.Create(self);
        btn[count-1].parent:=self;
        btn[Count-1].Caption :=s[i];
        btn[count-1].Visible :=true;
        btn[count-1].Width :=25;
        btn[count-1].Height :=25;
        btn[count-1].OnClick  :=btn_click;
        if count mod 2 = 1 then
        begin
          top:=top+26;
          btn[count-1].Left := 30;
          btn[count-1].Top :=top ;
        end
        else
        begin
          btn[count-1].Left := 60;
          btn[count-1].Top :=top ;
        end;
        Count:=Count+1;
      end;
   end;
end;procedure TForm2.Button1Click(Sender: TObject);
begin
  form1.Edit2.Text := edit1.Text;
  close;
end;end.