Вы можете смоделировать на JavaScript Demo: RegExp Constructor .
var s = `5' 10" 1/2`;
var s1 = `6' 3" 1/4`;
var s2 = `4' 8"`;
var s3 = `5'`;
var s4 = `10"`;
var regex = /\d[\s\'\"\d\/]+/;
var result = s.match(regex);
var result1 = s1.match(regex);
var result2 = s2.match(regex);
var result3 = s3.match(regex);
var result4 = s4.match(regex);
console.log(result);
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
Я бы пошел с комментарием mghie : используйте таймер для анимации и активируйте / деактивируйте его с помощью обработчиков сообщений.
В вашем случае вы можете захотеть Чтобы добавить следующие обработчики сообщений:
//fired when starting/ending a "move" or "size" window
procedure WMEnterSizeMove(var Message: TMessage) ; message WM_ENTERSIZEMOVE;
procedure WMExitSizeMove(var Message: TMessage) ; message WM_EXITSIZEMOVE;
procedure TForm.WMEnterSizeMove(var msg: TMessage);
begin
AnimationTimer.Enabled := false;
inherited;
end;
procedure TForm.WMExitSizeMove(var msg: TMessage);
begin
AnimationTimer.Enabled := true;
inherited;
end;
Я не пробовал этого, но я бы сказал, что вы, вероятно, могли бы использовать WM_WINDOWPOSCHANGING, чтобы сказать, когда окно перемещается. http://msdn.microsoft.com/en-us/library/ms632653 (VS.85) .aspx
Код Delphi будет:
TSomeForm = class(TForm)
protected
...
procedure WindowPosChanging(var Msg : TMessage); message WM_WINDOWPOSCHANGING;
...
end;