Boa tarde,
A principio esse tipo de tratamento deve ser feito na sua própria aplicação.
Um tipo de controle bastante comum é o "semáforo", onde quando uma operação é inciada você bloqueia e somente libera quando ela termina.
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
// executa sua rotina no botão
Button1.Enabled := True;
end;
Acima um exemplo no click de um botão. Quando inicia a execução ele deixa o botão desabilitado para não ser clicado novamente e só vai habilitar o botão no final do processo.
Esse mesmo tipo de tratamento pode ser feito com uma variável interna de controle ou com threads ou funções. Aí depende mais de como o seu código-fonte está estruturado.