ArtemKa, нельзя недолюбливать Блиц ибо ты пишешь на нем

ем более сам блиц своим RectsOverlap'ом проверит быстрее чем ты своим способом.
ЗЫ а твой код неверный.
Function D2D_MouseButtonFree%(ElementId$)
For MButtons.TButton=Each TButton
If MButtons\Name$=ElementId$ Then
If D2D_MX%>MButtons\X% And D2D_MY%>MButtons\Y% And D2D_MX%<MButtons\X%+MButtons\Width% And D2D_MY%<MButtons\Y%+MButtons\Height% Then
D2D_MouseFree%=1
Else
D2D_MouseFree%=0
EndIf
Вот здесь вся лага была, он пролетал дальше :)
Exit
Else
D2D_MouseFree%=3
EndIf
Next
Return D2D_MouseFree%
End Function