Dicas para aplicativos Delphi com várias resoluções

Ao projetar formulários dentro Delphi, geralmente é útil escrever o código para que seu aplicativo (formulários e todos os objetos) pareça essencialmente o mesmo, independentemente da resolução da tela.

A primeira coisa que você deseja se lembrar desde o início do estágio de design do formulário é se você permitirá que o formulário seja dimensionado ou não. A vantagem de não escalar é que nada muda em tempo de execução. A desvantagem de não escalar é que nada muda em tempo de execução (seu formulário pode ser muito pequeno ou muito grande para ser lido em alguns sistemas, se não for dimensionado).

Se você não vai escalar o formulário, defina Dimensionado para Falso. Caso contrário, defina a propriedade como True. Além disso, defina Auto rolagem para False: o oposto significaria não alterar o tamanho do quadro do formulário em tempo de execução, o que não parece bom quando o conteúdo do formulário Faz alterar tamanho.

Considerações importantes

Defina a fonte do formulário como uma fonte escalável TrueType, como Arial. Somente o Arial fornecerá uma fonte dentro de um pixel da altura desejada. Se a fonte usada em um aplicativo não for instalado no computador de destino, o Windows selecionará uma fonte alternativa na mesma família de fontes a ser usada em vez de.

instagram viewer

Defina o formulário Posição propriedade para algo diferente de poDesigned, que deixa o formulário onde você o deixou no tempo de design. Isso geralmente termina à esquerda em uma tela de 1280x1024 - e completamente fora da tela de 640x480.

Não aglomere controles no formulário - deixe pelo menos 4 pixels entre os controles para que uma alteração de um pixel nos locais das bordas (devido à escala) não apareça como controles sobrepostos.

Para etiquetas de linha única que são alLeft ou bem alinhado, conjunto Tamanho automático para True. Caso contrário, defina Tamanho automático para Falso.

Verifique se há espaço em branco suficiente em um componente de etiqueta para permitir alterações na largura da fonte - um espaço em branco com 25% do comprimento da corrente corda o comprimento da tela é um pouco demais, mas seguro. Você precisará de pelo menos 30% de espaço de expansão para rótulos de string, se planejar traduzir seu aplicativo para outros idiomas. E se Tamanho automático for False, verifique se realmente definiu a largura do rótulo adequadamente. E se Tamanho automático é True, verifique se há espaço suficiente para o rótulo crescer por conta própria.

Em etiquetas com várias linhas e agrupadas por palavras, deixe pelo menos uma linha de espaço em branco na parte inferior. Você precisará disso para capturar o estouro quando o texto for diferente quando a largura da fonte mudar com a escala. Não presuma que, como você está usando fontes grandes, não precisa permitir excesso de texto - as fontes grandes de outra pessoa podem ser maiores que a sua!

Cuidado ao abrir um projeto no IDE em diferentes resoluções. Os formulários PixelsPerInch A propriedade será modificada assim que o formulário for aberto e será salva no DFM se você salvar o projeto. É melhor testar o aplicativo executando-o de forma independente e editar o formulário com apenas uma resolução. A edição em diferentes resoluções e tamanhos de fonte convida a problemas de desvio e dimensionamento de componentes. Certifique-se de definir seu PixelsPerInch para todos os seus formulários para 120. O padrão é 96, o que causa problemas de dimensionamento em uma resolução mais baixa.

Por falar em desvio de componente, não redimensione um formulário várias vezes, no tempo de design ou tempo de execução. Cada redimensionamento introduz erros de arredondamento que se acumulam muito rapidamente, pois as coordenadas são estritamente integrais. Como quantidades fracionárias são truncadas das origens e tamanhos do controle a cada reescalonamento sucessivo, os controles parecerão rastejar para noroeste e ficar menores. Se você deseja permitir que seus usuários redimensionem o formulário várias vezes, comece com um formulário recém-carregado / criado antes de cada dimensionamento, para que erros de dimensionamento não se acumulem.

Em geral, não é necessário criar formulários em nenhuma resolução específica, mas é crucial que você revise aparência em 640x480 com fontes grandes e pequenas e em alta resolução com fontes pequenas e grandes, antes de liberar seu aplicativo. Isso deve fazer parte da sua lista de verificação regular de testes de compatibilidade do sistema.

Preste muita atenção a todos os componentes que são essencialmente de linha única TMemos—coisas como TDBLookupCombo. O controle de edição de várias linhas do Windows sempre mostra apenas linhas inteiras de texto - se o controle for muito curto para sua fonte, um TMemo não mostrará nada (um TEdit mostrará o texto cortado). Para esses componentes, é melhor torná-los com alguns pixels grandes demais do que com um pixel pequeno demais e não mostrar nenhum texto.

Lembre-se de que todo o dimensionamento é proporcional à diferença na altura da fonte entre o tempo de execução e o tempo de design, não a resolução de pixels ou o tamanho da tela. Lembre-se também de que as origens de seus controles serão alteradas quando o formulário for dimensionado - você não pode muito bem aumentar os componentes sem movê-los um pouco.

Âncoras, alinhamento e restrições: VCL de terceiros

Depois de saber quais problemas devem ser levados em consideração ao dimensionar os formulários Delphi em diferentes resoluções de tela, você estará pronto para codificação.

Ao trabalhar com o Delphi versão 4 ou superior, várias propriedades foram projetadas para nos ajudar a manter a aparência e o layout dos controles em um formulário.

Usar Alinhar para alinhar um controle à parte superior, inferior esquerda ou direita de um formulário ou painel e mantê-lo lá, mesmo que o tamanho do formulário, painel ou componente que contém o controle seja alterado. Quando o pai é redimensionado, um controle alinhado também é redimensionado para que continue a abranger a borda superior, inferior, esquerda ou direita do pai.

Usar Restrições para especificar a largura e a altura mínima e máxima do controle. Quando Restrições contém valores máximos ou mínimos, o controle não pode ser redimensionado para violar essas restrições.

Usar Âncoras para garantir que um controle mantenha sua posição atual em relação a uma borda de seu pai, mesmo que o pai seja redimensionado. Quando seu pai é redimensionado, o controle mantém sua posição em relação às arestas às quais está ancorado. Se um controle estiver ancorado nas arestas opostas do pai, o controle se estenderá quando o pai for redimensionado.

procedimento ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
início
F. Escalado: = Verdadeiro;
F.AutoScroll: = Falso;
F.Position: = poScreenCenter;
F.Font. Nome: = 'Arial';
if (Tela. Largura <> ScreenWidth) e comece
F.Height: =
LongInt (F.Height) * LongInt (Tela. Altura)
div ScreenHeight;
F.Largura: =
LongInt (F.Width) * LongInt (Tela. Largura)
div ScreenWidth;
F.ScaleBy (Tela. Largura, largura de tela);
fim;
fim;
instagram story viewer