Neftali, rgstuamigo y [Al González] gracias por la ayuda
efectivamente el estado del conjunto de datos dispara ese evento así que siguiendo vuestro sabio consejo lo he dejado así :
Código Delphi
[-]
if (DataSource.State In dsEditModes) then
begin
if (DBCheckEXTRA.Checked = True) then
begin
if MessageDlg('Atención !!!!'+#13+#10+''+#13+#10+
'Se asignarán todas las Horas como Horas Extras.'+#13+#10+''+#13+#10+
'¿ Desea continuar ?', mtWarning, [mbYes, mbNo], 0) = mrYes then
CalculaHoras;
end else begin
if MessageDlg('Atención !!!!'+#13+#10+''+#13+#10+
'Las Horas dejarán de considerarse como Horas Extras y se distribuirán normalmente.'+#13+#10+''+#13+#10+
'¿ Desea continuar ?', mtWarning, [mbYes, mbNo], 0) = mrYes then
CalculaHoras;
end;
end;
de esa forma sólo se ejecuta al editar, en función del Checked o Unchecked muestro un mensaje diferente pero ambos pasan por la rutina de distribución de horas.
Muchas Gracias por la ayuda, por mi parte la duda queda resuelta.
Saludos