[Delphi] Tworzenie formy dynamicznie + wątek, jak w nim odwołać do tej formy ?

0

Witam,
tworzę sobię formę w głównym wątku aplikacji a następnie wątek z którego progress chciałbym wyświetlać w tej właśnie utworzonej formie. Co przekazać do tego wątku bym mógł się później wygodnie odwoływać z niego do komponentów położonych na tej formie? Wątków i form może być kilka.

Miłego dnia :)

0

formę/progresbar/komponenty, które Cię interesują. Poczytaj o synchronize

0

Rzecz jasna potrafię się posługiwać synchronize(). Chodzi mi raczej o to czy można sobię wywołać dowolną ilość razy taką procedurkę np.

 
Procedure TForm1.CreateFT(pr1, pr2:string);
var
   AbcThr:TAbcThr;
   AbcFrm:TAbcForm;
begin
  AbcFrm:=TAbcForm.Create(Application);
  AbcThr:=TAbcThr.Create(pr1,pr2);
end;

Tak, żeby nie zgubić tej formy i ją zwolnić przed zakończeniem wątku. Czy może muszę użyć globalnej tablicy z tymi TAbcFrm i przekazywać do wątku numerek formy ?

0

ale tu wskaźnik do nowego obiektu TAbcForm tracisz zaraz po wyjściu z tej metody. A na Twoje pytanie nie da się prosto odpowiedzieć - wszystko zależy od tego co chcesz zrobić.
BTW przecież tu wątek nie ma nic wspólnego z formą

0

Podałem tylko przykład jak chcę ją tworzyć i myślałem, że uzyskam informację co jeszcze przekazać w create, by później własnie było się jak odwołać do niej z tego wątku.

Wskaźnik tracę po wyjściu z tej metody? może i tak, ale forma jest dalej widoczna czyli gdzieś tam w pamięci się znajduje, więc myślałem że dałoby się jakoś do niej odwołać z wątku, nie bawiąc się w tablicowanie tych form i dbanie o indeksy. Tak na skróty chciałbym. ;)

0

ale ten przykład kompletnie nic nie mówi. Co to jest to pr1 i pr2? Na przykład to ci mogę powiedzieć żebyś przekazał do wątku to co w nim potrzebujesz. Dodatkowo jak chcesz się tak bawić to musisz zadbać jeszcze o to, że jak ktoś ci zamknie formę to wątek musi o tym wiedzieć a nie próbować zmienić czegoś na nieistniejącym już obiekcie.
Napisz co konkretnie chcesz zrobić i daj konkretny kod to dostaniesz konkretną odpowiedź

0

Nie wiem co konkretniej mogę podać. Tutaj jest nieistotne co ma robić program, ale ok wytłumaczę dokładniej.

 
type
  TAbcFrm = class(TForm)
    Panel1: TPanel;
    Lbl1: TLabel;
    ProgressBar: TGauge;
    StatusLbl: TLabel;
    WorkLbl: TLabel;
  private
    
  public
    
  end;

Mam taką oto formę, która to niczym się nie będzie zajmowała prócz wyświetlaniem postępu pracy. Wątek zajmuje się przerabianiem obrazu iso według pewnego schematu. Jako parametry do niego przekazuję ścieżkę wejściową i wyjściową tego iso. Chciałbym by można było przrerabiać kilka obrazów w jednej chwili. To tyle z całości. Jednak jeśli nie warto się męczyć z szukaniem innego rozwiązania to utworze sobię tablicę globalną i w niej będę umieszczał zmienne z tą formą, a do watku będę przekazywał jedynie numerek zmiennej. ;)

0

no to przekaz do watku ProgressBar i koniec.

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