Como configurar Ancoras em Forms par aq o mm se ajuste a dif. config. de vídeos ?
Olá, boa tarde!
Sou Desenv. Delhoi-7 + FireBird-2.1 + DBExpress
Testei varios aplicativos de PDV p/
Mercado e observei q ao alterar a resolução do vídeo o mesmo se alto
ajustava e os campos tambem sao redimensionados.
Pois meus Form sao confecionados
para um padrao 800x600 e quando mudo a resolução o mesmo não se ajuta
ao tamanho da tela, pois se eu clicar em tela cheia os campos ficam
desajustados, ficam alinhados a esquerda.
Consegui algumas informações, mas ainda estou com algumas dúvidas:
--------------------------------------------------------------------
Ajuste também as âncoras dos componentes.
Os da esquerda coloque ancoras apenas na esquerda, os da direita na direita.
Os de cima coloque a ancora top, e assim por diante.
Crie uma única form e faça com que as outras sejam descendentes dela.
--------------------------------------------------------------------
1-Para cada tipo de Resolução vou fazer uma configuracao?
2-Como saber todos os tipos de Resolução de vídeo?
3-Como fazer os calculos, para q o componente se ajuste a nova configuração?
tem mais, ma vou ficar por aqui.
Desde já meus agradecimentos, a quem puder ajuda-me.
sem mais,
ANT.CARLOS/SP
Antonio Jesus
Curtidas 0
Respostas
Vitor Rubio
24/04/2010
Você deve desenhar a form na resolução mínima possível.
Configure as propriedades defaultmonitor das forms para dmDesktop ou a que melhor se ajustar ao padrão que você deseja
a propriedade position tem vários valores possíveis. Alguns priorizam a posição em detrimento dos tamanhos, outros os tamanhos em detrimento da posição. Se desejar que sempre aparece no centro da área visível do desktop, use poDesktopCenter
Dependendo do tipo de form que você está fazendo, fazer com que ela inicie maximizada ajuda.
Se você quiser que os componentes preencham as laterais esquerda e direita da tela, ao maximizar, coloque a propriedade anchor dos componentes da esquerda como akleft+aktop, e os da direita como akright+ajtop
se quiser que o componente cresça em comprimento, horizontalmente, coloque a propriedade anchor dos componentes da esquerda como akleft+aktop, e os da direita como akright+ajtop+akright assim só um dos lados cresce
faça todos os componentes herdarem a fonte da form, com a propriedade parent font setada como true, assim você configura a fonte apenas uma vez.
para detectar a resolução do monitor corrente, supondo que trabalhe com multimonitor, use o código:
procedure TForm1.FormPaint(Sender: TObject);
begin
Self.Caption := '[Resolução: '+
inttostr(Screen.MonitorFromWindow(self.Handle).Width) + ' x ' +
inttostr(Screen.MonitorFromWindow(self.Handle).Height) + ']';
end;
você pode assim mudar a fonte de acordo com a resolução, assim como mudar o tamanho e posição dos componentes.
com este código sua form fica com o mesmo tamanho (em centímetros) que teria em qualquer resolução.
procedure TForm1.FormPaint(Sender: TObject);
var
pctw, pcth: double;
begin
Self.Caption := '[Resolução: '+
inttostr(Screen.MonitorFromWindow(self.Handle).Width) + ' x ' +
inttostr(Screen.MonitorFromWindow(self.Handle).Height) + ']';
//supondo que a resolução inicial seja 800 x 600, que a fonte inicial
//seja 8 e que os tamanhos iniciais da form sejam 300x200
//vamos capturar o índice de crescimento da resolução e aplicar a cada
//dimensão da form, e das fontes e componentes
pctw := Screen.MonitorFromWindow(self.Handle).Width/800;
pcth := Screen.MonitorFromWindow(self.Handle).Height/600;
Self.Width := trunc(300 * pctw);
Self.Height := trunc(200 * pcth);
end;
Crie uma form ancestral para você com as propriedades AlturaPadrao e LarguraPadrao, que em resolução mínima são iguais aos width e heigth, mas que esses crescem conforme a resolução, e monte seu padrão.
Faça o mesmo com os componentes, esta é a parte mais difícil. *
Use panels, com as propriedades anchor e align confiugradas corretamente para preencher espaços vazios.
*crie um método para ajustar automaticamente o tamanho e posição dos componentes de modo a preencher toda a tela, deixando respiros. Comece pelas 4 primeiras dicas e termine por aí, que é a parte mais difícil.
Configure as propriedades defaultmonitor das forms para dmDesktop ou a que melhor se ajustar ao padrão que você deseja
a propriedade position tem vários valores possíveis. Alguns priorizam a posição em detrimento dos tamanhos, outros os tamanhos em detrimento da posição. Se desejar que sempre aparece no centro da área visível do desktop, use poDesktopCenter
Dependendo do tipo de form que você está fazendo, fazer com que ela inicie maximizada ajuda.
Se você quiser que os componentes preencham as laterais esquerda e direita da tela, ao maximizar, coloque a propriedade anchor dos componentes da esquerda como akleft+aktop, e os da direita como akright+ajtop
se quiser que o componente cresça em comprimento, horizontalmente, coloque a propriedade anchor dos componentes da esquerda como akleft+aktop, e os da direita como akright+ajtop+akright assim só um dos lados cresce
faça todos os componentes herdarem a fonte da form, com a propriedade parent font setada como true, assim você configura a fonte apenas uma vez.
para detectar a resolução do monitor corrente, supondo que trabalhe com multimonitor, use o código:
procedure TForm1.FormPaint(Sender: TObject);
begin
Self.Caption := '[Resolução: '+
inttostr(Screen.MonitorFromWindow(self.Handle).Width) + ' x ' +
inttostr(Screen.MonitorFromWindow(self.Handle).Height) + ']';
end;
você pode assim mudar a fonte de acordo com a resolução, assim como mudar o tamanho e posição dos componentes.
com este código sua form fica com o mesmo tamanho (em centímetros) que teria em qualquer resolução.
procedure TForm1.FormPaint(Sender: TObject);
var
pctw, pcth: double;
begin
Self.Caption := '[Resolução: '+
inttostr(Screen.MonitorFromWindow(self.Handle).Width) + ' x ' +
inttostr(Screen.MonitorFromWindow(self.Handle).Height) + ']';
//supondo que a resolução inicial seja 800 x 600, que a fonte inicial
//seja 8 e que os tamanhos iniciais da form sejam 300x200
//vamos capturar o índice de crescimento da resolução e aplicar a cada
//dimensão da form, e das fontes e componentes
pctw := Screen.MonitorFromWindow(self.Handle).Width/800;
pcth := Screen.MonitorFromWindow(self.Handle).Height/600;
Self.Width := trunc(300 * pctw);
Self.Height := trunc(200 * pcth);
end;
Crie uma form ancestral para você com as propriedades AlturaPadrao e LarguraPadrao, que em resolução mínima são iguais aos width e heigth, mas que esses crescem conforme a resolução, e monte seu padrão.
Faça o mesmo com os componentes, esta é a parte mais difícil. *
Use panels, com as propriedades anchor e align confiugradas corretamente para preencher espaços vazios.
*crie um método para ajustar automaticamente o tamanho e posição dos componentes de modo a preencher toda a tela, deixando respiros. Comece pelas 4 primeiras dicas e termine por aí, que é a parte mais difícil.
GOSTEI 0