# Preview PNG (REPORTBEHAVIOR 90) Fereastra de capturat este **"Report Preview - .frx [- Page N]"**, copil al shell-ului VFP. NU "Report Designer" si NU fereastra Command Window. Captura pe fereastra gresita = certifici designerul/desktop-ul, nu pagina. ## Cum gasesti fereastra - Preview-ul NU e top-level: `EnumWindows` pe proces intoarce doar shell-ul VFP ("Microsoft Visual FoxPro"), iar fereastra de pagina e un **copil** al lui. Captura corecta = `EnumChildWindows` pe shell si filtrare dupa titlul care contine `Report Preview`. - Fereastra de pagina are titlul `Report Preview - .frx - Page N`. Bara de unelte e o fereastra mica (aceeasi radacina de titlu, inaltime mica) si se exclude prin filtrul de dimensiune (`>200x200`); daca umbreste pagina, muta-o cu `MoveWindow`. ## Runner `.prg` (precompilat) cu: cursor de test + `SET REPORTBEHAVIOR 90` + `REPORT FORM PREVIEW NOWAIT` + `INKEY()` + `QUIT`; `ON ERROR` scrie in log si `QUIT`. Apoi: ``` powershell -File scripts\randare_preview.ps1 -Fxp -Png [-TitleMatch ] ``` Scriptul lanseaza vfp9, capteaza fereastra copil de preview si **opreste procesul** la final (nu lasa vfp9 viu). ## Watchdog `randare_preview.ps1` este runnerul controlat pentru preview: are nevoie de procesul VIV in timpul `INKEY`, deci nu poate fi asteptat de watchdog-ul care asteapta iesirea procesului. Toate celelalte rulari vfp9 (build, randare ASCII, structura) trec prin `COMUN\utile\Teste\watchdog_vfp.ps1 -Script -TimeoutSec 120 -AutoDismiss -OutDir `. ## Capcane de preview - `_REPORTPREVIEW = "ZOOM 100"` NU e zoom: VFP cauta un fisier `zoom 100.prg` (eroare "File 'zoom 100.prg' does not exist"). Zoom-ul e doar buton owner-drawn in toolbar, nu se seteaza programatic. - Preview-ul nativ la 100% afiseaza **pagina intreaga** (r6): marginea paginii se vede, restul e desktop gri. Un cap de coloana care pare taiat e text care iese din coloana, nu pagina (nota inversa din r5 era inselatoare). Confirma intai `max(HPOS+WIDTH) <= latimea paginii`, apoi citeste PNG-ul.