The biggest advantage of a method (IMHO) is that it works with all of the fields of an instance automatically, where a function has to be passed the specific instance you want it to work on. For example:
Type TThing
Field x:Int
Field y:Int
Method SetVals(x_in:Int,y_in:Int)
x = x_in
y = y_in
End Method
Function ValSet(thing_in:TThing, x_in:Int, y_in:Int)
thing_in.x = x_in
thing_in.y = y_in
End Function
End Type
Now, using the above code, there are two ways to set the x and y fields of a specific instance of TThing. Let's make one and set the x and y using a method:
thing:TThing = New TThing
thing.SetVals(4,5)
Note that using the method, you simply send in the values you want and put them in the fields. At any point and time, I can simply call the method and change the values. Now let's do it the other way:
thing:TThing = New TThing
TThing.ValSet(thing,4,5)
Notice that this time I have to let the function know what Type I'm calling the function from (ValSet.TThing), and I'm having to pass what object I'm talking about into the function in addition to the values (thing,4,5). Also, note in the Type code how I have to specify which object's x field I'm taking about (thing_in.x = x_in), whereas the method simply uses the fields of the object that called it (x = x_in)
In most cases, I use methods, just because they are easier to code and they make sure that the only changes being made are to the object that is calling it (unlike functions, which can be called by anything and change anything).
Hope this helps!