Pergunta

Estamos saindo de VB6 tão rapidamente quanto pudermos, mas, entretanto, começamos a construir nossas aplicações VB6 na linha de comando em um servidor de compilação.

Problema:. O servidor de compilação tem uma placa de vídeo básica e faz com que os formulários para ser truncado para baixo para a resolução do adaptador básico em vez da altura e largura no próprio formulário

Uma solução que nós descobrimos requer entrar em Carga Evento de cada formulário e configurar manualmente as propriedades altura e largura para os tamanhos observados na janela de Propriedades do formulário.

Ugh ..

Existem muitas dezenas de formulários envolvidos nesta aplicação e mais aplicações com mais dezenas de formas para vir. Eu quero construir um script para lidar com isso.

Duas perguntas:

1) Onde no código / projecto / etc posso encontrar a altura e largura da forma como mostrado na janela de propriedades? A pesquisa do arquivo * .frm não apareceu nenhum vencedores; também não Opeing o arquivo * .frx e convertendo uma altura conhecida ou Largura para Hex (então pesquisar).

2) Existe alguma coisa que eu possa fazer além de editar toda e qualquer forma?

Agradecemos antecipadamente.

Jon

Foi útil?

Solução

O formato FRM está documentado no VB6 manual do . Ele diz que a altura e largura são armazenados em Twips, como irritado Jim observou. Ele não explica sobre ClientHeight e ClientWidth mas como OneNerd e cmsjr ter dito, que é o tamanho do interior da forma (sem barras de menus e fronteiras). Servidor de compilação também pode estar mudando o ClientLeft e ClientTop, se você tiver quaisquer formas com StartupPosition conjunto para manual.

Nunca definir a altura e largura do formulário em tempo de execução. Estas incluem a barra de menus e as fronteiras, que são diferentes espessuras em diferentes versões do Windows ou com temas diferentes. Então você vai obter os tamanhos errados. Definir a AlturaDaEscala e LarguraDaEscala em vez disso, que são as dimensões do interior da forma. O tempo de execução VB6 calcula a altura adequada e largura daqueles.

E, finalmente, apenas comprar um novo servidor de compilação (ou uma nova placa de vídeo). Levar todos os desenvolvedores para o chefe agitando tochas e forcados, ou talvez apenas calmamente explicar a diferença entre o custo de um PC e o custo do tempo de desenvolvedores.

Outras dicas

Se você abrir os arquivos .frm no bloco de notas ou qualquer editor de texto simples, os tamanhos de formulário são definidas algumas linhas do topo:

por exemplo:

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

Eu não sou certo porque você está encontrando o problema - parece estranho - mas se o seu servidor de compilação está causando um problema, então as únicas opções que eu vejo são (1) a mudar seu servidor de compilação (ou atualizar a placa de vídeo talvez), ou escrever o código no evento de carregamento para cada forma como você menciona, embora isso possa ter um efeito sobre centralização do formulário se você tem a postion-> set centro no IDE assim verificar se as formas ainda estão centrada se isso é o resultado desejado.

Com base este eu diria que a altura como pode ser visto na janela de propriedade é um valor calculado que inclui ClientHeight da forma (o que está no frm) + as alturas das barras de fronteira e título. Então ClientHeight é provavelmente o número que você está procurando.

A altura ea largura são armazenados em Twips (a unidade de medida independente do dispositivo), então você tem que dividir por Screen.TwipsPerPixelX e Y para obter o valor adequado. Para a maioria dos monitores, este será o 15. (usando a largura no exemplo de OneNerd, 9960 twips é 664 pixels).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top