Unfrtunately I havent been able to compile your project as I don't have all components so I can't offer you exact code changes: But becouse I was doing something similar once I can still give you some hints:

1. Instead of creating all 1500x32 sprites create just as many sprites as it fits your window. Then you are only changing the sprites texture (Image).
For instacne you define your map the same way as you do using:
Code:
TMap: array of array of Integer;
Then you define multidimensional array of sprites:
Code:
TSprites: array of array of TSprite;
And then when you move your map you just check which texture should be used for which Sprite like so:
Code:
Sprites[X,Y].Texture := Map[X+Left,Y+Top];
2. Decrease the number of redraws as much as posible. Since you are making a map editor you probably don't even need 30 FPS. So increase the timers interval. Or even better if you are only using static Sprites (no animations) you can forget about constant redraws and actually fire redraws only when there has been any change. This can especially come useful when you are forced to render lots of Sprites (zoomed out view of your map for instance).

NOTE: All the code examples are purely out of my head so there is great posibility that they have syntax problems in them.