FColButtons.Add(oButton);
FColButtons.Insert(oButton.Num, oButton);
Ich vermute mal, daß FColButtons die TObjectList ist. Dann wird mit
FColButtons.Add(oButton);
der Button an die Liste angehängt und mit
FColButtons.Insert(oButton.Num, oButton);
nochmal an der Stelle oButton.Num eingefügt. Er befindet sich jetzt also zweimal in der Liste. Das bringt zumindest die Bedeutung von FColButtons.Count durcheinander.