Eigene Chart Komponente



  • ich habe mir eine eigene chart komponente geschaffen .. naja bin noch dabei 😃

    allgemein funktioniert auch erstmal alles, nur ist das ganze ein TImage worauf ich das mache. mein problem nun ist, das ich mehrere charts(images) per TAB durchgehen möchte. die eigenschaft TabOrder und TabStop ist ja nun schnell hinzugefügt aber wie frag ich in meiner Paint() funktion ab, ob die komponente nun grad den fokus besitzt. dann nämlich wollte ich diverse dinge anders darstellen. 😕



  • Von TGraphicControl abgeleitete Controls können nicht den Fokus bekommen, so auch TImage. Insofern müsstest du das ohnehin simulieren, z.B. indem du die Images jeweils auf ein Panel packst.
    Und dann benutzt du halt die Focused()-Methode der Panels.



  • ok habs umgeändert und nun geht es (wohin auch immer 😃 )

    jetzt nen weiteres Problem 🤡

    Ich möchte auf die TForm eine TImageList ablegen, welche verschiedene Chart Hintergründe beinhaltet (einmal standard und einmal wenn Maus drüber ist)
    und nun in meiner Komponente per "ImageList" im Objekteigenschaften die TImageList auswählen können und nun rausbekommen wieviel Bilder dort enthalten sind und diese bearbeiten können, um sie ja transparent zu setzen (wobei ich noch rausbekommen muss wie man Transparentz am effektivsten macht. Beispiele habe ich und weiss wie das "System" ist .. nur haben die meisten Beispiele nen Hinweis das es a) nicht optimal ist oder b) nur ne Beta 🙄 )

    Würde mich freuen wenn mir einer da helfen kann und sagen wie ich ImageList einbauen muss und wie der Zugriff auf TImageList dann funktioniert.

    Meine Oberklasse ist TCustomControl.



  • eventuell kann einer bei code helfen (p.s. das delphi code)

    private
    FImageList: TImageList;
    FChangeLink: TChangeLink;
    published
    property ImageList:TImageList read FImageList write SetImageList;

    procedure TColosImageButton.SetImageList(Value:TImageList);
    begin
    if FImageList<>nil then
    FImageList.UnRegisterChanges(FChangeLink);
    FImageList:=Value;
    if FImageList<>nil then
    begin
    FImageList.RegisterChanges(FChangeLink);
    FImageList.FreeNotification(Self);
    end;
    end;

    wenn ich jetzt aber im Objektinspektor die TImageList auf der Form auswähle meldet sich ein Speicherfehler 😕


Anmelden zum Antworten