Respecto a visualizar los botones que quieres, la solución es poner a cada botón en la variable Tag un número 1..4 y con éste procedimiento hacerlo todo.
Código Delphi
[-]procedure ShowButtonVisible(btn: ShortInt);
begin
Button1.Visible := (Button1.Tag = btn);
Button2.Visible := (Button2.Tag = btn);
Button3.Visible := (Button3.Tag = btn);
Button4.Visible := (Button4.Tag = btn);
end;
Espero que te sirva.
Un saludo.