Solved

how to count the order of a image list?

Posted on 2013-11-25
4
364 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
Comment
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

by:
Sinisa Vuk earned 500 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;

Open in new window

0
 
LVL 1

Author Comment

by:hidrau
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

by:hidrau
ID: 39679338
Your code is ok.
0
 
LVL 1

Author Closing Comment

by:hidrau
ID: 39679438
Thanks very much Sinisav.

God always bless you :)
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

Suggested Solutions

Title # Comments Views Activity
Working with hours 3 89
control image tags in a string ? 12 171
tvirtualstringtree freeze when load too manny images 10 94
Tidtcpserver listening on multiports? 1 56
Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

752 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