>> because the current ActiveControl is still known in the LOSTFOCUS event. By the VALID event it does not know the ActiveControl any more. I've tested it.
1/ Frank, how is this possible? I think Valid always run BEFORE Lostfocus, or not?
2/ Then: If you want save the information inside a method of some control, then you are not dependend on the .ActiveControl property. You can simply save THIS (or THIS.Name) in such method. THIS is always known, f.e. in Grid.Valid. (THISFORM.oLastControl=THIS)
3/ Grid (as all containers) hasn't LostFocus, but has Valid which is similar to LostFocus.
4/ When you write such information f.e. into some form property (or global application object property), you can write longer history as 1 object only - f.e. you can remember last 2 accessed objects in 2-elemenets array property. If so, then you can update this history earlier, f.e. in (succesfull) When method of some control: Move 1-st element to 2-nd and save THIS to the 1-st element. If you want then detect the previous control, take a look at the 1-st element and compare it with THISFORM.ActiveControl. If they are different, then 1-st element is previous control. If they are same, then 2-nd element is previous control.