2016-07-15 4 views
0

J'ai deux cxgrid sur mon formulaire (cxGrid1 et cxGrid2). Les deux ont le NewItemRow.Visible.Deux cxGrids: cxGridDBTableView1 ne s'applique qu'à une grille?

Maintenant, je veux supprimer NewItemRow de cxGrid2. Vocation:

cxGridDBTableView1.NewItemRow.Visible:=False; 

supprime NewItemRow de cxGrid1 et non de celui que je veux (cxGrid2). Comment puis-je l'appliquer à cxGrid2?

+1

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. –

+2

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. –

+1

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

Répondre

2

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 
+0

doit être la chaleur .... oui vous avez raison ... je ne parvenais pas à voir les conventions de dénomination des points de vue. – user763539

+0

Je suis content que vous l'ayez réglé. – MartynA