dynamiczne tworzenie komponentu w wątku

0

Jak stworzyć w osobnym wątku komponent tak, żeby nie znikał po zakończeniu wątku? Wiem, że wątek musi nakazać głównemu programowi stworzenie komponentu, żeby funkcjonował on niezależnie od wątku, ale nie wiem jak to zrobić. Z góry dziękuję za odpowiedzi.

0
komponent := TTypKomponentu.Create(NazwaFormy);
NazwaFormy.InsertControl(komponent);
0

Wątek tworzę poleceniem CreateThread (to z winapi). W nim napisałem to, co kazałeś i zaraz potem sleep(1000). Po sekundzie komponent jednak znika. Byłem przekonany, że to zadziała, bo brzmi rozsądnie, a tu taki numer. Jakieś pomysły?

0

hmmm. Jak się robi za pomocą typu TThread to wszystko jest ok, bo sprawdzałem. Pokaż może kod procedury i tworzenia wątku. może tam jest coś nie tak.

//dopisane
teraz jeszcze zprawdziłem za pomocą CreateThread() i wyszstko działa, musisz pokazać kod :-/

0

var
Form1: TForm1;
ListBox: TListBox;

implementation

{$R *.dfm}

function ThreadFunc(P: Pointer): Integer; stdcall;
begin
ListBox := TListBox.Create(Form1);
Form1.InsertControl(ListBox);
Sleep(1000);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ID: DWord;
begin
CreateThread(nil, 0, @ThreadFunc, nil, 0, ID);
end;

0

problem rozwiązany: po prostu trzeba użyć klasy TThread i wywołać w niej metodę która będzie tworzyłą ListBoxa (oczywiście przez Synchronize() inaczej nic z tego :) )</delphi>

0

WIELKIE dzięki!!!

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