Bonjour à tous,
Jje développe une application pour récupérer les extensions présentes sur l'ordinateur. Je souhaite récupérer chaque extension et son image. J'ai créé le code suivant pour la création dynamique sur TScrollBox :
Le résultat est correct : chaque image de fichier est affichée dans le ScrollBox. Voici maintenant la procédure que j'ai créé pour imprimer dans une boucle pour lire tous les composants TImages du ScrllBox parent :
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 ... with TImage.Create(Self) do begin Parent := ScrollBox; Name := 'IconeType' + IntToStr(Co); Top := PosTop; Left := PosLeftI + 60; Width := 40; Height := 40; AutoSize := True; Visible := True; //Recherche de l'image du fichier StrpCopy(Fichier, Prog); H := ExtractIcon(handle, Fichier, 0); Picture.Icon.ReleaseHandle; Picture.Icon.Handle := H; end; //TImage.Create(Self) do
Voici la procédure PrintBitmap :
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 var ... Zone : TRect; ... begin Try with Printer do begin BeginDoc; .... Zone := Rect(20, PosLigne, TImage(Components[i]).Picture.Bitmap.Width + 50 ,TImage(Components[i]).picture.Width + 50); PrintBitmap(Canvas, Zone, TImage(Components[i]).Picture.Bitmap); ... end; end;
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 {______________________________________________________________} procedure TForm1.PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap); var Header, Bits: Pointer; HeaderSize: DWORD; BitsSize: DWORD; begin GetDIBSizes(Bitmap.Handle, HeaderSize, BitsSize); Header := AllocMem(HeaderSize); Bits := AllocMem(BitsSize); Try GetDIB(Bitmap.Handle, Bitmap.Palette, Header^, Bits^); StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top, DestRect.Right, DestRect.Bottom, 0, 0, Bitmap.Width, Bitmap.Height, Bits, TBitmapInfo(Header^), DIB_RGB_COLORS, SRCCOPY); Finally FreeMem(Header, HeaderSize); FreeMem(Bits, BitsSize); end; end; Mai aucune image n'est imprimée, aves-vous une suggestion, une remarque pour m'aider ? Merci d'avance.
Partager