关于ExpressQuantumGrid4的cxGrid的一些使用方法

来源:互联网 发布:放羊的星星 知乎 编辑:程序博客网 时间:2024/05/20 21:21

关于ExpressQuantumGrid4的cxGrid的一些使用方法 

 

关于ExpressQuantumGrid4的cxGrid的一些使用方法

请教:
>>怎样实现如EXCEL一样的,当前格=G14+G15+G16 这样的功能
>>   解决:举一个简单的例子:label1.Caption := >>cxGrid1DBTableView1.DataController.Values[2, 3]>>+cxGrid1DBTableView2.DataController.Values[1, 1]>>+cxGrid1DBTableView3.DataController.Values[1, 1];
>>所以不同cxGrid1DBTableView中的数据都可以给当前格,这样就做到了EXCEL中的当前格>>=G14+G15+G16 类似的功能

这句话写在哪个事件里呢?
 
 2004-1-15 11:03:47 karendy 发表评论。  
非常好,如果我想实现这样的功能那要怎样弄啊
我想要这样一列,每次新增(删除)一条信息,那个列就自动加(减少)1,而后面的数据也会自动的排列,如
ID        COL1        COL2
1          A           B
2          B           C
3          C           D
4          D           E
当我删除第二条时,grid就变为
ID        COL1        COL2
1          A           B
2          C           D
3          D           E

请指教,谢谢
 
 2004-1-15 13:34:57 wangxian11 发表评论。  
这个问题我觉得只能在触发器里写吧,每次增加一条或者删除一条数据的时候,对ID进行重排
这和grid没关系
 
 2004-1-15 15:36:48 karendy 发表评论。  
不是啊,如果我想把这个ID放进数据库里,我只是想让它在GRID里显示的,我听一个高手说过可以根据绝对位置来设置,但具体怎样设我就不知道了.
 
 2004-2-17 17:10:52 阿潘 发表评论。  
我使用主从表功能 时,为什么从表只能编辑第一行,或第一张卡片,其他的记录可以看到,但不能 修改,上火,是不是有什么属性美设好啊?
 
 2004-3-27 11:04:25 陈晨 发表评论。  
不错,刚开始用这个东西呵呵呵
 
 2004-4-12 11:56:07 camel4057 发表评论。  
如果我有:
主窗口MainFrm,其中包含一cxgrid和视图grdvwMain,在子窗口ChildFrm修改了MainFrm中的cxgrid的数据后,关闭自己,再用如下语句想实现MainFrm中cxgrid中的数据的刷新,为什么不起作用?
…………
    Close;
     MainFrm.cxgrid1.grdvwMain.DataController.DataSource.DataSet.Close;
     MainFrm.cxgrid1.grdvwMain.DataController.DataSource.DataSet.Refresh;
     MainFrm.cxgrid1.grdvwMain.DataController.DataSource.DataSet.Open;

怎样才能实现MainFrm中cxgrid1中的数据的刷新?????????
 
 2004-4-18 16:52:20 lollman 发表评论。  
增强的DefaultGroupSummaryItem

DefaultGroupSummaryItem的OnGetText中根据前面的DefaultGroupSummaryItem计算来显示
比如

DefaultGroupSummaryItem[0]是“上期数量”
DefaultGroupSummaryItem[1]是“增加数量”
DefaultGroupSummaryItem[2]需要计算得到增加的百分比

怎么做呢?
我使用了
cxGrid1DBBandedTableView2.DataController.GetFocusedRecordIndex
cxGrid1DBBandedTableView2.DataController.GetFocusedRowIndex
都不能得到预想的数据,只有修改源程序了


打开ExpressDataController/Sources/cxCustomData.pas

  TcxDataSummaryItemGetTextEvent = procedure(Sender: TcxDataSummaryItem;
    const AValue: Variant; AIsFooter: Boolean; var AText: string) of object;
改为
  TcxDataSummaryItemGetTextEvent = procedure(Sender: TcxDataSummaryItem;
    const AValue: Variant; AIsFooter: Boolean; var AText: string; const ARowIndex:Integer) of object;
--------------------------------------------------------
    function FormatValue(const AValue: Variant; AIsFooter: Boolean): string; virtual;
改为
    function FormatValue(const AValue: Variant; AIsFooter: Boolean; ARowIndex: Integer): string; virtual;
-----------------------------------------------------------------
  if Assigned(FOnGetText) then
    FOnGetText(Self, AValue, AIsFooter, Result);
改为
  if Assigned(FOnGetText) then
    FOnGetText(Self, AValue, AIsFooter, Result, ARowIndex);
-------------------------------------------------------------------
      Result := ASummaryItems[Index].FormatValue(PSummaryValues{$IFNDEF CLR}^{$ENDIF}[Index], True);
改为
      Result := ASummaryItems[Index].FormatValue(PSummaryValues{$IFNDEF CLR}^{$ENDIF}[Index], True, RowIndex);

重新编译3个dpk后,在DefaultGroupSummaryItem.OnGetText中多了个ARowIndex,就是当前行

在OnGetText中就可以计算了
begin
  i:=cxGrid1DBBandedTableView2.DataController.Groups.DataGroupIndexByRowIndex[ARowIndex];
  Lasts:=Trunc(cxGrid1DBBandedTableView2.DataController.Summary.DefaultGroupSummaryItems.Summary.GroupSummaryValues[i,0]);
  Zjs:=Trunc(cxGrid1DBBandedTableView2.DataController.Summary.DefaultGroupSummaryItems.Summary.GroupSummaryValues[i,1]);
  if Lasts=0 then AText:=''
  else
    AText:=IntToStr(Trunc(Zjs/Lasts*100))+'%';
end;
 
 2004-4-19 8:13:06 lollman 发表评论。  
我上次讲的只能实现一层分组,多层的话会有问题
 
 2004-4-19 8:21:11 lollman 发表评论。  
现在说说如何实现多层的DefaultGroupSummaryItem

打开ExpressDataController/Sources/cxCustomData.pas

  TcxDataSummaryItemGetTextEvent = procedure(Sender: TcxDataSummaryItem;
    const AValue: Variant; AIsFooter: Boolean; var AText: string) of object;
改为
  TcxDataSummaryItemGetTextEvent = procedure(Sender: TcxDataSummaryItem;
    const AValue: Variant; AIsFooter: Boolean; var AText: string; const ARowIndex,ALevel:Integer) of object;
--------------------------------------------------------
    function FormatValue(const AValue: Variant; AIsFooter: Boolean): string; virtual;
改为
    function FormatValue(const AValue: Variant; AIsFooter: Boolean; ARowIndex,ALevel: Integer): string; virtual;
-----------------------------------------------------------------
  if Assigned(FOnGetText) then
    FOnGetText(Self, AValue, AIsFooter, Result);
改为
  if Assigned(FOnGetText) then
    FOnGetText(Self, AValue, AIsFooter, Result, ARowIndex,ALevel);
-------------------------------------------------------------------
        S := Items[I].FormatValue(ASummaryValues[I], False);
改为
        S := Items[I].FormatValue(ASummaryValues[I], False, -1, -1);
-------------------------------------------------------------------
  Result := FooterSummaryItems[Index].FormatValue(FooterSummaryValues[Index], True);
改为
  Result := FooterSummaryItems[Index].FormatValue(FooterSummaryValues[Index], True,-1, -1);
-------------------------------------------------------------------
      Result := ASummaryItems[Index].FormatValue(PSummaryValues{$IFNDEF CLR}^{$ENDIF}[Index], True);
改为
      Result := ASummaryItems[Index].FormatValue(PSummaryValues{$IFNDEF CLR}^{$ENDIF}[Index], True, RowIndex,Level);



在OnGetText事件中
procedure TfrmSaleTjbb.cxGrid1DBBandedTableView2TcxGridDBDataControllerTcxDataSummaryDefaultGroupSummaryItems4GetText(
  Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean;
  var AText: String; const ARowIndex,ALevel: Integer);
var
  Lasts,Zjs:Integer;
begin
  lasts:=Trunc(cxGrid1DBBandedTableView2.DataController.Summary.DefaultGroupSummaryItems.Summary.GroupSummaryDisplayValues[ARowIndex,ALevel,1]);
  Zjs:=Trunc(cxGrid1DBBandedTableView2.DataController.Summary.DefaultGroupSummaryItems.Summary.GroupSummaryDisplayValues[ARowIndex,ALevel,3]);
  if Lasts=0 then AText:=''
  else
    AText:=IntToStr(Trunc(Zjs/Lasts*100))+'%';
end;
 
 2004-5-9 14:09:02 walkyou 发表评论。  
如果有三个表有主明细关系
C是B的明细
B是A的明细
当我在cxGrid1中建3个DBTableView,如下
A1111(第1条)(n个字段...)
  B111
    C111
    C222
    C333
    ...
  B222
    ...
  ...
A2222
  ...
    ...
A3333
  ...
    ....

我怎样才能展开所有的支点呢?
如果是一个DBTableView的话可以用
cxGrid1DBTableView1.DataController.Groups.FullExpand;
但有3个时我用了
cxGrid1DBTableView3.DataController.Groups.FullExpand;//C
cxGrid1DBTableView2.DataController.Groups.FullExpand;//B
cxGrid1DBTableView1.DataController.Groups.FullExpand;//A

cxGrid1DBTableView1.DataController.Groups.FullExpand;//A
cxGrid1DBTableView2.DataController.Groups.FullExpand;//B
cxGrid1DBTableView3.DataController.Groups.FullExpand;//B
都展开不了啊
 
 2004-5-9 15:25:26 snail-2 发表评论。  
wangxian11 你好!
您能帮助解答一下在cxGrid1DBTableView1(某段名)的Properties的选项中如何得到PopupEdit或ExtLookupComboBox类的Dropdown句柄.我没找到通过cxGrid1DBTableView1(某段名)的Properties来调用PopupEdit类或ExtLookupComboBox类里method的途径.帮忙研究一下好吗?清关注问题ID:2587304 谢谢!
 
 2004-5-9 15:26:38 snail-2 发表评论。  
wangxian11 你好!
您能帮助解答一下在cxGrid1DBTableView1(某段名)的Properties的选项中如何得到PopupEdit或ExtLookupComboBox类的Dropdown句柄.我没找到通过cxGrid1DBTableView1(某段名)的Properties来调用PopupEdit类或ExtLookupComboBox类里method的途径.帮忙研究一下好吗?清关注问题ID:2587304 谢谢!
 
 
 
 2004-5-29 16:29:00 JtWang 发表评论。  
wangxian11,你好!

我使用cxExportGrid4Link的ExportGrid4TOText時,Export出來的Txt文件,每兩個字段之間都會加上兩個空格,我不想要這兩個空格,我該怎麼設置呀.......

謝謝!
 
 2004-5-30 14:47:45 wangxian11 发表评论。  
在ExpressQuantumGrid4自带的帮助文件里打入“ExportGrid4ToText Procedure”就可以查到如下帮助,稍微看一下,然后再实验以下就可以解决了:

以下是帮助内容:
procedure ExportGrid4ToText(const AFileName: string; AGrid: TcxGrid; AExpand: Boolean = True; ASaveAll: Boolean = True; const ASeparator: string = ''; const ABeginString: string = ''; const AEndString: string = '');

Use the ExportGrid4ToText method to save the AGrid control抯 contents to a text file.
 ExportGrid4ToText does not allow you to export detail views.  When writing to text format, cell styles and borders are not supported.  Only the cell arrangement and cell contents are exported to the file.  
The AFileName parameter specifies the name and the path of the text file.  The ?txt?extension is added automatically by the method.  If the filename already contains an extension, it will replaced with ?txt?

The AExpand parameter indicates whether to export all records displayed in the grid including those hidden within collapsed groups.  If AExpand is False, only visible records are written to the file.
The ASaveAll parameter indicates whether to export selected or all records.
 
 2004-6-15 14:32:57 angelior 发表评论。  
老兄,我改变行颜色时总是出错

帮帮我。

代码如下。

if ARecord.Values[4]>ARecord.Values[5] then
    AStyle := cxStyleRed
   else
    if ARecord.Values[4]<ARecord.Values[5] then
     AStyle := cxStyleTeal;  
 
 2004-6-15 17:59:11 wangxian11 发表评论。  
这样给我代码我很难知道你错在哪里?
AStyle有没定义?有没生成,它是一个对象
AStyle := TcxStyle.Create(Self);


你可以试试简单些的条件比如:
if ARecord.Values[4]>20 then
    AStyle := cxStyleRed;
看看有没错,然后再试试
if ARecord.Values[4]>ARecord.Values[5] then
    AStyle := cxStyleRed;
 
 2005-2-1 19:41:17 cnhotel 发表评论。  
谢谢老大分享这么多的心得啊也在用这个控件
 
 2005-5-26 22:44:30 周海涛 发表评论。  
但是最大的缺点就是
不能象ehlib那样支持直接打印楼主知道怎么解决吗!
 
 2005-9-21 10:26:01 necyhk 发表评论。  
我想将一个XML中的主从表关系数据导到TcxGridTableView中去,可是对于从表的数据不知如何导入,不知哪个方法可以用,主表(cxGrid1TableView1)从表(cxGrid1TableView2)
     cxGrid1TableView1.BeginUpdate;
     self.cxGrid1TableView1.DataController.RecordCount:=10;
     j:=self.cxGrid1TableView1.ColumnCount;
     for k :=0  to j-1  do
     begin
        self.cxGrid1TableView1.DataController.Values[0,k]:='delphi7';
     end;
     cxGrid1TableView1.EndUpdate;
我现在想在插入主表数据时同时插入从表数据,由于不是DB的,所以不知有怎样做,请各位指点一下呀
 
 2006-6-6 13:08:21 skygu 发表评论。  
怎么使焦点放到cxgrid某个单元格 
 

使用cxGrid有一些时间了,在这里总结一下使用cxGrid的一些方法,希望给刚开始接触cxGrid的人一些帮助。

1.简单介绍:cxGrid右下方的cxGrid1Level1是表示Grid表的层,cxGrid可以有多层,这相当于集合了PageControl的

功能,而cxGrid1Level1右边的cxGrid1DBTableView1相当于DBGrid一样。右击cxGrid1可以添加cxGrid1Level2,右击

cxGrid1Level2,可以选择Create View , Add level 或者Delete Level。Add level可以增加子Level,Create View

里面可以选择很多不同总类的View。其中
   1)DB Table可以和数据库连接的View,更一般的DBGrid类似,它比DBGrid多了比如鼠标中键可以用,可以统计,

查询,等等功能;
   2)DB Banded Table 则可以实现比如:
                     ---------------------------------
                     |     说明1     |     说明2     |
                     ---------------------------------
                     | 字段1 | 字段2 | 字段3 | 字段4 |
等类似的功能;
   3)DB Card View 则提供了卡片方式的显示数据的功能,这个用在比如人事档案管理比较不错;
   4)其它不一一赘述。
 
2.一些使用方法:
   1)有图片和MEMO的例子:
     拖入一个cxGrid1,Table1,DataSource1。 Table1的DatabaseName设为DBDEMOS,TableName设为biolife.db,

    Active设为True;DataSource1的DataSet设为Table1;cxGrid1DBTableView1的DataController中的DataSource  

    设为DataSource1;右击cxGrid1DBTableView1选择Create All Columns;双击cxGrid1,在弹出的窗口中找到    

   cxGrid1DBTableView1Notes和cxGrid1DBTableView1Graphic,将它们的Properties属性设为BlobEdit;运行看看  

   结果。再将cxGrid1DBTableView1Graphic的Properties属性设为Image,再将Properties下的Stretch设为True,  

   将cxGrid1DBTableView1->optionsview->CellAutoHeight 设为True,看看结果。


   2)如何让“Drag a column here to group by that column”不显示
     解决:点击cxGrid1上的cxGrid1DBTableView1
     在cxGrid1DBTableView1->optionsview->groupbybox:=false即可  
     注:OptionsView里面有很多属性可能经常要用,比如:ColumnAutoWith,Navigator等等,慢慢琢磨吧:)
     
   3)GroupPanel上面的英文[Drag a column header to group by that column]怎么可以改成中文?
     解决:最简单的方法是 TcxGridTableView.OnCustomDrawPartBackground ,也可用 OnCustomDrawGroupCell:

     procedure TForm1.cxGrid1DBTableView1CustomDrawPartBackground(
                Sender: TcxGridTableView; ACanvas: TcxCanvas;
               AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);
     begin
       AViewInfo.Text:='动态设置 GroupBox 的显示内容';
       ACanvas.FillRect(AViewInfo.Bounds);
     end;

   4)如何实现如下功能:
            +财务部
            +原材料仓库
            +成品库
            +冲压车间
            +软件开发部
     这个是部门的名称,点击加号就可以将本部门的人员情况显示出来。
     解决:其实这是一个主从表关系,1:填好主表的keyfieldnames
                                   2:填好从表的keyfieldnames
                                   3:填好从表的 detaikeyfieldNames与masterkeyfieldnames
                                   4: 从表的数据源一定要按与主表关联的字段排序
    注:其它地方设置了主从表结构那样就显示不出来,比如设置了从表的Table或者Query的mastersource和
    asterfield就会不能显示数据!如果是两个cxGrid的主从关系,这样设置就很OK了。

   
  5)统计功能
    解决:cxGrid1DBTableView1->optionsview->Footer 设为True
          cxGrid1DBTableView1->DataController->Summary设置FooterSummaryItems即可  

  6)类似PageControl显示
    解决:增加一个Level,将cxGrid1->RootLevelOptions->DetailTabsPosition设为dtpTop,然后相应的设置cxGrid1Level1,和cxGrid1Level2的Caption值。

   未完待续。。。。。。。。。  



2003-10-29 20:46:00    
 发表评语&raquo;&raquo;&raquo;    

 2003-10-30 20:55:11    问题7,8,9 7)如何设定左边几列,不能滚动?
    解决:使用DB Banded Table才可以实现,
          在cxGrid1DBBandedTableView里建立Band0,Band1
          Band0的Fixed=tfLeft
          Band1的Fixed=tfnone
          设置要锁定的字段的BandIndex=0,其它为1,就OK了。  
 
  8)怎样实现如EXCEL一样的,当前格=G14+G15+G16 这样的功能
    解决:举一个简单的例子:label1.Caption := cxGrid1DBTableView1.DataController.Values[2,

3]+cxGrid1DBTableView2.DataController.Values[1, 1]+cxGrid1DBTableView3.DataController.Values[1, 1];
所以不同cxGrid1DBTableView中的数据都可以给当前格,这样就做到了EXCEL中的当前格=G14+G15+G16 类似的功能。
 
  9)鼠标右击cxGrid1DBBandedTableView1菜单里的Edit Layout什么用,怎么使用?
    解决:可以拖动字段,并列的可以拖成有层次感(一层层), 拖动时会显示箭头的,就是说可以拖一个字段放

到最上面,就可以使记录按此字段进行分组。点击其中一个字段,上面还会出现一个上升或者下降的小三角形,这个

小三角形的作用是在运行阶段,数据就会按照这个字段上升或者下降排序。
     还有一个Set as Default的作用是保持当前TableView的参数,下此产生新的TableView的时候就会可以和上次保持的参数一样。这个还没有做过试验。
 

 
 2003-11-2 21:45:37    问题1010)怎样将cxGrid里的数据导入到EXCEL,HTML,XML和TEXT
   解决:这个问题在用了cxGrid以后变得异常简单,
uses
  cxExportGrid4Link;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ExportGrid4ToEXCEL('d:/wang.xsl',cxGrid1,True,True);
  ExportGrid4ToTEXT('d:/wang.txt',cxGrid1,True,True);
  ExportGrid4ToXML('d:/wang.xml',cxGrid1,True,True);
  ExportGrid4ToHTML('d:/wang.html',cxGrid1,True,True);
end;

 
 2003-11-2 21:54:10    问题1111)如何使满足条件的数据显示不同的颜色?
解决:
var
 AYellowStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //行颜色
 AYellowStyle := TcxStyle.Create(Self);
 AYellowStyle.Color := $0080FFFF;
 AYellowStyle.TextColor := clMaroon;
end;

procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle(
 Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
 AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
 if ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index] < 81 then
   AStyle := AYellowStyle;
end;

这里cxGrid1DBBandedTableView1Lengthcm.Index小于81时就显示黄色
 

 
 2003-11-2 21:59:39    问题1212)如何从外边的TXT文件导入到cxGrid?
 解决:    procedure CustomizeColumns;
           procedure LoadData;

procedure TForm1.CustomizeColumns;
const
  cDistance = 1;
  cRadius = 5;
  cPeriod = 4;
  cPstring = 0;
var
  I: Integer;
begin
  DecimalSeparator := '.';
  with cxGrid1TableView2 do
  for I := 0 to ColumnCount - 1 do
    if I in [cDistance, cRadius] then
      Columns[I].DataBinding.ValueTypeClass := TcxIntegerValueType//1,5列为Integer
    else
      if I in [cPstring,cPeriod] then
      Columns[I].DataBinding.ValueTypeClass := TcxStringValueType//0,4列为String
      else
       Columns[I].DataBinding.ValueTypeClass := TcxFloatValueType;//其他为Float
end;

procedure TForm1.LoadData;
const
  AFileName = '资产负债表.txt';
  AHeaderLineCount = 2;

var
  ARecords, AValues: TStringList;
  I: Integer;

  procedure InitRecord(const Str: string);
  var
    J: Integer;
    V: Variant;
  begin
    AValues.CommaText := Str;
    for J := 0 to AValues.Count - 1 do
     if AValues.Strings[J] <> '-' then
     begin
      V := AValues.Strings[J];
      if not VarIsNull(V) then
        cxGrid1TableView2.DataController.Values[I, J] := V;
     end;
  end;

begin
  if not FileExists(AFileName) then
    raise Exception.Create('Data file not found');

  ARecords := TStringList.Create;
  AValues := TStringList.Create;

  with ARecords do
  try
    LoadFromFile(AFileName);
    cxGrid1TableView2.BeginUpdate;
    cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount;
    for I := 0 to Count - (AHeaderLineCount + 1) do
      InitRecord(Strings[I + AHeaderLineCount]);
  finally
    cxGrid1TableView2.EndUpdate;
    ARecords.Free;
    AValues.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CustomizeColumns;
  LoadData_Zcfz;
end;

 
 2003-11-3 13:18:58    附件其中“资产负债表.txt”中的数据如下:

资        产  行次  年  初  数  期  末  数  负债及所有者权益  行次  年  初  数  期  末  数
---------       ----    -----           --------        ----------             ----     --------        ---------
流动资产:  1  0.00          0.00          流动负债:          2  0.00          0.00  

 
 2003-11-3 20:09:25    问题1313)如何改变列的颜色?
var
  AFirstColumnStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //列颜色
  AFirstColumnStyle := TcxStyle.Create(Self);
  AFirstColumnStyle.Color := clAqua;
  AFirstColumnStyle.TextColor := clBlue;
  cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle;
end;

 
 2003-11-3 20:46:42    问题1414)Set as default的用法?
  解决:Set as default的用法是为了解决设置参数的方便而做的,比如:
        连好数据库以后,更改cxGrid1DBBandedTableView1->OptionsCustomize->ColumnFiltering 设为False。(这个设置可以将字段名的下拉单给去掉)更改cxGrid1DBBandedTableView1->OptionsView->Navigator 设置为True。然后右击cxGrid1DBBandedTableView1,在弹出的菜单栏里面点击Set as default。
   OK,下次你再产生一个新的cxGrid1DBBandedTableView1时这些设置和刚才的一样了。如果需要设置的参数很多的时候,这个Set as default很有用!

 
 2003-11-3 20:58:27    问题1515)怎样使鼠标移动时,相应的单元里的文字变色?
   解决:
var
  FTrackItem: TcxCustomGridTableItem;
  FTrackRec: TcxCustomGridRecord;

procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  if (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) then
  begin
    ACanvas.Font.Color := clred;   //红色字体
    ACanvas.Font.Style := [fsUnderline];//带下划线
  end;
end;

procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  AHitTest: TcxCustomGridHitTest;
  ATrackItem: TcxCustomGridTableItem;
  ATrackRec: TcxCustomGridRecord;
begin
  ATrackItem := FTrackItem;
  ATrackRec := FTrackRec;

  AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
  if AHitTest is TcxGridRecordCellHitTest then
  begin
    FTrackItem := TcxGridRecordCellHitTest(AHitTest).Item;
    FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord;
  end
  else
  begin
    FTrackItem := nil;
    FTrackRec := nil;
  end;

  if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) then
  begin
    // Invalidate old cell
    if ATrackRec <> nil then
      ATrackRec.Invalidate(ATrackItem);
    // Invalidate new cell
    if FTrackRec <> nil then
      FTrackRec.Invalidate(FTrackItem);
  end;
end;

 
 2003-11-5 11:26:19    问题1616)ExpressQuantumGrid 3.2.2中的dxdbgrid和4.2版本中的cxgrid有什么区别?
有很大的区别,基本上相当于是两个控件一样。
cxgrid是在dxdbgrid基础上完全重写的,所以cxgrid不支持dxdbgrid
所以cxgrid里面特意提供了一个将dxdbgrid导入到cxgrid的功能。
 

 
 2003-11-5 16:31:07    问题1717)怎样设计多表头的cxGrid?
   解决:cxGrid可以解决如下的表头:
                    ---------------------------------
                    |     说明1     |     说明2     |
                    ---------------------------------
                    | 字段1 | 字段2 | 字段3 | 字段4 |
                    |      字段5    |     字段6     |
                    |      字段7    | 字段8 | 字段9 |
实现这个很简单,你可以直接在上面拖动字段名,拖动时会显示箭头的,放入你想显示的位置就OK了。或者在鼠标右击cxGrid1DBBandedTableView1菜单里的Edit Layout里也可以拖放。

但是cxGrid不能实现如下的多表头形式:
                    ---------------------------------
                    |     说明1     |     说明2     |
                    ---------------------------------
                    | 说明3 | 说明4 | 说明5 | 说明6 |
                    |      字段1    |     字段2     |
                    |      字段3    | 字段4 | 字段5 |
不知道有谁能实现这样的多表头?

 
 2003-11-5 21:51:02    问题1818)在主从表结构时,当点开“+”时怎样将焦点聚在相应主表的记录上?
解决:
var
  HitTest: TcxCustomGridHitTest;

procedure TColumnsShareDemoMainForm.tvProjectsMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  // Note that the Sender parameter is a Site
  HitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
  // The point belongs to the [+]/[-] button area
  if HitTest is TcxGridExpandButtonHitTest then
    // Move focus to the record
    TcxGridExpandButtonHitTest(HitTest).GridRecord.Focused := True;
end;

 
 2003-11-17 14:16:25    问题1919)CXGrid4如何展开全部节点
  解决:GridDBTableView1.DataController.Groups.FullExpand;

 
 2003-12-12 17:07:30    问题2020)cxGrid如何动态创建Items的Editor的项?
    cxGrid的列有一个属性,它的编辑框可以指定combobox,spinedit等.在设计时,可以为
    combobox的items添加项目.请问是否可以动态创建?(run-time时由程序加入)

解决:
var
   A:TDataSource:
   B:TcxlookupcomboboxProperties;
       begin
   A:=TDataSource.create(self);
   B:=tcxlookupcomboboxproperties.create(self);
   A.Dataset:=Dic_ry_xb;//此处指定数据源。
   b.listdource:=a;//此处指明字段的listsource属性。
   b.keyfieldnames:='a';    //此处指明字段的关键字段
   b.listfieldnames:='b';   //此处指明字段的返回值。
   b.listcolumns.items[0].caption:='x;  //此处默认是会建立一个字段,但是显示的表头是name,所以此处让它显示为自己想要的中午显示。
         cxGrid1DBTableView1c1_sex_code.Properties:=b;  //此处指明是那个字段。
 end;  //这个是初始化的代码,

 
 2004-1-7 14:05:14    问题2121)ExpressQuantumGrid4.5的汉化包
在这里可以下载ExpressQuantumGrid4.5的汉化包,将文件直接覆盖到源文件就可以了。

原创粉丝点击