Thread et application.createform

bundyboss Messages postés 28 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 3 mars 2005 - 11 févr. 2005 à 12:57
bundyboss Messages postés 28 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 3 mars 2005 - 12 févr. 2005 à 12:36
Salut,
je voudrai placer "application.createForm(Form1, Form1)" dans un thread mais j'arrive pas.
Je ne peux rien placer non plus dans les uses?
Aider moi s'il vous plait!

2 réponses

cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
12 févr. 2005 à 11:40
Type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;


Type
TMonThread = class(TThread)
Procedure MakeForm;
Procedure Execute;
end;

var
Th : TmonThread;
Form1: TForm1;
F2 : Tform1;

implementation


{$R *.dfm}

Procedure TMonThread.MakeForm;
begin
application.createForm(TForm1,F2)

end;

Procedure TMonThread.Execute;
begin
Synchronize(MakeForm);
end;

Procedure TForm1.Button1Click(Sender: TObject);
begin
Th:=TMonThtread.Create(True)
Th.FreeOnTeminate:=True;
Th.Resume;
end;

Bon Coding ....

ManChesTer.
0
bundyboss Messages postés 28 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 3 mars 2005
12 févr. 2005 à 12:36
Merci de cette reponse mais j'ai tout de meme un soucis!
J'ai placé un bouton sur ma Form principale, ce bouton(sera placé ensuite dans le createForm de la form principale) contient en tout point le meme code que toi!
Mes changements sont:

var
Th : TmonThread; //pareil
Form1: TForm1; //Pareil enfin F_Princ : TF_Princ
F2 : Tform1; // ici je met F_Imprime : TF_Imprime (dans le uses au dessus je place bien unit2. Unit2 est F_Imprime)

Procedure TMonThread.MakeForm;
begin
application.createForm(TForm1,F2)

//je met application.createForm(TF_Imprime, F_Imprime);
end;

Alors le message d'erreur que j'obtiens est: Project Project1.exe raised execption class EAbrasctError with message 'Abstract Error' . Process stopped.

Dans les warning j'ai : Method 'Execute' hides virtual method or base type 'Thread'.

J'ai placé des showmessage dans les procedures MakeForm et Execute afin de voir si j'allai dedans et non.

Sinon au debut avant de venir sur le forum je me suis aidé du bouquin Delphi6 de campusPress (je suis sous Delphi3.0) et eux mettent:
th := TThreadcreate(false);

et dans la procedure execute, le Freeonterminate := true; la j'imagine que c'est la meme chose qu'on le place ici ou non mais c'est pour savoir si il y a une autre raison que le choix du programmeur.
Merci encore
0
Rejoignez-nous