Solved

Create tImages Dynamicly at runtime.

Posted on 2009-05-10
8
398 Views
Last Modified: 2012-05-06
I need to point (browse) for a folder of images and for example there are 16 jpegs in the folder then i need to populate my Page Control "TabSheet10" with a timage for each jpg (ie. 16 Timages) . I just need a thumbnail view and if i double click on an image it will open the actual picture.jpg with the defalt windows viewer.
This needs to be dynamics so if the are 5 jpeg then 5 Timages will be created on the tabsheet 10.
This information needs to be saved and loaded each time the application is run.
I have no ideal where to start on this and do not want to waste time going in the wronge direction.
I need example code for this.
0
Comment
Question by:Grant Fullen
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 13

Accepted Solution

by:
ThievingSix earned 500 total points
ID: 24349702


function CreateTImage(Name: String; Parent: TWinControl; Top, Left, Width, Height: Integer): TImage;
begin
  Result := TImage.Create(Parent);
  Result.Parent := Parent;
  Result.Top := Top;
  Result.Left := Left;
  Result.Width := Width;
  Result.Height := Height;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
  MyImage : TImage;
begin
  MyImage := CreateTImage('Image1',Form1,0,0,100,100);
  MyImage.Picture.LoadFromFile('C:\Users\Administrator\Desktop\Launcher Creator\Tool Icons\BITMAP\TImage32.bmp');
end;

Open in new window

0
 
LVL 13

Expert Comment

by:ThievingSix
ID: 24349704
Make sure you have ExtCtrls in your uses.
0
 

Author Comment

by:Grant Fullen
ID: 24349880
I tried your code and it only loads 1 bmp. I need to load all .jpg in a folder into seperate timages.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:Grant Fullen
ID: 24349928
I was looking at TJvThumbnail component it supports .jpg this would be better to use than a timage .
0
 
LVL 5

Expert Comment

by:xr1140
ID: 24350068
you have to loop the code ThievingSix provided for every image in your folder
0
 
LVL 13

Expert Comment

by:ThievingSix
ID: 24350229
And if you wish to use a jpg look here: http://www.thecodecave.com/treating-a-timages-loaded-jpeg-as-a-bitmap-in-delphi/

And as xr1140 says you will need to call CreateTImage for every image in the folder. If you need an example of this look here: http://delphi.about.com/od/vclusing/a/findfile.htm
0
 

Expert Comment

by:Zozze
ID: 24380140
You might wanna use an array of TImages for this purpose

for instance:


const maxpic = 1024;
var
form1: Tform1;
myArr: Array[0..maxpic] of TImage;
 
Procedure loadimages(Pictures:Tstringlist)
var
I:Integer;
Begin
for i = 0 to SizeOf(myArr) do myArr[I].free;// first free any previous instances 
ZeroMemory(@MyArr,SizeOf(MyArr)); // Zero the array;
 
// loop trough the Pictures Tstringlist which will contain filepath of picture
for i = 0 to pictures.count-1 do
begin
//now use the function provided by thievingsix
 MyArr[I] := CreateTImage('Image1',Form1,0,0,100,100); // set the X:Y values after desired position
  MyArr[I].Picture.LoadFromFile(Pictures.strings[0]);
end;
end;
end;
 
 
Hope this was helpfull.

Open in new window

0
 

Author Comment

by:Grant Fullen
ID: 24542786
Have not got to try this stuff yet but will soon.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
There's a multitude of different network monitoring solutions out there, and you're probably wondering what makes NetCrunch so special. It's completely agentless, but does let you create an agent, if you desire. It offers powerful scalability …
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…

696 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question