您的位置:首页 > 编程语言 > Delphi

delphi2010泛型练习

2016-03-08 14:22 369 查看


{ 本单元使用 TDictionary 练习测试 }

TMyGrid = class(TStringgrid);{能使用整行删除}

uses

  StrUtils,  { 使用函数必须在此 添加 strUtils }

  Generics.Collections;   {Delphi 泛型容器单元}

var

  Dict: TDictionary<string,string>;  {定义一个泛型 TDictionary 类, 指定有 string、string 构成}

  num:byte;  r:word;

  key,item: string;

{添加}

procedure TForm1.Button1Click(Sender: TObject);

begin

  if r>=999 then   exit;

  key :=edit1.Text;  item := Edit2.Text;

  if item='' then item:='Null';

  if not Dict.ContainsKey(key) then

    begin

      Dict.Add(key,item);

      grid.Cells[1,r]:=key;      grid.Cells[2,r]:=item;

      grid.rowcount:=grid.RowCount+1;      grid.Row:=r;

      r:=r+1;

      num:= 3-length(inttostr(r));
dfd8

      edit1.Text:=DupeString('0',num) + inttostr(r);

      edit2.Text:='';      edit2.SetFocus;

    end

  else

    showmessage('该会员代号已存在,不能重复添加。');

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

  if key=#13 then

    button1.Click;

end;

{ 删除 }

procedure TForm1.Button2Click(Sender: TObject);

begin

  key:=grid.Cells[1,grid.row];

  if key='' then  exit;

  if InputQuery('输入','请输入key值',key) then

    if key<>'' then //如果输入不为空则

      if dict.ContainsKey(key) then

      begin

        dict.Remove(key);

        grid.Rows[strtoint(key)].Clear;

        TMyGrid(grid).DeleteRow(strtoint(key));{
整行删除}

      end

      else

        showmessage('不存在');

end;

{ 取值 }

procedure TForm1.Button3Click(Sender: TObject);

begin

  if InputQuery('输入','请输入key值',key) then

    if key<>'' then //如果输入不为空则

      if dict.ContainsKey(key) then

        showmessage(dict.Items[key])

      else

        showmessage('不存在');

end;

{ 清空 }

procedure TForm1.Button4Click(Sender: TObject);

begin

  Dict.Clear; { Grid同步显示 }

  for r:=1 to grid.RowCount-1  do

     grid.Rows[r].Clear;

  grid.RowCount:=2;

end;

{ 计算重复次数 }

procedure TForm1.Button5Click(Sender: TObject);

var

  dict2:TDictionary<string,byte>;

  n:byte;

begin

  dict2:=TDictionary<string,byte>.create;

  for r:=1 to grid.RowCount-2 do

    if dict2.TryGetValue(grid.Cells[2,r], n) then

      dict2[grid.Cells[2,r]]:= n+1

    else

      dict2.Add(grid.Cells[2,r], 1);

  meo.Clear;

  for key in dict2.Keys  do

    meo.lines.add(key+',出现次数:'+inttostr(dict2.Items[key]));

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

  edit2.SetFocus;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

  Dict := TDictionary<string,string>.Create;

  Button1.Caption := '添加';

  Button2.Caption := '删除';

  Button3.Caption := '取值';

  Button4.Caption := '清空';

  Edit1.text:='001';

  Edit2.Text:='绿杨荫里';

  Edit1.NumbersOnly := True;

  grid.ColWidths[0]:=15;

  grid.ColWidths[1]:=80;

  grid.ColWidths[2]:=130;

  grid.Cells[1,0]:='Key';

  grid.Cells[2,0]:='value';

  r:=1;

end;

{释放}

procedure TForm1.FormDestroy(Sender: TObject);

begin

  Dict.Free;

end;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: