thisform.lockscreen=.t. do case .... case countrycode="YU" with thisform.zipcode .inputmask="99999" .tabindex=4 .top=thisform.vpositions(4) endwith with thisform.city .inputmask="" .tabindex=5 .top=thisform.vpositions(5) endwith with thisform.street .inputmask="" .tabindex=2 .top=thisform.vpositions(2) endwith with thisform.houseno .inputmask="" .tabindex=3 .top=thisform.vpositions(3) endwith .... endcase thisform.lockscreen=.f. thisform.refreshThis way the fields get rearranged according to the country preferences; you can call this code from any suitable method in countrycode. Some countries have zipcode + city, some city + zipcode; some have number+street, some street+number, sometimes you should put city row after street row, sometimes before. You should probably need to set up some array of .left and .top coordinates (I've supposed you had thisform.vpositions already arranged); you should arrange the labels too as you move the textboxes. Finally, you don't have to keep all of this info in code, you can put it into the country lookup table (provided you issue some defaults) and have very little code to arrange elements as you pick another country. Ah, another one - this code should fire only if country changes.