Announcement

Collapse
No announcement yet.

wie bekomme ich den parent

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

  • wie bekomme ich den parent

    Hallo,
    ich habe folgende Komponente erzeugt:

    Type

    TComboBoxtst = class(TCombobox)
    private
    protected
    Procedure HoleItems(items:TStrings);
    public
    constructor Create(AOwner: TComponent);override;
    destructor Destroy;override;
    end;

    implementation

    Procedure TComboBoxtst.HoleItems(items:TStrings);
    begin
    items.add('Test1');
    items.add('Test2');
    end;

    constructor TComboBoxtst.Create(AOwner: TComponent);
    begin
    inherited Create(AOwner);
    HoleItems(items);
    style:=csOwnerdrawFixed;
    width:=200;
    end;

    Destructor TComboboxtst.Destroy;
    begin
    inherited;
    end;

    Ich möchte also die Einträge beim Create setzen, eventuell noch Symbole im ONDRAWITEM dazu zeichen.
    Bein ADD in Holeitems wird aber wahrscheinlich onPaint aufgerufen und das benötigt einen Parent. Wenn ich den nicht habe, kommt : Element " hat kein übergeordnetes Fenster.

    Mit

    if AOwner is TWinControl then
    Self.Parent := TWinControl(AOwner)

    im Create bekomme ich aber immer nur TFORM als Parent.

    Bestimmt gibt es eine Lösung...
    Danke, Gruß Holger

  • #2
    Hi Holger,
    .
    Du setzt den Style auf csOwnerDrawFixed. Ich würde mal vermuten, der Fehler kommt davon. Hast Du das mal weggelassen (auskommentiert)? Was passiert dann?
    .
    Wenn Du Symbole einbeziehen willst, schau Dir mal die JediVCL an: http://homepages.borland.com/jedi/jvcl
    Das wär auf jeden Fall einfacher....
    .
    mfg
    Michae

    Comment


    • #3
      Es geht ganz schlicht im Create nicht. Verschiebe es in Loaded.
      Vergiss aber nicht das eine TComboBox seine Items im Loaded aus dem .dfm lesen will

      Comment


      • #4
        Hallo Robert,
        herzlichen Dank für Deine Info.
        Jetzt klappt es. Habe Loaded überschrieben und die Combobox entsprechend gefüllt.

        Was Du allerdings mit

        Vergiss aber nicht das eine TComboBox seine Items im Loaded aus dem .dfm lesen will.

        meintest weiß ich noch nicht.
        MfG
        Holge

        Comment


        • #5
          Hi Holger,
          .
          Du musst drauf achten, wann Du das "Inherited" setzt. Ich könnte mir vorstellen, dass es das ist, was Robert meinte?!?
          .
          mfg
          Michae

          Comment


          • #6
            Was ich meine ist das Items im Objektinspector der IDE auftaucht und dort vom Komponentenbenutzer vorbelegt sein kann. Loaded ist dafuer zustaendig das diese Vorbelegung eingelesen wird. Dazu ist das .dfm als Resource im EXE eingebettet. Ruft man nun im Loaded "inherited Loaded" auf so ist eine eventuelle Vorbelegung eingelesen und wenn man danach die eigene Vorbelegung reinquetschen will, so muss man das behandeln (beispielsweise loeschen)

            Comment


            • #7
              Ok, jetzt habe ich´es verstanden.
              Herzlichen dank nochmals für die Hilfe.
              Gruß Holge

              Comment

              Working...
              X