Formulario VB6 altura / anchura Ignorado con la línea de comando de construcción

StackOverflow https://stackoverflow.com/questions/715789

  •  23-08-2019
  •  | 
  •  

Pregunta

Estamos saliendo de VB6 tan pronto como nos sea posible, pero mientras tanto hemos comenzado la construcción de nuestras aplicaciones de Visual Basic 6 desde la línea de comandos en un servidor Generar.

Problema: El servidor de compilación tiene un adaptador de vídeo básico y hace que las formas de truncarse hasta la resolución del adaptador básico en lugar de la altura y anchura de la misma forma

.

Una solución que hemos descubierto requiere entrar en carga de cada Formulario de eventos y configurar manualmente las propiedades de altura y anchura a los tamaños observados en la ventana de propiedades del formulario.

Uf ..

Hay muchas docenas de formas involucradas en esta solicitud y más aplicaciones con más docenas de formas de proceder. Quiero construir una secuencia de comandos para manejar esto.

Dos preguntas:

1) ¿En qué parte del código / proyecto / etc puedo encontrar la altura y anchura de la forma como se muestra en la ventana de propiedades? Una búsqueda en el archivo * .frm no aparece ningún ganadores; tampoco lo hace opeing el archivo * .frx y la conversión de una altura o anchura conocido a Hex (a continuación, buscar).

2) ¿Hay algo más que pueda hacer, además de editar todos y cada forma?

Gracias de antemano.

Jon

¿Fue útil?

Solución

El formato FRM se documenta en el VB6 manual de . Se dice que la altura y la anchura se almacenan en Twips, como se observa enojado Jim. No explica acerca clientHeight y ClientWidth sino como OneNerd y cmsjr han dicho, que es el tamaño del interior de la forma (sin barras de menús y las fronteras). El servidor de compilación también puede estar cambiando la ClientLeft y clientTop, si usted tiene cualquier forma con StartupPosition establece en manual.

No ponga nunca la altura y anchura del formulario en tiempo de ejecución. Entre ellos se incluyen la barra de menús y las fronteras, que son diferentes espesores en diferentes versiones de Windows o con diferentes temas. De manera que obtendrá los tamaños incorrectos. Ajuste el ScaleHeight y ScaleWidth su lugar, que son las dimensiones del interior de la forma. El tiempo de ejecución VB6 calcula la altura y anchura apropiada de aquellos.

Y, por último, acaba de comprar un nuevo servidor de compilación (o una nueva tarjeta de video). Conducir a todos los desarrolladores a que el jefe agitando antorchas y horcas de fuego, o tal vez sólo con calma explicar la diferencia entre el coste de un PC y el costo del tiempo de desarrollo.

Otros consejos

Si abre los archivos .frm en el bloc de notas o cualquier editor de texto plano, los tamaños de formulario se definen unas líneas de la parte superior:

por ejemplo:

 ClientHeight    =   8445
 ClientLeft      =   60
 ClientTop       =   450
 ClientWidth     =   9960

No estoy seguro de por qué se encontró el problema - parece extraño - pero si su servidor de compilación está causando un problema, entonces la única opción que veo son (1) el cambio de su servidor de compilación (o actualizar la tarjeta de video tal vez), o escribir en el código en el evento de carga para cada forma como usted menciona, aunque esto puede tener un efecto sobre el centrado de la forma, si usted tiene la postion-> centro establecido en el IDE de manera verificar que sus formas todavía están centradas si eso es el resultado deseado.

este yo diría que la altura como se ve en la ventana de propiedades es un valor calculado que incluye clientHeight de la forma (que está en el .frm) + las alturas de las barras de frontera y el título. Así clientHeight es probable que el número que está buscando.

La altura y la anchura se almacenan en Twips (una unidad independiente del dispositivo de medida), así que hay que dividir por Screen.TwipsPerPixelX y -Y para obtener el valor adecuado. Para la mayoría de las pantallas, este será 15. (El uso de la anchura en el ejemplo de OneNerd, 9960 twips es 664 píxeles.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top