⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 delphi的学习资料
💻 PAS
字号:


//  组件动态使用 例

unit Main;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  TfmMain = class(TForm)
    pn00: TPanel;
    Panel1: TPanel;
    edtN: TEdit;
    btnCreate: TBitBtn;
    btnDel: TBitBtn;
    btnCount: TBitBtn;
    LbR: TLabel;
    Label1: TLabel;
    procedure btnCreateClick(Sender: TObject);
    procedure EdtExit(Sender: TObject);      // 事件声明, 人工书写
    procedure btnDelClick(Sender: TObject);
    procedure btnCountClick(Sender: TObject);
  private    { Private declarations }
  public     { Public declarations }
  end;

var
  fmMain: TfmMain;
  arrEdt: array of TEdit;
  DelNo: byte;


////////////////////////////////////////////////////////////////////////////////
implementation
{$R *.dfm}

procedure TfmMain.btnCreateClick(Sender: TObject);
var
  i,n: byte;
  s: string;
  tmp: TEdit;
begin
  n:=StrToInt(edtN.Text);
  SetLength(arrEdt,n);
  for i:=0 to n-1 do
    try
      tmp:=TEdit.Create(Self);
      tmp.Name:='edt'+IntToStr(i);
      tmp.Text:=Copy(tmp.Name,4,3);   // 此句可以不用
      tmp.Parent:=pn00;         // 此句必不可少
      tmp.Left:=10;
      tmp.Top:=20 +i*40;
      tmp.Width:=90;            // 此句可以不用
      tmp.OnExit:=EdtExit;  // 事件名定义, 人工书写
      arrEdt[i]:=tmp;
    except
    end;
end;

//==============================================================================
procedure TfmMain.EdtExit(Sender: TObject);  // 事件具体定义, 人工书写
begin
  DelNo:=StrToInt( (Sender as TEdit).Name[4] );
end;

//==============================================================================
// 删除选中的一个Edit
procedure TfmMain.btnDelClick(Sender: TObject);
begin
  arrEdt[DelNo].Free;
  arrEdt[DelNo]:=nil;
end;

//==============================================================================
// 各Edit的值求和, 并显示结果
procedure TfmMain.btnCountClick(Sender: TObject);
var
  i: Byte;
  r: Real;
begin
  if  Length(arrEdt)=0 then
    Exit;
    
  r:=0;
  for i:=0 to High(arrEdt) do
  begin
    if Assigned(arrEdt[i]) then   // 跟下句的含意相同
//    if arrEdt[i]=nil then
      r:=r+StrToFloat(arrEdt[i].Text);
  end;
  LbR.Caption:=FloatToStr(r);
  LbR.Width:=LbR.Width +20;       // 何意 ???
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -