Dynamiczny komponent na dyn. komponencie

0

Mam pytanie wie ktoś jak stworzyć dynamiczny komponent na wczesniej stworzonym dynamicznym komponencie jeśli ten pierwszy znajduje się na ToolBar?

Mam coś takiego:

    for i:=1 to n do
        BEGIN
        with TSpeedButton.Create(ToolBar1) do begin

            Width:=41;
            Height:=33;
            Left:=8+(i-1)*48;
            Top:=8;
            Caption:='SB '+IntToStr(i);
            Parent:=ToolBar1;
            Visible:=True;
            Name:='SpeedButton'+IntToStr(i);
            OnClick:=KlikPrzycisku;
            end;

i chcę na nim stowrzyć dynamiczny komponent Label

with TLabel.Create(TSpeedButton(self.FindComponent('SpeedButton' + inttostr(i)))) do begin //**

            Left:=8+(i-1)*48;
            Top:=8;
            parent:=self;              //**
            Visible:=True; 
            Caption:='Etykieta';
            Visible:=True;
            OnClick:=KlikPrzycisku;
            end;

W liniach zaznaczonych ** jest błąd ponieważ nie odwołuje się do istniejacego juz komponentu najprawdopodobniej w parent. Robiłem próby z FindComponent('SpeedButton' + inttostr(i)) i przy każdej okazji dostawałem błąd Incompatible types: 'TWinControl' and 'TComponent'.
Jak odwołać sie do tego SpeedButton x stworzonego wcześniej żeby na nim utworzyć kolejny komponent?

Jeśłi w obu wypadkach zastosuje odwołanie się do self wowczas labele w ogóle sie nie pokazują, jeśli do ToolBar następuje przesunięcie komponentów niezależnie od ich parametru Left są po prostu umieszczane obok siebie a nie na sobie.

I kolejna sprawa jak zastosuje komponent TabbedNotebook i na nim będę chciał stworzyć dynamiczne komponenty np SpeedButton nawet jeśli się odwołam bezpośrednio do TabbedNotebook wówczas komponenty te 'chowają' się pod nim. Jak je wyciągnąć na wierzch?
Przykład poniżej:

        with TSpeedButton.Create(TabbedNotebook) do begin

            Width:=41;
            Height:=33;
            Left:=10;
            Top:=8;
            Caption:='SB1';
            Parent:=TabbedNotebook;
            Visible:=True;
            end;
0

Co do pierwszego to FindComponent powinien działać. Sprawdź czy nie zwraca ci nil'a (może jakaś literówka w nazwach). Zrzutuj to odpowiednio i już. Najlepiej zdeklaruj sobie zmienną takiego typu jakiego poszukujesz i podstaw do niej wynik FindComponent'a.

Co do drugiego, nie kojarze, ale czy ten komponent nie ma jakichś zakładek, jak pagecontrol ? Wtedy powinieneś kłaść komponenty na tych właśnie zakładkach. A tak w ogóle to dlaczego nie używasz TPageControl'a ?

0

Tak jest to komponent z zakładkami pewnie dlatego nie używałem PageControl że to już są komponenty z których nigdy nie korzystałem i na początku nastęczały mi trudności ale teraz masz race PageControl jest dużo lepszy jak będę miał chwilkę to przeniosę wszystko na niego myślę, że będzie mi się na nim lepiej pracowało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1