its not the variable, its just the NAME, the "WITH" puts all identifiers in the StringGrid that are visible
first. if it does not find a matching identifier of that name in the StringGrid then it moves back one and that
would be the level you were expecting.
You can also specify multiple scopes too but they need to be of different types otherwise you'll
only see the last one, for example.
With Button1, Button2, Button3 do
Begin
// if all these buttons are of the same class type and you specify a identifier of this class
// you'll only see the identifiers of BUtton3
End;
I am not even sure if the compiler will allow this, in reality it shouldn't..
but you can use this for different types of objects or simply not use that construct at all!