Du suchst doch Row und Col des Panels auf das geklickt wurde?
Delphi-Quellcode:
procedure TForm1.PanelMatrixMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
S: string;
C: char;
Panel: TPanel;
Row, Col: integer;
begin
if Sender is TPanel then
begin
Panel := TPanel(Sender);
Col := IndexOfPanel(Panel).X;
Row := IndexOfPanel(Panel).Y;
..
Delphi-Quellcode:
procedure TForm1.PanelMatrixMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
S: string;
C: char;
Panel: TPanel;
Pos: TPoint;
begin
if Sender is TPanel then
begin
Panel := TPanel(Sender);
Pos := IndexOfPanel(Panel);
.....
IntA[Pos.X,Pos.Y] := ......
Es wäre doch viel besser den Rückgabewert von IndexOfPanel() gleich in eine Variable vom Typ TPoint zu speichern, denn dann muss die Funktion nur einmal durchlaufen werden und die Variablen Col und Row würden durch Pos.X und Pos.Y ersetzt.
Einmal abesehen davon, dass da bestimmt nichts zurückgegeben wird, da PanelA noch gar keine Werte enthält.
Panels[x, y] := TPanel.Create(Self);
und schon kann man den Mist mit dm Suchen weg lassen, da man die Instanzen bereits hat.
Das Suchen braucht er, um die Koordinaten zu bestimmen, da er ja auf die Werte im Array IntA zugreifen möchte.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.