我的窗体上有两个cxgrid(cxGrid1和cxGrid2)。 两者都有NewItemRow.Visible。两个cxGrids:cxGridDBTableView1只适用于一个网格?
现在,我想从cxGrid2删除NewItemRow。 呼叫:
cxGridDBTableView1.NewItemRow.Visible:=False;
从cxGrid1删除NewItemRow,而不是从一个我想要的(cxGrid2)。 如何将这个应用到cxGrid2?
我的窗体上有两个cxgrid(cxGrid1和cxGrid2)。 两者都有NewItemRow.Visible。两个cxGrids:cxGridDBTableView1只适用于一个网格?
现在,我想从cxGrid2删除NewItemRow。 呼叫:
cxGridDBTableView1.NewItemRow.Visible:=False;
从cxGrid1删除NewItemRow,而不是从一个我想要的(cxGrid2)。 如何将这个应用到cxGrid2?
它是从你的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
必须是热度....是的你是对的...我没有看到命名约定的意见。 – user763539
很高兴你把它整理出来。 – MartynA
FWIW:您是否尝试过[DevEx支持(https://www.devexpress.com/Support/Center/Question/List/1)?恕我直言,这是DevEx问题的最佳场所。 –
两个小时内三个问题?也许你需要联系两个供应商或阅读一些教程或文档。在张贴这里之前,你肯定没有看到你自己要付出足够的努力找到自己的答案。 –
您的代码“cxGridDBTableView1.NewItemRow.Visible”似乎有错误。如果您的网格命名为cxGrid1和cxGrid2,则它们的TableView将被称为cxGrid ** 1 ** DBTableView1和cxGrid ** 2 ** DBTableView1。它们都不会被称为“cxGridDBTableView1”。 – MartynA