Хм. Пусть у нас есть два массива:
Код:
Positions=array of array integer; //здесь хранятся координаты Top кнопок в оригинальном положении
Buttons=array of array of TButton;
(Я так понял кнопки расположены рядами)
Пусть кнопка Buttons[i,j] не видна, тогда надо все кнопки что под ней сдвинуть вверх:
Код:
for k:=i+1 to <количество строк кнопок> - 1 do
begin
Buttons[k,j].Top:=Positions[k-1,j];
end;
Когда кнопка снова стала видна:
Код:
for k:=i+1 to <количество строк кнопок> - 1 do
begin
Buttons[k,j].Top:=Positions[k,j];
end;