Ir para conteúdo
Fórum Script Brasil
  • 0

Redimencionar Tudo


juniorboll

Pergunta

To co o probleminha que quando todos vao avansando acabam deparando com ele, to com o problema de redimencionamento, aquele de quando você vai aumentar u diminuir o seu form em tempo de execução fica tudo esquisito pois o resto dos objetos não redimencionam com o form, queria saber como eu faço isso? para quando aumentar o form as coisas fiquem pelo menos melhores visualizadas.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest --Jonas --

Resolução de Vídeo:

Quando criamos formulários, as vezes é útil escrever um código para que a tela e todos os seus objetos sejam mostrados no

mesmo tamanho, não importando qual a resolução da tela. Aqui esta um código que mostra como isso é feito:

Implementation

const
ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
ScreenHeight: LongInt = 600;

{$R *.DFM}

procedure TForm1.FormCreate (Sender: Tobject);
begin

   scaled := true;

   if (screen.width <> ScreenWidth) then

   begin

       height := longint(height) * longint(screen.height) DIV ScreenHeight;

       width := longint(width) * longint(screen.width) DIV ScreenWidth;

       scaleyBy(screen.width, ScreenWidth);

   end;

end;



// Agora, você vai querer checar, se o tamanho dos fontes(de letra) estão OK. Antes de trocar p tamanho do fonte, você precisará ter

// certeza de que o objeto realmente tem a propriedade fonte pela checagem da RTTI. Isso pode ser feito assim:


USES tyinfo; {Add this to your USES statement.}

var
i:integer;

begin

   for i := componentCount - 1 downto 0 do

   with components[i] do

   begin

       if GetPropInfo(ClassInfo, ´font´) <> nil then

       font.size := (NewFormWidth DIV OldFormWidth) * font.size;

   end;

end;


{Esta é a maneira longa de fazer a mesma coisa}

var
i:integer;
p:PPropInfo;
begin

   for i := componentCount - 1 downto 0 do

   with components [i] do

   begin

       p := GetPropInfo (ClassInfo, ´font´);

       if assigned (p) then

       font.size := (NewFormWidth DIV OldFormWidth) * font.size;

   end;

end;

Atenção: Nem todos os objetos tem a propriedade FONT. Isso deve ser o suficiente para você começar.

Atenção: A seguir, algumas dicas para ter em mente quando representar aplicações Delphi (formulários) em diferentes resoluções

de Tela:

* Decida antecipadamente, na etapa de criação do formulário, se ele será escalável ou não. A vantagem de um não escalável é

que nada muda em tempo de execução. A desvantagem é equivalente (seu formulário pode ser muito pequeno ou grande para

alguns sistemas se nào for usada escala).

* Se você não for usar formulário escalável, configure o set scaled to False.

* Ou então, configure a propriedade scaled do formulário para True.

* Configure a propriedade AutoScroll para False. AutoScroll = True quer dizer "não mexa no tamanho do frame do formulário em

tempo de execução", o que não parece bom quando o conteúdo do formulário muda de tamanho.

* Configure a fonte do formulário para uma True Type escalável, como a Arial MS. San Serif é uma boa alternativa, mas lembre que ainda é uma fonte bitmapped. Só a Arial dará uma fonte dentro de um pixel da altura desejada.ATENÇÃO: Se a fonte usada em uma aplicação não estiver instalada no computador, o Windows selecionará uma fonte alternativa da mesma família para utilizar. O tamanho dessa fonte pode não corresponder ao da fonte original, podendo causar problemas.

* Configure a propriedade position do formulário para uma opção diferente de poDesigned. poDesigneddeixa o formulário onde você o deixou ( no design Time), o que sempre termina fora da margem, à esquerda da minha tela 1280 x 1024 - e completamente fora da tela 640 x 480.

* Não amontoe controles no formulário - deixe pelo menos 4 pixels entre else, para que uma mudança de um pixel nas margens

(devido a apresentação em escala) não mostre controles sobrepostos.

* Para labels de uma linha alinhadas ã esquerda ou à direita, configure o AutoSize para True. Para outras formas de alinhamento

configure o AutoSize para False.

* Tenha certeza de que há espaço em branco suficiente num componente de labels para alterações no tamanho da fonte - um

espaço de 25% do comprimento da linha de caracteres mostrada é um pouco a mais do que se precisa, mas é mais seguro.

(Você vai precisar de um espaço equivalente a 30% de espansão para string labels se você pretende traduzir sua aplicação para

outra linguagem). Se o Autosize estiver em False, tenha certeza de que realmente configurou o tamanho do label corretamente.

* Se o Autosize estiver em True, esteja certo de que há espaço suficiente para que o label se amplie.

* Em labels de múltiplas linhas ou de termos ocultos, deixe pelo menos uma linha em branco na base. Isso vai ser necessário

para incluir o que estiver sobrando quando o texto for oculto de maneira diferente, pela mudança do tamanho da fonte com a

escala. Não assuma isso porque está usando fontes grandes. Você não tem que deixar sobra de texto - as fontes (grandes) de

outros usuários podem ser maiores que as suas!

* Tenha cuidado quando abrir um projeto em IDEs com resoluções diferentes. Assim que o formulário for aberto, sua propriedade

Pixel per Inch será moditificada, e gravada para o DFM se você salvar o projeto. É melhor testar a aplicação rodando sozinho, e

editar o formulário em apenas uma resolução. Editar em várias resoluções e tamanhos de fonte provoca problemas de fluxo e

tamanho dos componentes.

* Falando em fluxo de componentes, não represente o formulário em escala muitas vezes, quando estiver sendo criado ou quando

tiver sendo executado. Cada escala introduz erros de roundoff que se acumulam muito rapidamente, uma vez que as coordenadas

são rigorosamente interias. Quando valores fracionários forem retirados das origens e tamanhos do controle com cada sucessiva

representação em escala, os conttroles parecerão deslizar para noroeste e ficar menores. Se você quer deixar seus usuários

representarem o formulários em escala quantas vezes quiserem, comece com um formulário recentemente criado para que erros

de escala não se acumulem.

* Definitivamente, não mexa na propriedade Pixel pre Inch do formulário.

* Em geral, não é necessário criar formulários em uma resolução específica, mas é essencial que você os revise em 640 x 480

com fontes pequenas e/ou grandes, e em alta resolução com fontes pequenas e/ou grandes antes de liberar suas aplicações. Isso

deverser parte de sua lista de conferência para testar a compatibilidade do sistema regularmente.

* Preste bastante atenção em todos os componentes que são basicamamente TMemo de uma linha - com oTDBLookupCombo. O

controle de edição (multi-linhas) do Windows sempre mostra apenas linhas inteiras de texto. Se o controle for muito curto para

sua fonte, um TMemo não mostrará coisa alguma, e um TEdit mostrará um pedaço do texto. É melhor fazer esses componentes

um pouco maiores do que deixá-los um pixel menores e não aparecer nada do texto.

* Tenha em mente que toda representação em escala é proporcional à diferença da altura da fonte entre o modo de execução e o

modo de desenho, NÃO à resolução ou ao tamanho do monitor. Lembre também que as origens dos seus controles serão

alteradas quando o formulário for representado em escala. Você não pode aumentar componentes muito bem sem também

movê-los um pouco, novamente.

Editado por Micheus
É sempre conveniente citar a ref.: http://www.delphibr.com.br/mostradica.php?id=64
Link para o comentário
Compartilhar em outros sites

  • 0

juniorboll, além do já descrito acima, a partir do D7 (não sei se iniciou no 5 ou 6), os componentes visuais tem a propriedade Anchors, onde você define como ele se comporta no caso de um resize do seu form.

Não é um escalonamento, apenas um ajuste de dimensões. Você determina se as posições onde as coordenadas do seu componente ser fixarão em relação ao form, se à direita, esquerda, encima e/ou embaixo. O padrão é ficar fixo no canto superior esquerdo (Left e top = true; right e botton = false).

Para compreender como esta propriedade funciona, só tem um jeito: mexe com elas e redimensionar o form (em design-time), daí você vai saber em que situação este recurso é útil ou não.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...