2016-07-15 64 views
0

我的窗体上有两个cxgrid(cxGrid1和cxGrid2)。 两者都有NewItemRow.Visible。两个cxGrids:cxGridDBTableView1只适用于一个网格?

现在,我想从cxGrid2删除NewItemRow。 呼叫:

cxGridDBTableView1.NewItemRow.Visible:=False; 

从cxGrid1删除NewItemRow,而不是从一个我想要的(cxGrid2)。 如何将这个应用到cxGrid2?

+1

FWIW:您是否尝试过[DevEx支持(https://www.devexpress.com/Support/Center/Question/List/1)?恕我直言,这是DevEx问题的最佳场所。 –

+2

两个小时内三个问题?也许你需要联系两个供应商或阅读一些教程或文档。在张贴这里之前,你肯定没有看到你自己要付出足够的努力找到自己的答案。 –

+1

您的代码“cxGridDBTableView1.NewItemRow.Visible”似乎有错误。如果您的网格命名为cxGrid1和cxGrid2,则它们的TableView将被称为cxGrid ** 1 ** DBTableView1和cxGrid ** 2 ** DBTableView1。它们都不会被称为“cxGridDBTableView1”。 – MartynA

回答

2

它是从你的Q和您的回复读者的评论明显,有东西在窗体的声明不对劲。以通常的方式(通过选择组件面板上的cxGrid并将它的两个实例放到窗体上)放置一个新创建的cxGrid表单,不会显示编译问题,也不会显示您描述的异常行为。试试吧,你会明白我的意思。

下面是具有两个TcxGrid的项目的代码和.DFM提取,其中一个具有可见的 NewItemRow,一个没有。此示例项目适用于D7,使用cxGrid的v.15,即支持D7的 最高版本号。我已经在D7中完成了它,因为你没有说你使用的是哪个Delphi版本。

我已经故意设置了许多组件属性等,因为我可以在代码中,所以你可以看到发生了什么以及它是如何完成的。

如果您尝试它,您会发现它在没有错误消息的情况下编译,您在其中一个评论中提到了 ,并且其行为与预期相同。因此,我只能假设在组件的命名或声明中和/或在您的代码中存在一些 错误,我们的读者无法看到q中包含的内容。

我可以建议你做些什么来解开你的问题最好是先从一个空白表单和下降2个cxGrids到它。保存并查看生成的DFM,并自己确认2cxGrids及其子组件(cxGridDBTableView和cxGridLevel)的名称是正确的,然后在该DFM和项目的一个之间做一个DIFF以确定它们在哪里分歧。

type 
    TForm1 = class(TForm) 
    cxGrid1DBTableView1: TcxGridDBTableView; 
    cxGrid1Level1: TcxGridLevel; 
    cxGrid1: TcxGrid; 
    cxGrid2DBTableView1: TcxGridDBTableView; 
    cxGrid2Level1: TcxGridLevel; 
    cxGrid2: TcxGrid; 
    CDS1: TClientDataSet; 
    DataSource1: TDataSource; 
    DBNavigator1: TDBNavigator; 
    DBNavigator2: TDBNavigator; 
    DBGrid1: TDBGrid; 
    CDS1ID: TIntegerField; 
    CDS1Name: TStringField; 
    procedure FormCreate(Sender: TObject); 
    private 
    public 
    end; 
[...] 

procedure TForm1.FormCreate(Sender: TObject); 
var 
    Field : TField; 
begin 
    Field := TIntegerField.Create(Self); 
    Field.FieldName := 'ID'; 
    Field.FieldKind := fkData; 
    Field.DataSet := CDS1; 

    Field := TStringField.Create(Self); 
    Field.FieldName := 'Name'; 
    Field.Size := 20; 
    Field.FieldKind := fkData; 
    Field.DataSet := CDS1; 

    CDS1.CreateDataSet; 
    CDS1.InsertRecord([1, 'One']); 

    DBNavigator1.DataSource := DataSource1; 
    DBNavigator2.DataSource := DataSource1; 

    cxGrid1DBTableView1.DataController.DataSource := DataSource1; 
    cxGrid2DBTableView1.DataController.DataSource := DataSource1; 

    // The following creates default columns for the grids 
    cxGrid1DBTableView1.DataController.CreateAllItems; 
    cxGrid2DBTableView1.DataController.CreateAllItems; 

    cxGrid1DBTableView1.NewItemRow.Visible:= True; 
    cxGrid2DBTableView1.NewItemRow.Visible:= False; 

end; 

DFM提取

object Form1: TForm1 
    [...] 
    object cxGrid1: TcxGrid 
    Left = 24 
    Top = 16 
    Width = 250 
    Height = 200 
    TabOrder = 0 
    object cxGrid1DBTableView1: TcxGridDBTableView 
     Navigator.Buttons.CustomButtons = <> 
     DataController.DataSource = DataSource1 
     DataController.KeyFieldNames = 'ID' 
     DataController.Summary.DefaultGroupSummaryItems = <> 
     DataController.Summary.FooterSummaryItems = <> 
     DataController.Summary.SummaryGroups = <> 
    end 
    object cxGrid1Level1: TcxGridLevel 
     GridView = cxGrid1DBTableView1 
    end 
    end 
    object cxGrid2: TcxGrid 
    Left = 32 
    Top = 280 
    Width = 250 
    Height = 200 
    TabOrder = 1 
    object cxGrid2DBTableView1: TcxGridDBTableView 
     Navigator.Buttons.CustomButtons = <> 
     DataController.DataSource = DataSource1 
     DataController.KeyFieldNames = 'ID' 
     DataController.Summary.DefaultGroupSummaryItems = <> 
     DataController.Summary.FooterSummaryItems = <> 
     DataController.Summary.SummaryGroups = <> 
    end 
    object cxGrid2Level1: TcxGridLevel 
     GridView = cxGrid2DBTableView1 
    end 
    end 
    object DBNavigator1: TDBNavigator 
    Left = 40 
    Top = 232 
    Width = 240 
    Height = 25 
    TabOrder = 2 
    end 
    object DBNavigator2: TDBNavigator 
    Left = 40 
    Top = 496 
    Width = 240 
    Height = 25 
    TabOrder = 3 
    end 
    object CDS1: TClientDataSet 
    Aggregates = <> 
    Params = <> 
    end 
    object DataSource1: TDataSource 
    DataSet = CDS1 
    end 
+0

必须是热度....是的你是对的...我没有看到命名约定的意见。 – user763539

+0

很高兴你把它整理出来。 – MartynA

相关问题