Delphi-Quellcode:
SetLength(Buttons,high(Captions)+1);
for i := 0 to high(Buttons) do
SetLength(Buttons[i],StringGrid.RowCount-StringGrid.FixedRows);
Delphi-Quellcode:
Buttons[i,j].Name := 'TBGButton_'+inttostr(i)+'_'+inttostr(j);
Buttons[i,j].Tag := strtoint(inttostr(i) + inttostr(j));
Damals reichte es, wenn die Noten nur bis Fünf gingen, aber heutzutage braucht man schon die 6.
Wo hier nun schon Viele beim Problem mit dem OnClick helfen...
Da du deine Buttons sowieso in einem Array verwaltest und vermutlich kein FindComponent verwendest, kannst'e auf den Komonenten
namen verzichten.
> die
VCL braucht den Namenm um die gleichnamige Form-Variable mit der Komponente in der
DFM zu verknüpfen und um eventuell die Komponenten untereinander zu verknüpfen (wie z.B. Eine ImageList irgendwo zuweisen).
> und man braucht den Namen, wenn man darüber eine Komponete suchen will, wie z.B. über FindComponent (was aber auch oftmals anders/besser/schneller geht)
Der
Tag wird bestimmt falsch berechnet, denn
[1, 3] = 4
und
[3, 1] = 4
.
Und da das Array sowieso quadratisch wird, kann man alle ebenen auch gleichzeitig setzen.
Delphi-Quellcode:
SetLength(Buttons, Length(Captions), StringGrid.RowCount-StringGrid.FixedRows);
for i := 0 to high(Buttons) do