davidmarli | Bonjour,
j'ai un soft qui affiche une fenêtre de LOG pdt 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'éxécute la commande).
Le problème c'est que cette commande est longue à traiter (5 à 15 minutes).
Pdt ce temps, le memo de la fenêtre n'est pas accessible (je ne peux pas copie rle 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 !
Citation :
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.
|
et dans mon prog :
Citation :
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);
.....
|
Je vois bien la fenêtre apparaître, mais pas le texte !!!!
Merci pour votre aide. |