DBGrid 鼠标右键向下填充 bit字段的修正

文章讲述了在使用DBGrid编程时遇到的一个问题,即bit字段在鼠标右键点击后会自动翻转其Boolean值,导致无法正常向下填充。作者提供了一段代码,通过取反值的方法来修正这一问题,使得向下填充功能得以实现。用户需输入填充步数,然后程序将按指定步数进行填充。
摘要由CSDN通过智能技术生成

DBGrid 鼠标右键向下填充 bit字段的修正

    编程DBGrid 鼠标右键向下填充时,只有bit字段与通常字段不一样。原因是,bit字段当鼠标点击时,就会出现Boolean反值。

    见下图:

    鼠标右键点击之前“提成”字段为False,当鼠标右键点击之前“提成”字段为True。因为,鼠标右键时,字段的值又变回True。下身填充,不能成功。

  

   经研究,通过反值填充, 实现向下填充的功能。代码如下:

 

procedure SetDownTianChongEh(var DBGrid: TDBGridEh);
var S,sCopy:string;
    iCol,i,k,l:integer;
    T:Boolean;
begin
  With DBGrid.DataSource.DataSet do
  begin
    iCol:=DBGrid.Col-1;     // 注意Col 1..N 与 Fields 0..n-1 不一致
    if DBGrid.DataSource.DataSet.Fields[iCol].DataType=ftboolean then
    begin
      T:=not DBGrid.DataSource.DataSet.Fields[iCol].AsBoolean;   // Not修改 Checked 值
      Edit;
      DBGrid.DataSource.DataSet.Fields[iCol].AsBoolean:=T;       // 改回值
      if T then sCopy:='True'
           else sCopy:='False';
    end
    else begin
      sCopy:=DBGrid.Columns.Grid.SelectedField.Text;
    end;
    if not InputQuery('输入对话框', '请输入向下搷充的步数:', S) then exit;
    if S='' then exit;
    if not NumOK(S) then
    begin
      ShowMessage('输入了非法字符,请输入“小写数字”!');
      exit;
    end;
    K:=StrToInt(S);
    i:=0;
    Next;
    While not EOF and (I<K) do
    begin
      Edit;
      DBGrid.Columns.Grid.SelectedField.Text:=sCopy;
      Post;
      Next;
      i:=i+1;
    end;
    for l:=0 to i do prior;
  end;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值