I have made this application where theres a tlistview whit image destinations in it.

Then i got a timer to shift the picture.

then ive addet a random function to shuffle through the picture.

now what i want to happen is that the same picture dont get shown twice.

So what i tried was to put the number of the picture in another tlistview and make a "While do" to check if randomly generated number is shown in the list.

this is the code ive tried using.

randomnr := random(listview1.Items.Count -1);

x := 0;

While x<listview2.Items.Count - 1 do
begin
if listview2.Items[x].Caption = inttostr(randomnr) then
begin
randomnr := random(listview1.Items.Count -1);
x := 0;
end;
x := x +1;
end;

item := listview1.Items[randomnr];
form2.image1.Picture.LoadFromFile(item.Caption);

listview2.Items.Add.Caption := inttostr(randomnr);

This is how the form looks like
[IMG]http://img.photobucket.com/albums/v291/Rambus666/Programmering/MultipleFilesDialog.jpg[/IMG]

All help is apreciatet :)

Best regards,
Darkyere

Recommended Answers

All 2 Replies

While x<listview2.Items.Count - 1 do
begin
if listview2.Items[x].Caption = inttostr(randomnr) then
begin
randomnr := random(listview1.Items.Count -1);
x := 0;
end;
x := x +1;
end;

item := listview1.Items[randomnr];
form2.image1.Picture.LoadFromFile(item.Caption);

listview2.Items.Add.Caption := inttostr(randomnr);

You might want to skip the while loop and try:
If listview2.findcaption (1,inttostr(randomnr)), false, true, true)=nil Then //no match found


ALso check the parameters to see if they are correct

I found a solution elsewhere my code now looks like:
for n:=1 to ListView1.Items.Count do begin
randomnr := random(listview1.Items.Count -1);

if checkbox3.Checked = true then
begin

x := 0;

While x<listview2.Items.Count - 1 do begin
if inttostr(randomnr) = listview2.Items[x].Caption then
begin
randomnr := random(listview1.Items.Count -1);
x := 0;
end
else x := x +1;
end;
end;

item := listview1.Items[randomnr];
form2.image1.Picture.LoadFromFile(item.Caption);

listview2.Items.Add.Caption := inttostr(randomnr);

if listview1.Items.Count -1 = listview2.Items.Count -1 then listview2.Clear;

end;

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.