Delphi Can
Klasör İçindeki Resimleri Gösterme - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Klasör İçindeki Resimleri Gösterme (/showthread.php?tid=7666)



Klasör İçindeki Resimleri Gösterme - sadoal351 - 29-03-2024

Merhabalar,

Bilgisayarda belirli klasörde müşteri resimler mevcuttur. ( Resim Yolu : C:\Resimler\MusteriKodu\....,.jpeg ) 
Her Müşterinin resim klasörü içinde resim sayıları farklılık gösteriyor. ( 3 - 5 - 10 - 15 adet ) 

Image1.Picture.LoadFromFile(Dosya Yolu); kodu ile tek tek resim gösterebiliyorum. 

Tek seferde klasör içinde kaç tane resim varsa ekranda göstermek istiyorum. 

Bunun için yardımcı olur musunuz.


Klasör İçindeki Resimleri Gösterme - frmman - 29-03-2024

Aşağıdaki örnek kullanımı için form üzerine bir adet buton ve panel nesnesi yerleştirin. Resimler panel içerisinde kareler şeklinde gösterilecektir.

Uses kısmına aşağıdakileri eklemeyi unutmayınız.

Uses
 Vcl.ExtCtrls,
 System.IOUtils,
 system.Types,
 Vcl.Imaging.jpeg;

Tüm Kodlar
unit Unit1;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
 Vcl.ExtCtrls,
 System.IOUtils,
 system.Types,
 Vcl.Imaging.jpeg;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Panel1: TPanel;
   procedure Button1Click(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 Files: TStringDynArray;
 i: Integer;
 Image: TImage;
 LeftPos, TopPos: Integer;
begin

//varsa daha önceki resimleri kaldır.
for i := Panel1.ControlCount - 1 downto 0 do  Panel1.Controls[i].Free;

 Files := TDirectory.GetFiles('C:\8\img\', '*.jpg');

 LeftPos := 10;
 TopPos := 10;

 for i := Low(Files) to High(Files) do
 begin
   Image := TImage.Create(Self);

   Image.Parent := Panel1;
   Image.Left := LeftPos;
   Image.Top := TopPos;
   Image.Width := 100;
   Image.Height := 100;
   Image.Picture.LoadFromFile(Files[i]);
   image.Stretch := true;
   image.Center := true;

   LeftPos := LeftPos + 110;
   if LeftPos + 100 > panel1.Width then
   begin
     LeftPos := 10;
     TopPos := TopPos + 110;
   end;
 end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var i:integer;
begin
for i := Panel1.ControlCount - 1 downto 0 do   Panel1.Controls[i].Free;
end;

end.

p6o753e.gif


Klasör İçindeki Resimleri Gösterme - sadoal351 - 29-03-2024

@frmman Teşekkürler İşimi Gördü.

Resim üzerine Çift Tıklama ile Resmi Büyütme imkanımız var mı? Kullanıcı Resmi detaylı görsün.

Şimdiden Teşekkürler


Klasör İçindeki Resimleri Gösterme - frmman - 30-03-2024

Aşağıdaki gibi bir düzenleme size yol gösterecektir. Form üstüme bir adet Timage nesnesi ilave edin ve ismini ImageBig olarak değiştirin.


unit Unit2;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,

System.IOUtils,
system.Types,
Vcl.Imaging.jpeg;

type
 TForm2 = class(TForm)
   Button1: TButton;
   Panel1: TPanel;
   ImageBig: TImage;
   procedure Button1Click(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   procedure OnimageDblClik(sender: TObject);
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

procedure Tform2.OnimageDblClik(sender : TObject);
begin
   if (sender is Timage) then
   ImageBig.Picture.Graphic := (sender as Timage).Picture.Graphic;

end;
procedure TForm2.Button1Click(Sender: TObject);
var
Files: TStringDynArray;
i: Integer;
Image: TImage;
LeftPos, TopPos: Integer;
begin

// büyük resim
ImageBig.Picture.Graphic := nil;
ImageBig.Center := true;
ImageBig.Proportional := true; // en boy oranını koru


//varsa daha önceki resimleri kaldır.
for i := Panel1.ControlCount - 1 downto 0 do  Panel1.Controls[i].Free;

Files := TDirectory.GetFiles('C:\8\img\', '*.jpg');

LeftPos := 10;
TopPos := 10;

for i := Low(Files) to High(Files) do
begin
  Image := TImage.Create(Self);

  Image.Parent := Panel1;
  Image.Left := LeftPos;
  Image.Top := TopPos;
  Image.Width := 100;
  Image.Height := 100;
  Image.Picture.LoadFromFile(Files[i]);
  Image.Proportional := true;    // en boy oranını koru
  Image.Center := true;

  Image.OnDblClick := OnimageDblClik;  // dblClick event

  LeftPos := LeftPos + 110;
  if LeftPos + 100 > panel1.Width then
  begin
    LeftPos := 10;
    TopPos := TopPos + 110;
  end;
end;
end;

procedure TForm2.FormDestroy(Sender: TObject);
var i:integer;
begin
 for i := Panel1.ControlCount - 1 downto 0 do   Panel1.Controls[i].Free;
end;

end.


nxmtj1m.gif


Klasör İçindeki Resimleri Gösterme - sadoal351 - 01-04-2024

@frmman Çok Teşekkür Ederim.

İşimi Gördü.

Elinize Sağlık


Klasör İçindeki Resimleri Gösterme - sadoal351 - 13-04-2024

Merhabalar,

Listelenen resimleri küçültüp büyütmek için ne yapabiliriz.
A4 Yazı boyutunda olduğu zaman büyütmek veya küçültmek gerekiyor.

iyi çalışmalar