Delphi Can

Orjinalini görmek için tıklayınız: Klasör İçindeki Resimleri Gösterme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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.
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
@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
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
@frmman Çok Teşekkür Ederim.

İşimi Gördü.

Elinize Sağlık
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