加载中…
个人资料
李恒星_释永思
李恒星_释永思
  • 博客等级:
  • 博客积分:0
  • 博客访问:32,004
  • 关注人气:67
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

我可以把任何TWINCONTROL放入到CXGRID中,能浏览能编辑

(2011-01-19 09:52:18)
标签:

杂谈

我可以把任何TWINCONTROL放入到CXGRID中,能浏览能编辑

下面这段英文是我在DEVEXPRESS官方论坛上发表的:

can put any twincontrol into a cell of cxgrid which can view and can edit.

for example,cxgrid1 column color is a string field,it is 'True' or 'False' or NULL or '',I put a checkbox and dbcheckbox into the cell of it .it is for example,the checkbox and dbcheckbox can be any twincontrol.

procedure TForm1.tvcxgrid1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
  begin
 if  (TcxGridItemDBDataBinding(AViewInfo.Item.DataBinding).FieldName='COLOR')  then
 begin
            CheckBox1.Left:=-100;
      CheckBox1.Visible:=true;

     if  vartostr(AViewInfo.DisplayValue)='' then
     CheckBox1.Checked:=false
     else  if vartostr(AViewInfo.DisplayValue)='False' then
     CheckBox1.Checked:=false
     else
     CheckBox1.Checked:=true;

     CheckBox1.Visible:=true;
   CheckBox1.PaintTo(AViewInfo.GridView.Site.Canvas.Canvas,AViewInfo.Bounds.Left+5,AViewInfo.Bounds.Top+4);

   ADone:=true;
      
 end;

/////////////////////////////////////

procedure TForm1.scrooo;
var
liwww,GGG:integer;
ACellViewInfo:tcxgridtabledatacellviewinfo;
  begin

       GGG:=0;
      for liwww:=0 to  tcxcustomgridtableviewinfo(cxgrid1.ActiveView.ViewInfo).RecordsViewInfo.Count-1 do
      begin
      if
      tcxcustomgridtableviewinfo(cxgrid1.ActiveView.ViewInfo).RecordsViewInfo.Items[liwww].Focused then
      begin
       GGG:=liwww;
       break;
      end;
      end;
      if GGG=0 then
      begin
      DBCheckBox1.Left:=-1000;
      DBCheckBox1.Top:=-1000;
      DBCheckBox1.Height:=0;
      DBCheckBox1.Visible:=false;
      exit;
      end;


     ACellViewInfo:= tcxcustomgridtableviewinfo(cxgrid1.ActiveView.ViewInfo).RecordsViewInfo.Items[liwww].GetCellViewInfoByItem(tvcxgrid1COLOR);

 

          if DBCheckBox1.Top>=ACellViewInfo.Bounds.Top+SOURcegrid.Top+ACellViewInfo.GridView.Site.Top+4  then
          begin
      DBCheckBox1.Top :=min(ACellViewInfo.Bounds.Top+SOURcegrid.Top+ACellViewInfo.GridView.Site.Top+4,cxgrid1.Top+ACellViewInfo.GridView.Site.Top+ACellViewInfo.GridView.Site.Height);
          DBCheckBox1.Height := min(ACellViewInfo.Bounds.Bottom,ACellViewInfo.GridView.Site.Height) - ACellViewInfo.Bounds.Top-8;

          end
          else
          begin
          DBCheckBox1.Height := min(ACellViewInfo.Bounds.Bottom,ACellViewInfo.GridView.Site.Height) - ACellViewInfo.Bounds.Top-8;
         DBCheckBox1.Top :=min(ACellViewInfo.Bounds.Top+SOURcegrid.Top+ACellViewInfo.GridView.Site.Top+4,cxgrid1.Top+ACellViewInfo.GridView.Site.Top+ACellViewInfo.GridView.Site.Height);

      end;
      DBCheckBox1.Left := ACellViewInfo.Bounds.Left+5 ;

      DBCheckBox1.Width := ACellViewInfo.Bounds.Right-ACellViewInfo.Bounds.Left-10;

      DBCheckBox1.Visible := True;
end;

end;
////////////////////////////////////////////////////

procedure TForm1.tvcxgrid1TopRecordIndexChanged(
  Sender: TObject);
begin
    scrooo;
end;

////////////////////////////////////////////////

procedure TForm1.tvcxgrid1FocusedRecordChanged(
  Sender: TcxCustomGridTableView; APrevFocusedRecord,
  AFocusedRecord: TcxCustomGridRecord;
  ANewItemRecordFocusingChanged: Boolean);
begin
scrooo;
end;

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有