То есть флаг должен двигаться по форме. То, что вы описываете - первый случай.
На самом деле второй на мой взгляд проще в данном случае. Image и так является "кусочком" изображения на форме. Его не зачем растягивать на всё, лучше сделать по размерам флага.
Тогда надо двигать TImage.
Код:
image1.left:=image1.left+2;
image1.top:=image1.top+2;
Это по диагонали. По периметру наверно как-то так (за работоспособность не ручаюсь, пол второго ночи на дворе

)
Код:
var vectX:integer=1;
vectY:integer=0;
...
procedure TForm1.Timer1OnTimer(Sender:TObject)
begin
image1.left:=image1.left+2*vectX;
image1.top:=image1.top+2*vectY;
if image1.left + image1.width > ClientWidth then
begin
image1.left := ClientWidth - image1.width;
vectX := 0;
vectY := 1;
end;
if image1.top + image1.height > ClientHeight then
begin
image1.top := Clientheight - image1.height;
vectX := -1;
vectY := 0;
end;
if image1.left < 0 then
begin
image1.left := 0;
vectX := 0;
vectY := -1;
end;
if image1.top < 0 then
begin
image1.top := 0;
vectX := 1;
vectY := 0;
end;
end;
2*vectX: тут 2 - это шаг в пикселях. если надо быстрее - можно его увеличить.