Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# how to count the order of a image list?

Posted on 2013-11-25
Medium Priority
370 Views
Last Modified: 2013-11-26
Hello guys

I have a panel with 7 images, with this panel I can exchange the images among them, but I need that all those images be in the order by picture.

For each image I gave a number in its tag from 1 to 7

How can I count all images that is in my panel and knows if they are in correct order from 1 to 7 and not different of these?

I attached an example with a panel with images.

This is a part of this thread

Thread with card and drag and drop

thanks
Alexandre
OrderCount.zip
0
Question by:hidrau
[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
• 3
4 Comments

LVL 27

Accepted Solution

Sinisa Vuk earned 2000 total points
ID: 39676865
I use simple sorting of image position (X) and after that check is order of index (Tag) is ok.

``````function TForm1.IsCorrectOrder(pnl: TPanel): Boolean;
var
i, j: Integer;
ar: array of TPoint;
pt: TPoint;
begin
//default - if found incorrect one then flag will be set to False
Result := True;
SetLength(ar, pnl.ControlCount);

for i := 0 to pnl.ControlCount-1 do
begin
ar[i].X := pnl.Controls[i].Left; //keep x pos
ar[i].Y := pnl.Controls[i].Tag;  //keep assoc. tag
end;

//try to sort array
for i := High(ar) downto Low(ar) do
begin
for j := Low(ar) to High(ar) - 1 do
begin
if ar[j].X > ar[j + 1].X then
begin
pt := ar[j];
ar[j] := ar[j + 1];
ar[j + 1] := pt;
end;
end;
end;

//check order - compare if first is lower than next
j := 0;
for i := Low(ar) to High(ar) do
begin
if (ar[i].Y < j) then
begin
Result := False;
Break;
end;
j := ar[i].Y; //keep this
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsCorrectOrder(Panel3) then
ShowMessage('ok')
else
ShowMessage('not ok');
end;
``````
0

LVL 1

Author Comment

ID: 39677208
Very interesting, I am gonna check that.

Once again, Thanks Sinisav for your help. Yesterday I was thinking about that and I didn't get any solution. What you told me, open my mind about. :)
0

LVL 1

Author Comment

ID: 39679338
Your code is ok.
0

LVL 1

Author Closing Comment

ID: 39679438
Thanks very much Sinisav.

God always bless you :)
0

## Featured Post

Question has a verified solution.

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

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…
###### Suggested Courses
Course of the Month11 days, 6 hours left to enroll

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

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