2016-05-30 8 views
0

Ich mache eine Komponente in Delphi 10 Seattle. Meine Komponente ist ein Panel enthält ein TDBGrid (von TCustomDBGrid) und ein TEdit Controls. Wenn ich meine Komponente in Form bringen, ist alles in Ordnung, wenn ich Rasterspalten nicht ändere. , aber wenn ich beschränkte DBGrid-Spalten geändert hat, tritt ein Fehler bei der Laufzeit mit Meldung auf: "Fehler beim Lesen von TColumn.MyGrid.Expanded: Die Eigenschaft MyGrid.Expanded existiert nicht. ..." Für den gefundenen Fehler habe ich das Formular als Text geöffnet Siehe diese Codes:Gebundenes DBGrid an benutzerdefinierte Komponente

MyGrid.Columns = < 
    item 
    MyGrid.Expanded = False 
    MyGrid.FieldName = 'Sid' 
    MyGrid.Visible = True 
    end 
    item 
    MyGrid.Expanded = False 
    MyGrid.FieldName = 'UserName' 
    MyGrid.Visible = True 
    end> 
FilterDataSource = DataSource1 

So funktionierte meine Komponente nicht richtig.

+0

Nun, deklariert Ihr TMyGrid eine Expanded-Eigenschaft, und ist es korrekt gestreamt, wenn es in einem Formular verwendet wird? Gleiches q für Ihren FieldName - TCustomDBGrid hat keine FieldName-Eigenschaft, als ich das letzte Mal geschaut habe ... – MartynA

+0

Mein Dataset ist eine Tabelle mit einigen Feldern. Ich muss nur 2 Felder im Raster, also in Spalten-Eigenschaft (in MyGrid), ich füge diese Felder. –

+0

Nun, Sie denken vielleicht, dass Sie die Dinge richtig gemacht haben, aber offensichtlich denkt Delphi anders. Sie sollten darauf achten, was die Fehlermeldungen Ihnen zu sagen versuchen, insbesondere "Property MyGrid.Expanded do [e] s not exist". "Mein Dataset ist eine Tabelle mit einigen Feldern." - Ist Ihrem benutzerdefinierten Grid jedoch bewusst, dass das Dataset, mit dem es verbunden ist, nur von diesem Typ sein kann? – MartynA

Antwort

0

Ich schrieb meine eigene Komponente, die ein TDBGrid in ein TPanel einbettet, und ein Projekt, um es zu testen. Ich habe den gleichen Fehler wie Sie, als ich versuchte, mein Projekt neu zu laden, als das Gitter TColumns enthielt.

Also gab ich meine eigenen q hier

How to correctly stream a TCollection property of a subcomponent, e.g. the Columns property of an embedded TDBGrid

und bekam eine Antwort von Delphi MVP Uwe Raabe im Grunde sagte, dass die Ursache ein Problem in dem Streaming-Code von TDBGridColumns VCL ist und was darauf hindeutet, dass ich Datei ein Problembericht des EMBA-Qualitätsportals. SO, ich denke nicht, dass es viel gibt, was über das Problem getan werden kann, bis EMBA es repariert.