Bonjour,
j'ai un soft qui affiche une fenêtre de LOG pendant un long traitement (c'est juste une fiche dans laquelle se trouve un memo, j'ajoute une ligne au memo contenant la commande passée, puis j'exécute la commande).
Le problème c'est que cette commande est longue à traiter (5 à 15 minutes).
Pendant ce temps, le memo de la fenêtre n'est pas accessible (je ne peux pas copier le texte par exemple avec un clic droit).
J'ai donc regardé du côté des threads, mais franchement je n'y comprends rien.
Quelqu'un peut-il m'expliquer exactement comment faire ?
Peut-être puis-je me passer des threads ?
En tout cas voilà ce que j'ai fait !
Et dans mon prog :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
41
42
43
44
45 unit UnitThreadLOG; interface uses Classes,sysutils,unitlog; type LOG_Thread = class(TThread) private { Déclarations privées } FFormLOG:TFormLOG; protected procedure Execute; override; procedure OnTerminateProcedure(Sender: TObject); public constructor Create(Suspended : Boolean;s:string); end; implementation constructor LOG_THREAD.Create(Suspended: Boolean;s:string); begin FreeOnTerminate := True; inherited Create(Suspended); Formlog := TFormLog.Create(nil); FormLOG.Show; formlog.memo1.Lines.Add(s); OnTerminate := OnTerminateProcedure; end; { LOG_Thread } procedure LOG_THREAD.OnTerminateProcedure(Sender: TObject); begin //if Assigned(FORMLOG) then //FormLOG.Release; end; procedure LOG_Thread.Execute; begin { Placez le code du thread ici } // if Assigned(FormLOG) then end; end.
Je vois bien la fenêtre apparaître, mais pas le texte !!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Procedure TFormProgress.WTVtoTS(nfs, repdest, nomfic: string); var commande, s1: string; sizewtv, sizeTS: Int64; doscommand1: tdoscommand; i, longext: integer; f: textfile; var MyThread_2 : LOG_THREAD; begin commande := '"' + javapath + '" -cp "' + cheminappli + 'logiciels\remuxtool_1.2.4\remuxtool.jar" util.WtvToMpeg -i "' + nfs + '" -o "' + repdest + nomfic + '.ts" -all'; MyThread_2:=LOG_THREAD.Create(false,commande); .....
Merci pour votre aide.
Partager