Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Klasör İçindeki Resimleri Gösterme
#1
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.
Cevapla
#2
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
Cevapla
#3
@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
Cevapla
#4
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
Cevapla
#5
@frmman Çok Teşekkür Ederim.

İşimi Gördü.

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


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Edit içindeki tarihin doğru olup olmadığını kontrol etmek? hasansavci 2 387 17-10-2023, Saat: 03:35
Son Yorum: mcuyan
  delphi7 de timer sayma suresini labelde gosterme sadikacar60 2 528 11-04-2023, Saat: 23:55
Son Yorum: delphi.developer
  Tanımladığım record içindeki alanlardan biri ile ilgili sorun Bay_Y 2 566 07-03-2023, Saat: 12:03
Son Yorum: Bay_Y
  Arapça Yazı Gösterme baloglurecep 9 4.591 28-02-2023, Saat: 16:31
Son Yorum: themerdogan
  DbGrid içindeki tarih verisine 1 yıl eklemek neriamelih 2 744 25-12-2022, Saat: 17:54
Son Yorum: enigma



Konuyu Okuyanlar: 1 Ziyaretçi