Witam.
Pisząc programik napotkałem problem, którego nie wiem jak rozwiązać. W moim programie jest wątek. Jest on umieszczony w dynamicznej formie i podczas próby wykonania kodu w wątku jest błąd w linii w której wątek próbuje dodać coś do komponentu właśnie na dynamicznie tworzonej formie. Może ktoś z Was wcześniej spotkał się z tym problemem i wie co z nim zrobić. Tak dla porządku to jest ta linia w moim programie, w której jest błąd:
Browser.TreeView1.Items.Add( nil , Browser.Temat(m[0]));
A oto cały kod funkcji do wykonania w wątku:
procedure TSort.Execute;
var
sl, sl2: TStringList;
IloscWpisow: Integer;
M: TMatch;
i: Integer;
begin
FreeOnTerminate:= True;
sl:= TStringList.Create;
try
sl.LoadFromFile(ExtractFilePath(Application.ExeName)+Form1.ZalogowanyUzytkownik+'.pam3');
m:= EReg(sl.Text, '<I>|</I>');
IloscWpisow:= StrtoInt(M[0]);
sl2:= TStringlist.Create;
for i:=0 to iloscWpisow-1 do
begin
m[0]:='';
m:= EReg(sl.Text, '<WPIS'+ IntToStr(i)+'>|</W' + IntTOStr(i) + '>');
sl2.Text:= m[0];
m:= Ereg(sl2.Text, '<TEMAT>|</T>');
Browser.TreeView1.Items.Add( nil , Browser.Temat(m[0])); // <- Błąd
Browser.TreeView1.Items.Item[Browser.TreeView1.Items.Count-1].StateIndex:=i; // <- możliwe, że tu też jest błąd
end;
Browser.Statusbar1.Panels[0].Width:= Browser.StatusBar1.Canvas.TextWidth('Ilość wpisów: ' + IntToStr(IloscWpisow))+15; // <- możliwe, że tu też jest błąd
Browser.StatusBar1.Panels[0].Text:= 'Ilość wpisów: ' + IntToStr(IloscWpisow); // <- możliwe, że tu też jest błąd
finally
sl.Free;
end;
end;
Za wszelką pomoc dziękuję [soczek] </delphi>