Hát... elvileg nem kell. De lehet, illetve public változóknál kell is. Egyébként ez a változósdi elég kavarós a FVP-ben, mivel a form objektumok nem látják a külsõ eljárásokon kívüli változókat (csak a public-ként deklaráltakat), de ha pl. egy form metódusból hívsz egy külsõ függvényt, akkor a megegyezõ változónevek bizony azonos adatterületre fognak hivatkozni (hacsak nincsenek külön local-ként deklarálva).
Pl.:
(ez külön prg blokkban, más fájlban)
procedure kulso_eljaras(y)
x=y*10
return
A metódusban meg ez van:
...
x=3
kulso_eljaras(x)
...
Az eredmény? A várakozásoknak "megfelelõen" az "x" értéke 30-ra fog változni... Elég könnyû beleesni ebbe a csapdába, célszerû inkább a külsõ eljárásokon, függvényeken belül a "local" használata.
Sajnos a VFP ezen nagyvonalú lazasága elég bosszantó tud lenni néha, pláne ha azt nézzük, hogy ehhez képest az automatikus konverziók sokszor pont úgy mûködnek, ahogy nekünk éppen nem kell. Különösen a form mezõknél szokott elõjönni ez, ha feldolgozod az értéküket és csak futásidõben (azok a kib* "type mismatch" üzenetek :] ).
Én elsõsorban azért használom a VFP-t, mert a fejlesztéseimben többnyire nagy adathalmazokból, több adatbázisból (Oracle) SQL-lel lehúzott kurzorokkal kell dolgozni, és nagyon jól és gyorsan lehet mókolni, átalakítgatni és összekapcsolni õket. A form kezelõi részét és a vezérlõelemeit viszont nagyon gyatrának érzem, az "igazzy" OOP-tõl majdhogynem idegennek. Arra viszont nincs idõ, hogy kézzel programozzam le az egészet. :)