Questions sur les Threads
Bon je comprends rien aux threads apparament,
Voilà mon code que j'utilise aujourd'hui qui me pause problème
La Gauge1 se mets bien à jour , mes composants se créer bien dans la FormPrincipal, mais mon StatusBar1.Panels[1].Text reste tout le temps à 0.
Pour le moment je fais cela dans OnTimer, j'ai essayé de voir comment faire avec un Thread, mais je ne c'est pas quoi mettre dans execute, quoi synchronizé etc..
De plus je crois qu'il ne faut pas utiliser de timer dans ce cas, alors où je mets l'execution de ma procedure.
Mon code dans un Form
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| procedure TFormProgressBar3.FormActivate(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TFormProgressBar3.FormCreate(Sender: TObject);
begin
NbRecord:= ModuleDeDonnee.ADO1.Recordset.RecordCount;
Timer1.Enabled := False;
end;
procedure TFormProgressBar3.Timer1Timer(Sender: TObject);
Var
i: Integer;
Panel: TPanel;
begin
with Gauge1 do Begin
MinValue:= 0;
MaxValue:= NbRecord;
Progress :=0;
end;
for i:= 0 to (NbRecord -1) do
Begin
Panel := TPanel.Create(FormPrincipal);
Panel.Name := 'PANEL' + ModuleDeDonnee.ADO1.Fields.Fields[31].AsString;
Panel.Caption := '';
Panel.Top := StrToInt(ModuleDeDonnee.ADO1.Fields.Fields[28].AsString);
Panel.left := StrToInt(ModuleDeDonnee.ADO1.Fields.Fields[25].AsString);
Panel.Height := StrToInt(ModuleDeDonnee.ADO1.Fields.Fields[22].AsString);
Panel.Color := StringToColor(ModuleDeDonnee.ADO1.Fields.Fields[20].AsString);
Panel.Width := StrToInt(ModuleDeDonnee.ADO1.Fields.Fields[30].AsString);
ModuleDeDonnee.ADO1.Next;
Gauge1.Progress := Gauge1.Progress + 1; <- ca se mets a jour
StatusBar1.Panels[1].Text := IntToStr(i); <- CA RESTE à 0
end;
ModuleDeDonnee.ADO1.Filtered := false;
ModuleDeDonnee.ADO1.close;
Self.Close;
end; |
Est-ce que quelqu'un peux m'aider à créer un Thread à partir de cela ?
Doit-je mettre :
- la création ds Panel dans le Threads,
- l'avancement de ma Gauge1
et également
- l'info de la StatusBar1.Panels[1].Text
franchement je vois pas. Merci de votre soutient