* do form anyForm name ("oMyForm") linked >lParameters cFormRefName, cSCXName >lExistForm = (type(cFormRefName) = "O" ; > and !isnull(cFormRefName) ; > and eval(cFormName+".baseclass") = "Form") >if lExistForm > &cFormName..show() && Exists show it >else > do form (cSCXName) name (cFormName) linked >endif > >* W/o using name clause of "do form" >* do form anyForm && Now scx is anyForm.scx >lParameters cSCXName >lExistsForm = .f. >for each oForm in _Screen.forms && Check in forms collection <strong>Correction</strong> > if sys(1272,oForm) = cSCXName+"." && Set exact off <strong> if sys(1271,oForm) = cSCXName && Full scx path&name</strong> > lExistsForm = .t. && Found it > oForm.show() && Show and make active > exit > endif >endfor >if !lExistsForm > do form (cSCXName) >endifThe first method has advantage of referring to form at runtime using var ref "Name". ie: "myFormName.left = 12" would let its left property set from anywhere in app or refresh with "myFormName.refresh()"(provided myFormName is alive - cool myFormName is like thisform for that form). And from anywhere you could release that form with "release myFormName" (as reverse when form is released var myFormName is released). Many use these name vars kept in oApp application object, in an array.