Announcement

Collapse
No announcement yet.

Probleme mit "durchgereichter" Eigenschaft

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit "durchgereichter" Eigenschaft

    Hi!<br>Ich bin mal wieder ratlos (einen Zustand, den Delphi leider oft hervorruft). Ich entwickle gerade eine zusammengesetze Komponente, die auf einem Panel ein TEdit und ein TDBGridPro enthält. Nun möchte ich Eigenschaften von DBGridPro "nach außen" legen. Für DataSource klappt das ganz wunderbar mit je einer Get- und Set-Methode, in der in auf das "Unterobjekt" zugreife. Also etwa so:<p>...GetDataSource...<br>
    result:= gp.Datasource;<br><p>...SetDataSource...<br>gp.Dat aSource:= Value;<p>Leider klappt das mit der Columns-Eigenschaft nicht so. Ich bekomme statt der drei Punkte "..." zum Starten des Column-Editors ein "+" vor der Eigenschaft. Woran könnte das liegen?<br>Ich bin für jeden Hinweis dankbar.<p>Thorsten

  • #2
    Hallo Torsten,
    wie hast Du die Eigenschaft in den deklariert?

    Property Columns: ???? READ ???? WRITE ???;

    Gruss Stefa

    Comment


    • #3
      Hi!<p>property Columns: TGridProColumns read GetColumns write SetColumns;<p>Übrigens stammt TGridProColumns von TPersistent ab und nicht von TCollection. Ist das der Grund?<br>Ich habe mittlerweile mal das GridPro durch DBGrid ersetzt. Da funktioniert das "Durchreichen" wunderbar. Ich kann das DBGrid aber wegen Fehlverhalten beim Neuzeichnen nicht verwenden.<p>Gruß, Thorste

      Comment


      • #4
        Nein, der Grund liegt am von Borland registrierten Property Editor für die Klassen vom Typ TColumns/TDBGridColumns. Dieser ist AUSSCHLIESSLICH für das TDBGrid bzw. TCustomDBGrid registriert.
        D.h. für Deine Componente und deren TColumns existiert KEINE registrierter Eigenschaftseditor, deshalb wird der nächstbeste genommenen und das ist der TClassPropertyEditor, die Mutter aller klassenbasierenden Editoren.

        Nun könnte man denken: <br>
        "Da nehme ich einfach den TDBGridColumnsEditor und registriere ihn für meine Klasse/Componente".<br>

        Aber falsch gedacht, da der von Borland gecodete Editor AUSSCHLIESSLICH nur mit dem TDBGrid arbeitet. D.h. die Componnete die die Eigenschaft TDBColumns definiert/enthält MUSS ein TCustomDBGrid sein.

        Gruß Hage

        Comment


        • #5
          Hi!<p>Folgende Situation: ich kann das TDBGridPro auf ein Formular ziehen und bekomme im Columns-Property rechts drei Pünktchen angezeigt. Wenn ich draufklicke, bekomme ich einen Editor für die Spalten (sieht etwas anders aus als der von DBGrid).<br>Wenn ich nun das DBGridPro als Unterkomponente zur Laufzeit instanziere (parent ist das Panel) und das property "durchreiche", dann bekomme ich diesen Editor nicht zu Gesicht. Ich finde das seltsam.<p>DBGridPro stammt übrigens nicht von CustomDBGrid ab, sondern ist ein von Grund auf neu entwickeltes Grid. Tut wohl aber nichts zur Sache<p>Gruß, Thorste

          Comment


          • #6
            Hi

            Das Problem und die Lösung bleiben trotzdem gleich. Nun könnte es aber sein das die Implementierung dieses Column-Editors besser gelösst wurde als der originale Borland Editor, d.h. das dieser Editor UNABHÄNGIG vom Grid bzw. Owner der Eigenschaft arbeitet.<br>

            Einfach mal probieren. Öffne das Designtime Package dieses Grids, also dort wo RegisterComponents('xyz', [TDBGridPro]) drinnen steht. Dort sollte auch RegisterPropertyEditor(TDBGridPro, TDBgridProColumnsEditor, ....) stehen. Ersetze nun das TDBGridPro durch die Klasse Deiner Komponente.

            Gruß Hage

            Comment

            Working...
            X