Pascal/Turbo Pascal - Problema al cambiar la pagina activa

 
Vista:

Problema al cambiar la pagina activa

Publicado por pablo molucas (15 intervenciones) el 22/07/2002 15:57:01
Buenas, tengo un problema al utilizar en el modo grafico (uso el driver egavga.bgi y la libreria graph.tpu q viene x defecto en tp7) varias paginas. El caso es q necesito usar otra pagina para cargar imagenes, y cambia perfectamente la pagina activa, carga lo que tiene que cargar, pero al volver a la pagina por defecto (la 0), parte de la pantalla queda ocupada por la pagina que he usado antes. Hace tiempo me comentaron que turbo pascal tenia problemas en el uso de las pantallas virtuales, y q era bastante engorroso emplearlas. Tambien me dijeron que habia una funcion que esperaba y se sincronizaba con el refresco de pantalla para cambiar la pagina activa o visual en el momento adecuado, y que no sucediera esto que me esta pasando. Si conoceis de la solucion o de algun link que me pueda ayudar, os agradeceria que contestarais.
Gracias por contestar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al cambiar la pagina activa

Publicado por Ge-ergon (17 intervenciones) el 25/07/2002 06:46:25
Solamente los siguientes drivers y modos soportan multiples páginas
-Driver- - Modo- -Páginas-

Ega EgaLo(640*200) 4
EgaHi(640*350) 2
EgaMono EgaMonohi(640*480) 2
HercMono HercMonoHi 2
Vga Vgalo (640*200) 2
Vgamed (640*350) 2

Nota:
SetVisualPage (x): muestra la página x.
SetActivePage (x): activa la página x.
Ejemplo
var .....
initgraph(driver,modo,''')
....
setvisualpage(0);
setactivepage(0);
outtext('Página #0');
setactivepage(1);
outtext('Pagina #1');
readln;
setvisualpage(1); (*Muestra pág 1*)
readln;
setvisualpage(0); (*Muestra de nuevo pág 0*)
readln;
.......
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al cambiar la pagina activa

Publicado por pablo molucas (15 intervenciones) el 26/07/2002 15:52:58
Ante todo, gracias por contestar. Sin embargo no has resuelto la duda que tenia. En cuanto a lo de driver, modo, etc, no se realmente cual utilizo, pues para el driver uso la funcion detect; y para el modo, cualquier entero valido (me dijeron q el modo no importaba). Supongo q el driver usado debe ser el vga. Utilizo los controladores del egavga.bgi. La resolucion que empleo es 640,480, pq es la q indica en setviewport.
Lo que has explicado sobre paginas activa y visual ya lo conocia, mi problema es que no refresca bien la pantalla, y la parte de abajo de abajo de la pagina 1, se sobrepone a la parte superior de la pagina 0, al cambiar la pagina activa. Se que en el modo 13h hay formas de hacer que el refresco de pantalla se sincronice con el cambio de paginas, o el movimiento de imagenes (para evitar tb el molesto parpadeo). Pero no tengo constancia de que haya algo parecido para el controlador bgi que utilizo. Conoceis de algo, o sabeis como arreglar este error??
P.D.: De momento lo he solucionado de una forma un poco cutre, utilizando un puntero para capturar la parte superior de la pagina 0 y no perder la imagen, pero se produce un parpadeo, y ademas ocupo memoria innecesariamente (creo yo).
Gracias por contestar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al cambiar la pagina activa

Publicado por Ge-ergon (17 intervenciones) el 28/07/2002 21:01:48
Tomado de:
The Turbo Pascal Reference
by
Ed Mitchell

Importante!
Solo los siguientes drivers y modos soportan multiples páginas:

-Driver
EGA
-Modos
EGALo(640 * 200); Paginas 4; 16 color
EGAHi(640 * 350); Paginas 2; 16 color

-Driver
EGAMono
-Modo
EGAMonoHi (640 * 350); Páginas 2; 2 color

-Driver
HercMono
-Modo
HerccMonoHi (720 * 348); Páginas 2; 2 color

-Driver
VGA
-Modos
VGALo (640 * 200); Páginas 2; 16 color
VGAMed (640 *350); Páginas 2; 16 color

Es decir el driver que debes utilizar es VGA y el modo VgaMed
Ejemplo
driver := VGA;
Modo := VGAMed;

Páginas multiples a una resolución (640 * 480) no es soportada
Si necesita limpiar la pantalla utilizar procedimiento cleardevice.
Gracias por su tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar