Wenn Du bei Deinem Ansatz bleiben willst, kannst Du damit vielleicht was anfangen,
das Memo1 als Liste und die Auflösung über Namen habe ich nur zum Demonstrieren verwendet, nimm lieber eine TList of Record dafür oder ähnliches ....
Delphi-Quellcode:
var
i,j:Integer;
r:Trect;
n1,n2:String;
begin
r.Left := 0;
r.Top := 0;
Memo1.Lines.Clear;
for I := 0 to Componentcount -1 do
if (Components[i] is TImage) and TImage(Components[i]).Visible then
begin
for j := 0 to Componentcount -1 do
if (Components[j] is TImage) and TImage(Components[j]).Visible and (Components[j]<>Components[i]) then
begin
INtersectRect(r,TImage(Components[i]).BoundsRect,TImage(Components[j]).BoundsRect);
if r.Left>0 then
begin
n1 := Components[i].Name + '_' + Components[j].Name;
n2 := Components[j].Name + '_' + Components[i].Name;
if (Memo1.Lines.IndexOf(n1)=-1) and (Memo1.Lines.IndexOf(n2)=-1)then Memo1.Lines.Add(n1);
end;
end;
end;
end;