Ich wollte mit
A:=StrToInt(Panel.Name[3]);
(falls das funktioniert hätte) A aus dem Namen des Panels bestimmen,
aber das Problem ist, dass der Name des Panels an der Stelle (zB P_4_7) auch zweistellig sein kann. (P_10_13)
Dein bisheriger Code ist:
Delphi-Quellcode:
Panel.Name := 'P_' + IntToStr(x) + '_' + IntToStr(y);
...
Ändere das in:
Delphi-Quellcode:
Panel.Name := Format('P_%.2d_%.2d', [x, y]);
...
Das Teil
%.2d
formatiert die Zahl im String so, dass sie (zumindest bis 99) immer zweistellig ist. Bei Zahl 10 ist die Ausgabe 10. Bei Zahl 5 ist die Ausgabe 05. Also zweistellig.
Der String oben wird also immer von Format
P_00_00 sein.
Mit
Copy('P_00_00', 3, 2)
kannst du das erste Zahlenpaar ermitteln. Mit Copy
('P_00_00', 6, 2)
das zweite Paar.
Nur wie gesagt, das klappt solange der Wert unter 100 ist. Ansonsten den Code ändern in
%.3d. Dann ist die Zahl dreistellig bis 999.