Bonjour à tous,
Je rencontre actuellement un problème avec un logiciel que j'ai développé en Delphi. Tout fonctionnait parfaitement jusqu'à ce que je duplique un fichier plusieurs fois (création de 3 autres fiches similaires pour mettre en place une fonctionnalité de vente en attente). Depuis cette duplication, plusieurs problèmes sont apparus :
Lorsque je clique sur le bouton "Imprimer", le logiciel plante.
Certains boutons ne fonctionnent plus correctement. Certains semblent désactivés alors qu'ils devraient être cliquables.
Je soupçonne que le problème de plantage lors de l'impression est lié à une performance réduite, car l'affichage de l'aperçu d'impression prend énormément de temps.
Voici un extrait du code du bouton "Imprimer" :
pour les autres 3 fiches c'est le même code il suffit juste de remplacer :
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
46 procedure TF_Ventes1.Label57Click(Sender: TObject); var Spath1:string; begin Fticket:=TFticket.Create(application); Fticket.QRLabel2.Caption:=datetostr(DTPick1.DateTime); Fticket.QRLabel4.Caption:=edit2.Text; Fticket.QRLabel7.Caption:= formatfloat(',0.00',strtofloat(edit5.Text)); Fticket.QRemise.Caption:= formatfloat(',0.00',strtofloat(edit17.Text)); // times heure : minutes edit15.text:=FormatDateTime('hh:nn', Now) ; Fticket.QRLabel99.Caption := edit15.Text; //USER Fticket.QRUSER.Caption:=EditUser.text; Fticket.QRLabelNBR.Caption:=LabelQtite.Caption; Fticket.QRLabelTOT.Caption:=LabelNBR.caption; /// CLEAR HER //if PrintDialog1.Execute then //begin with F_DM.T_Info do // Récupération du nom du fichier if Fieldbyname('inv1').AsString<>'' then begin sPath1 := ExtractFilePath(Application.ExeName) + Fieldbyname('inv1').AsString; TBlobField(FieldByName('inv1')).SaveToFile(sPath1); Fticket.QR1.Picture.LoadFromFile(sPath1+'.jpg'); end; //end; Fticket.QRep1.PrinterSettings.PrinterIndex := printer.Printers.IndexOf(F_DM.AT_PRINTER.fieldbyname('NOM_S').AsString); //Fticket.QRep1.Preview; Fticket.QRep1.print; // comment on test Fticket.Free end;
Fticket (TF_Ventes1) par Fticket01 (TF_Ventes2), Fticke02 (TF_Ventes3), Fticket03 (TF_Ventes4)
De plus, j'observe une utilisation de mémoire beaucoup plus importante par rapport à la version précédente du logiciel. Le processeur est également sollicité à hauteur de 32%.
'apprécierais grandement si vous pouviez me fournir des recommandations sur la façon de résoudre ce problème de performance et de restaurer les fonctionnalités correctes de mon logiciel. Je suis ouvert à toute suggestion concernant l'optimisation du code, la gestion des données ou toute autre solution qui pourrait aider à résoudre ce problème.
Je reste à disposition pour toute demande d'information supplémentaire qui pourrait clarifier davantage ma demande.
Merci d'avance pour votre aide précieuse.
Partager