Il est évident à partir de votre q et de vos réponses aux commentaires des lecteurs qu'il y a quelque chose qui cloche dans la déclaration de votre formulaire. Un formulaire nouvellement créé avec cxGrids placé de la manière habituelle (en sélectionnant le cxGrid sur la palette de composants et en déposant deux instances sur le formulaire) ne présente pas le problème de compilation, ni le comportement aberrant que vous décrivez. Essayez-le et vous verrez ce que je veux dire. Ci-dessous le code et l'extrait .DFM d'un projet qui a deux TcxGrids, un avec un NewItemRow visible, un sans. Cet exemple de projet est pour D7 en utilisant v.15 de la cxGrid, qui est le plus haut numéro de version qui prend en charge D7. Je l'ai fait en D7 car vous n'avez pas dit quelle version de Delphi vous utilisez.
J'ai délibérément mis en place autant de propriétés de composants, etc., que j'ai pu dans le code, donc vous pouvez voir ce qui se passe et comment cela est fait.
Si vous l'essayez, vous constaterez qu'il se compile sans le message d'erreur que vous mentionnez dans l'un de vos commentaires et se comporte comme prévu. Par conséquent, je ne peux que supposer qu'il ya une erreur dans votre nom ou la déclaration des composants et/ou dans votre code que nous lecteurs ne pouvons pas voir dans ce que vous avez inclus dans votre q. Le meilleur que je peux vous suggérer de faire pour résoudre votre problème est de commencer avec un formulaire vierge et de déposer 2 cxGrids dessus. Enregistrez et affichez le DFM résultant et confirmez que les 2cxGrids et leurs sous-composants (cxGridDBTableView et cxGridLevel) sont correctement nommés et, puis effectuez un DIFF entre ce DFM et celui de votre projet pour identifier leur divergence.
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 extrait
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
FWIW: Avez-vous essayé [soutien DevEX] (https://www.devexpress.com/Support/Center/Question/List/1)? À mon humble avis, c'est le meilleur endroit pour les problèmes DevEx. –
Trois questions en deux heures? Peut-être que vous devez contacter les deux fournisseurs ou lire des tutoriels ou de la documentation. Il semble que vous ne fassiez pas suffisamment d'efforts pour trouver une réponse vous-même avant de poster ici. –
Il semble y avoir une erreur dans votre code "cxGridDBTableView1.NewItemRow.Visible". Si vos grilles sont nommées cxGrid1 et cxGrid2, leurs TableViews seront appelées cxGrid ** 1 ** DBTableView1 et cxGrid ** 2 ** DBTableView1. Aucun d'entre eux ne sera appelé "cxGridDBTableView1". – MartynA