本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告
================

注会练习软件
http://www.cpasoft.com.cn
我的注会软件官网

http://blog.163.com/abc7105@126/

 

 


哈哈,热爱快“过气”的DELPHI


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:注册会计师(注会)练习软件
日志总数:398
评论数量:116
留言数量:27
访问次数:3273648
建立时间:2005年6月6日




[borland eco 技术]ECO数据在GRIDCONTROL中的动态加列显示
软件技术

吕向阳 发表于 2008/2/26 8:39:11

下面代码解决了三个问题,主要目的是动态建立数据列,并在XTRAGIRD(GRIDCONTROL)中动态加相应显示列,并不显示0值(不显示零值)  procedure formcxbmin.getdatacolumn;type  TArrayOfBorland_Eco_Handles_OclVariable = array of Borland.Eco.Handles.OclVariable;  TArrayOfSystem_Windows_Forms_MenuItem = array of System.Windows.Forms.MenuItem;  TArrayOfDevExpress_XtraGrid_Views_Base_BaseView = array of DevExpress.XtraGrid.Views.Base.BaseView;  TArrayOfDevExpress_XtraGrid_Columns_GridColumn = array of DevExpress.XtraGrid.Columns.GridColumn;  TArrayOfDevExpress_XtraGrid_GridSummaryItem = array of DevExpress.XtraGrid.GridSummaryItem;  TArrayOfBorland_Eco_Handles_AbstractColumn = array of Borland.Eco.Handles.AbstractColumn;  TArrayOfDevExpress_XtraGrid_Columns_GridColumnSortInfo = array of DevExpress.XtraGrid.Columns.GridColumnSortInfo;  TArrayOfDevExpress_XtraGrid_Views_BandedGrid_GridBand = array of DevExpress.XtraGrid.Views.BandedGrid.GridBand;  TArrayOfDevExpress_XtraGrid_Views_BandedGrid_BandedGridColumn = array of DevExpress.XtraGrid.Views.BandedGrid.BandedGridColumn;  TArrayOfDevExpress_XtraGrid_StyleFormatCondition = array of DevExpress.XtraGrid.StyleFormatCondition;var  colxx: array of DevExpress.XtraGrid.Columns.GridColumn;  OclColumnyy: array of Borland.Eco.Handles.OclColumn;  StyleFormatConditionxx: array of DevExpress.XtraGrid.StyleFormatCondition;  list1: ielementcollection;  I: Integer;  strname: string;begin  list1 := fecospace.OclService.Evaluate('bm.allinstances.name').GetAsCollection;  setlength(colxx, list1.Count * 2);  setlength(OclColumnyy, list1.count * 2);  setlength(StyleFormatConditionxx, list1.count * 2);  for I := 0 to List1.Count - 1 do  begin //以下代码动态建立OCLPSHANDLE中的列,用EXPRESSIONHANDLE不好处理列数据源变化后的数据刷新,用oclpshandle可方便用OCLPSHANDLE的EXECUTE方法进行数据刷新    strname := string(list1[i].AsObject);    OclColumnyy[2 * i] := Borland.Eco.Handles.OclColumn.Create;    OclColumnyy[2 * i].Expression := ' self.buymxs->select(p|(p.paperlx=''4'') and (p.buy.bm.name=''' + strname + ''') and ' + getsjstr() + ').quantity->sum';    OclColumnyy[2 * i].Name := 'oclmy' + convert.ToString(2 * i);    Self.ohbm.Columns.AddRange(TArrayOfBorland_Eco_Handles_AbstractColumn.Create(OclColumnyy[2 * i])); //以下代码增加gridcontrol的列 ,以显示上面oclpshandle中动态增加的列内容    colxx[2 * i] := DevExpress.XtraGrid.Columns.GridColumn.Create;    colxx[2 * i].Caption := strname + '数量';    colxx[2 * i].FieldName := 'oclmy' + convert.ToString(2 * i);    colxx[2 * i].Name := 'colmy' + convert.ToString(2 * i);    colxx[2 * i].OptionsColumn.AllowEdit := False;    colxx[2 * i].OptionsColumn.AllowSort := DevExpress.Utils.DefaultBoolean.True;    colxx[2 * i].OptionsColumn.ReadOnly := True;    colxx[2 * i].Visible := True;    colxx[2 * i].VisibleIndex := 6 + 2 * i;    colxx[2 * i].Width := 90;    colxx[2 * i].DisplayFormat.FormatString := '{0:n2}';    colxx[2 * i].DisplayFormat.FormatType := DevExpress.Utils.FormatType.Numeric;    colxx[2 * i].SummaryItem.DisplayFormat := '{0:n2}';    colxx[2 * i].SummaryItem.SummaryType := DevExpress.Data.SummaryItemType.Sum;//下两行代码为该列进行底部求和处理    Self.GridView1.Columns.AddRange(TArrayOfDevExpress_XtraGrid_Columns_GridColumn.Create(colxx[2 * i]));    Self.GridView1.GroupSummary.AddRange(TArrayOfDevExpress_XtraGrid_GridSummaryItem.Create(DevExpress.XtraGrid.GridGroupSummaryItem.Create(DevExpress.Data.SummaryItemType.Sum, 'oclmy' + convert.ToString(2 * i), colxx[2 * i], '{0:n2}'))); //以下代码为每个XTRAGRID的列增加不显示零值的处理,主要思路是满足列的值为零时,将前景色与背景色设为一致     StyleFormatConditionxx[2 * i]:= DevExpress.XtraGrid.StyleFormatCondition.Create;    StyleFormatConditionxx[2 * i].Appearance.ForeColor := System.Drawing.Color.White;    StyleFormatConditionxx[2 * i].Appearance.Options.UseForeColor := True;    StyleFormatConditionxx[2 * i].Column := colxx[2 * i];    StyleFormatConditionxx[2 * i].Condition := DevExpress.XtraGrid.FormatConditionEnum.Equal;    StyleFormatConditionxx[2 * i].Value1 := 0;    Self.GridView1.FormatConditions.AddRange(TArrayOfDevExpress_XtraGrid_StyleFormatCondition.Create(StyleFormatConditionxx[2 * i])); 因为我的数据中每一个I值的两列,故下面是另一列的处理,处理方式与上面相同    OclColumnyy[2 * i + 1] := Borland.Eco.Handles.OclColumn.Create;    OclColumnyy[2 * i + 1].Expression := ' self.buymxs->select(p|(p.paperlx=''4'') and (p.buy.bm.name=''' + strname + ''') and ' + getsjstr() + ').xj->sum';    OclColumnyy[2 * i + 1].Name := 'oclmy' + convert.ToString(2 * i + 1);    Self.ohbm.Columns.AddRange(TArrayOfBorland_Eco_Handles_AbstractColumn.Create(OclColumnyy[2 * i + 1]));     colxx[2 * i + 1] := DevExpress.XtraGrid.Columns.GridColumn.Create;    colxx[2 * i + 1].Caption := strname + '金额';    colxx[2 * i + 1].FieldName := 'oclmy' + convert.ToString(2 * i + 1);    colxx[2 * i + 1].Name := 'colmy' + convert.ToString(2 * i + 1);    colxx[2 * i + 1].OptionsColumn.AllowEdit := False;    colxx[2 * i + 1].OptionsColumn.AllowSort := DevExpress.Utils.DefaultBoolean.True;    colxx[2 * i + 1].OptionsColumn.ReadOnly := True;    colxx[2 * i + 1].Visible := True;    colxx[2 * i + 1].VisibleIndex := 6 + 2 * i + 1;    colxx[2 * i + 1].Width := 90;    colxx[2 * i + 1].DisplayFormat.FormatString := '{0:n2}';    colxx[2 * i + 1].DisplayFormat.FormatType := DevExpress.Utils.FormatType.Numeric;    colxx[2 * i + 1].SummaryItem.DisplayFormat := '{0:n2}';    colxx[2 * i + 1].SummaryItem.SummaryType := DevExpress.Data.SummaryItemType.Sum;    Self.GridView1.Columns.AddRange(TArrayOfDevExpress_XtraGrid_Columns_GridColumn.Create(colxx[2 * i + 1]));    Self.GridView1.GroupSummary.AddRange(TArrayOfDevExpress_XtraGrid_GridSummaryItem.Create(DevExpress.XtraGrid.GridGroupSummaryItem.Create(DevExpress.Data.SummaryItemType.Sum, 'oclmy' + convert.ToString(2 * i + 1), colxx[2 * i + 1], '{0:n2}')));      StyleFormatConditionxx[2 * i+1]:= DevExpress.XtraGrid.StyleFormatCondition.Create;    StyleFormatConditionxx[2 * i+1].Appearance.ForeColor := System.Drawing.Color.White;    StyleFormatConditionxx[2 * i+1].Appearance.Options.UseForeColor := True;    StyleFormatConditionxx[2 * i+1].Column := colxx[2 * i+1];    StyleFormatConditionxx[2 * i+1].Condition := DevExpress.XtraGrid.FormatConditionEnum.Equal;    StyleFormatConditionxx[2 * i+1].Value1 := 0;    Self.GridView1.FormatConditions.AddRange(TArrayOfDevExpress_XtraGrid_StyleFormatCondition.Create(StyleFormatConditionxx[2 * i+1]));   end;  ohbm.Execute;end;


阅读全文(4671) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144784374 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号