我用以下代码生成了一些按钮,现想通过相应的事件更新相应记录,事件如下:
for i:=1 to form3.adotable1.RecordCount do  //生成button
 begin
 with tbutton.Create(self) do
 begin
    parent:=self;
    d1:=d1+1;
    name:='button'+inttostr(i);
    caption:='可修改';
    left:=160+k1*350;
    top:=8+d1*44;
    if (i mod 10=0) then
    begin
    k1:=k1+1;
    d1:=0
    end;
    //if (button) then
    OnClick:=btnonclick1;
 end;
 end;procedure tform8.btnonclick1(sender:tobject);
begin
showmessage('aa');
adoquery1.SQL.Text:='update gz_bm set bz=0 where ???;
end;
现在不知用什么办法才能更新相应的记录,也就是说每个按钮对应的记录不知道用什么办法确定?请哪位给点提示?有个例子最好!!

解决方案 »

  1.   

    在创建button的同时,创建一个数组,记录对应纪录的主键.
    比如主键是一个字符串的单字段主键
    slKey: TStrings;已经创建slKey.Clear;
    for i:=1 to form3.adotable1.RecordCount do  //生成button
     begin
     with tbutton.Create(self) do
     begin
       slKey.add(FieldByname('keyfield').AsString);
        parent:=self;
        d1:=d1+1;
        name:='button'+inttostr(i);
        caption:='可修改';
        left:=160+k1*350;
        top:=8+d1*44;
       tag := i-1;      // 为每一个按钮定义一个标志
        if (i mod 10=0) then
        begin
        k1:=k1+1;
        d1:=0
        end;
        //if (button) then
        OnClick:=btnonclick1;
     end;
     end;procedure tform8.btnonclick1(sender:tobject);
    begin
    使用TButton(sender).tag 来访问按钮
    要访问主键值可以使用slKey[TButton(sender).tab]来访问.
    end;如果主键为多字符串字段主键,可以将各个字段值组合,在访问时进行拆分.
    如果是单字段整数性主键,可以将其转换为字符串.或者直接使用该主键值设置tag属性.
      

  2.   

    我点了button事件后,用什么办法可以让点击事件后使相应按钮的enabled属性变为false
    我用了以下办法,可好象没有用!
    procedure tform8.btnonclick1(sender:tobject);
    begin
    showmessage('aa');
    enabled:=false;
    end;
      

  3.   

    不是 enabled:=false,应该使用TButton(Sender).Enabled := False;