Ok, your doMove function is wrong. Replace it with

[pascal]
procedure sprite.doMove(MoveCount: Integer);
begin
inherited;

If (isUp in form22.DXInput1.States) Then man.Y:= man.Y -4;
If( isDown in form22.DXInput1.States) Then man.Y:= man.Y + 4;
If (isLeft in form22.DXInput1.States) Then man.x:= man.X - 4;
If (isRight in form22.DXInput1.States) Then man.X:= man.X + 4;
end;
[/pascal]

then add DXInput1.Update in your doGame procedure:
[pascal]
procedure doGame;
var x, y:byte;
begin
// put the game stuff in here
Form22.DXInput1.Update;
Form22.DXDraw1.surface.Fill(0);

// ...big cut here...

form22.DXSpriteEngine1.Move(60); // look at the example!
form22.DXSpriteEngine1.Dead; // first check for dead sprites
form22.dxspriteengine1.Draw; // then draw them
end;
[/pascal]

Then your last step:

[pascal]
man := sprite.Create(form22.dxspriteengine1.engine);
with man do
begin
Image:=form22.dximagelist1.Items[2]; // <<<<<<
Width:=Image.Width;
Height:=Image.Height;
Y := 53;
X := 944;
end;
[/pascal]

...and it should work as expected