Problems with saving "Puzzle-Parts"

It's me again!

I thought everything's alright, the parts were created. At least the
first 10 ones. The second ten were of an undefined format, the third ten
were upside down and the last ten again undefined. What the heck am I
doing wrong now????

I tried two versions of code:

procedure TForm1.Button1Click(Sender: TObject);
    const
        hoehe = 100;
        breite = 78;
    var
        Bitmap: TBitmap;
        SourceRect, DestRect: TRect;
        X: Integer;
    begin
        X := 0;
        FOR X := 1 TO 10 DO
        begin
            SourceRect := Rect((X-1)*breite, 0, X*breite, hoehe);
            DestRect := Rect(0, 0, breite, hoehe);
            Bitmap := TBitmap.Create;
            Bitmap.Width := breite;
            Bitmap.Height := hoehe;
            Bitmap.Canvas.CopyRect(DestRect,
Image1.Picture.Bitmap.Canvas, SourceRect);
            Bitmap.SaveToFile(inttostr(X) + '.bmp');
            Bitmap.Free;
        end;
        FOR X := 11 TO 20 DO
        begin
            SourceRect := Rect((X-11)*breite, 100, (X-10)*breite,
hoehe);
            DestRect := Rect(0, 0, breite, hoehe);
            Bitmap := TBitmap.Create;
            Bitmap.Width := breite;
            Bitmap.Height := hoehe;
            Bitmap.Canvas.CopyRect(DestRect,
Image1.Picture.Bitmap.Canvas, SourceRect);
            Bitmap.SaveToFile(inttostr(X) + '.bmp');
            Bitmap.Free;
        end;
        FOR X := 21 TO 30 DO
        begin
            SourceRect := Rect((X-21)*breite, 200, (X-20)*breite,
hoehe);
            DestRect := Rect(0, 0, breite, hoehe);
            Bitmap := TBitmap.Create;
            Bitmap.Width := breite;
            Bitmap.Height := hoehe;
            Bitmap.Canvas.CopyRect(DestRect,
Image1.Picture.Bitmap.Canvas, SourceRect);
            Bitmap.SaveToFile(inttostr(X) + '.bmp');
            Bitmap.Free;
        end;
        FOR X := 31 TO 40 DO
        begin
            SourceRect := Rect((X-31)*breite, 100, (X-30)*breite,
hoehe);
            DestRect := Rect(0, 0, breite, hoehe);
            Bitmap := TBitmap.Create;
            Bitmap.Width := breite;
            Bitmap.Height := hoehe;
            Bitmap.Canvas.CopyRect(DestRect,
Image1.Picture.Bitmap.Canvas, SourceRect);
            Bitmap.SaveToFile(inttostr(X) + '.bmp');
            Bitmap.Free;
        end;
    end;

Version 2:

procedure TForm1.Button1Click(Sender: TObject);
    const
        hoehe = 100;
        breite = 78;
    var
        Bitmap, Bitmap2, Bitmap3, Bitmap4: TBitmap;
        SourceRect, DestRect, SourceRect2, DestRect2,
        SourceRect3, DestRect3, SourceRect4, DestRect4: TRect;
        X: Integer;
    begin
        X := 0;
        FOR X := 1 TO 10 DO
        begin
            SourceRect := Rect((X-1)*breite, 0, X*breite, hoehe);
            DestRect := Rect(0, 0, breite, hoehe);
            Bitmap := TBitmap.Create;
            Bitmap.Width := breite;
            Bitmap.Height := hoehe;
            Bitmap.Canvas.CopyRect(DestRect,
Image1.Picture.Bitmap.Canvas, SourceRect);
            Bitmap.SaveToFile(inttostr(X) + '.bmp');
            Bitmap.Free;
        end;
        FOR X := 11 TO 20 DO
        begin
            SourceRect2 := Rect((X-11)*breite, 100, (X-10)*breite,
hoehe);
            DestRect2 := Rect(0, 0, breite, hoehe);
            Bitmap2 := TBitmap.Create;
            Bitmap2.Width := breite;
            Bitmap2.Height := hoehe;
            Bitmap2.Canvas.CopyRect(DestRect2,
Image1.Picture.Bitmap.Canvas, SourceRect2);
            Bitmap2.SaveToFile(inttostr(X) + '.bmp');
            Bitmap2.Free;
        end;
        FOR X := 21 TO 30 DO
        begin
            SourceRect3 := Rect((X-21)*breite, 200, (X-20)*breite,
hoehe);
            DestRect3 := Rect(0, 0, breite, hoehe);
            Bitmap3 := TBitmap.Create;
            Bitmap3.Width := breite;
            Bitmap3.Height := hoehe;
            Bitmap3.Canvas.CopyRect(DestRect3,
Image1.Picture.Bitmap.Canvas, SourceRect3);
            Bitmap3.SaveToFile(inttostr(X) + '.bmp');
            Bitmap3.Free;
        end;
        FOR X := 31 TO 40 DO
        begin
            SourceRect4 := Rect((X-31)*breite, 100, (X-30)*breite,
hoehe);
            DestRect4 := Rect(0, 0, breite, hoehe);
            Bitmap4 := TBitmap.Create;
            Bitmap4.Width := breite;
            Bitmap4.Height := hoehe;
            Bitmap4.Canvas.CopyRect(DestRect4,
Image1.Picture.Bitmap.Canvas, SourceRect4);
            Bitmap4.SaveToFile(inttostr(X) + '.bmp');
            Bitmap4.Free;
        end;
    end;

It must have something to do with the TRects, because the Bitmaps are
created correctly, but saved incorrectly.

Any suggestions?

Christian