Bonjour,

j'ai un gros probleme, a chaque fois que j'utilise un savedialog, opendialog, ou meme la fonction qui permet de faire un sreenshot de mon application, en fait tout ce qui écrit en dehors de l'application me donne pas mal de probleme notamment lorsque je veux afficher une image externe au programme (dans un dossier a part), ou bien lorsque je veux a nouveau utiliser une opendialog pour lire ce qu'il y a dans mon fichire! je ne sais pas du tout d'ou ça viens, a la limite voici les codes :

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
/////////////PROCEDURE POUR OUVRIR/////////////////
procedure TForm1.Ouvrir1Click(Sender: TObject);
Var i:Integer;
    F:TextFile;
    lig:string;
begin
  //Charger.FileName := Sauver.FileName;
 
  If Not Charger.Execute Then Exit;
 
  try
    AssignFile(F,Charger.FileName); //on assigne a F le fichier ouvert
    Memo1.Clear;          //on vide le memo
    Form1:= TForm1.Create(Self);
    For i:=Form1.ComponentCount-1 DownTo 0 Do
      begin
           Form1.Components[i].Free;
      end;
      StatusBar1.Panels.Items[0].Text := tab[5] + Charger.FileName;
 
      reset(F); // on va au debut  du fichier
      while not eof(F) do
      begin //cette boucle répètera la lecture d'une ligne tant que nous n'aurons pas atteint la fin du document EOF
        readln(F,lig);//à chaque fois que l'on utilisera readln on passera à la ligne suivante.
        Memo1.lines.add(lig); // ajoute notre ligne au memo
      end;
      closefile(F);//cette procédure ferme notre fichier F
 
      ShowMessage(Memo1.Text);
 
  except
    on E: Exception do
      ShowMessageFmt('%s : à la lecture de %s', [E.Message, Charger.FileName]);
  end;
end;
/////////////FIN PROCEDURE POUR OUVRIR/////////////////
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
47
48
49
50
51
52
53
54
55
56
/////////////PROCEDURE POUR ENREGISTRER SOUS/////////////////
procedure TForm1.Sauvegardersous1Click(Sender: TObject);   //enregistrer sous
begin
     Sauver.Execute;
     if(Sauver.FileName <> '') then
     begin
          sauvegardersous(Sauver.FileName);
          StatusBar1.Panels.Items[0].Text := tab[4] + Sauver.FileName;
     end;
 
end;
/////////////FIN PROCEDURE POUR ENREGISTRER SOUS/////////////////
 
/////////////PROCEDURE DE SAUVEGARDE/////////////////
procedure TForm1.Sauvegarder1Click(Sender: TObject);
begin
     if sauvegarder = true then
        begin
             sauvegardersous(nom_fichier);
        end
     else
         Sauver.Execute;
     if Sauver.FileName <> '' then
        begin
             StatusBar1.Panels.Items[0].Text := tab[4] + Sauver.FileName;
             sauvegardersous(Sauver.FileName);
        end
end;
/////////////FIN PROCEDURE DE SAUVEGARDE/////////////////
 
////////////ENREGISTRER SOUS//////////////
procedure sauvegardersous(where_file: string);
var
   i : Integer;
   my_file : Textfile;
begin
     nom_fichier := where_file;
     AssignFile(my_file,where_file);
     ReWrite(my_file);
     sauvegarder := true;
     For i:=0 To Form1.ComponentCount-1 Do
         begin
 
           If Form1.Components[i] Is TImage Then
              begin
                   Write(my_file,'#'+Form1.Components[i].Name);
                   Write(my_file,'#'+IntToStr(TImage(Form1.Components[i]).Left)+'#'+IntToStr(TImage(Form1.Components[i]).Top));
              end
           else
               Write(my_file,'['+Form1.Components[i].Name+']');
 
           Writeln(my_file,'');
         end;
     CloseFile(my_file);
end;
////////////FIN ENREGISTRER SOUS///////////
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
/////////////PROCEDURE POUR CREER IMAGE DU RESEAU/////////////////
procedure TForm1.Imprimer1Click(Sender: TObject);
begin
  ImageBureau.Bitmap.Width := Form1.Width-(ListBox1.Width+6);//la largeur du BitMap sera la même que celle de l'écran
  ImageBureau.Bitmap.Height := Form1.Height-(StatusBar1.Height+47);// idem pour la hauteur
  BitBlt(ImageBureau.Bitmap.Canvas.Handle,0,0,Form1.Width-(ListBox1.Width),Form1.Height-(StatusBar1.Height+1),
          GetDC(GetDesktopWindow),Form1.Left+3,Form1.top+46,SrcCopy);//recopie l'image du desktop vers ImageBureau
 
  if ImpEc.Execute then
  begin
       ImageBureau.SaveToFile(ImpEc.FileName + '.bmp');
       StatusBar1.Panels.Items[0].Text := tab[6];
  end;
end;
/////////////FIN PROCEDURE POUR CREER IMAGE DU RESEAU/////////////////