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

Configuração Do Monitor Em Execução


Guest Amarildo

Pergunta

Guest Amarildo

ola pessoal, estou necessitando que quando abrir o meu aplicativo ele automaticamente reconheceria a configuracao do monitor, tenho feito conforme segue abaixo, mas hoje deparei com um notbook com uma tela diferente no qual ficou tudo modificado meu form na tela. Caso quem saiba como trazer a tela a configuracao do monitor agradeceria

Implementation

const

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

ScreenHeight: LongInt = 600;

----> gostaria que jogasse automaticamente nestes dois campos acima a configuracao real do monitor

e ele automaticamente iria reconhecer e alterar a configuacao abaixo descrita

{$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;

scaleBy(screen.width, ScreenWidth);

end;

end;

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Amigo não sei fazer o que você realmente deseja mas tenho uma rotina que indica e muda a resolução do vídeo, segue ela abaixo se te ajudar em algo:

- Coloque um ListBox no form

- Modifique o OnCreate do form assim:

procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
  DevMode : TDevMode;
begin
  i := 0;
  while EnumDisplaySettings(nil,i,Devmode) do begin
  with Devmode do
  ListBox1.Items.Add(Format('%dx%d %d Colors',
  [dmPelsWidth,dmPelsHeight, 1 shl dmBitsperPel]));
  Inc(i);
  end;
end;
- Coloque um botão no form - Altere o evento OnClick do botão conforme abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
  DevMode : TDevMode;
begin
  EnumDisplaySettings(nil,Listbox1.ItemIndex,Devmode);
  ChangeDisplaySettings(DevMode,0);
end;

falou

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Vivendo e Aprendendo, na verdade gostaria de estar recebendo as informações nestes dois campos sem ter que inserir algum rotina à mais, caso voce conheça como fazer para que essas duas variaveis receba. Agradeço pela iniciativa e ajuda, um forte abraço

Implementation

const

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

ScreenHeight: LongInt = 600;

Link para o comentário
Compartilhar em outros sites

  • 0

cara acho que podemos pegar esta rotina que te passei e modifica-la porque se não estou enganado ela verifica qual é a resolução atual e ai é só atribuir para as suas variáveis...

na rotina que te passei tem duas propriedades que tb foram citadas pelo amigo s3c que são:

Screen.Width e Screen.Height

Acredito que você pode usar essa rotina e a sua juntas e atribuir esses valores destas propriedades para as suas variáveis...

OBS

Não testei.

falou

Link para o comentário
Compartilhar em outros sites

  • 0

Amarildo, pelo que você colocou nos posts entendi que você desenhou sua tela para as dimensões 800x600 e deseja manter o aspecto dela ao escaloná-la.

mas hoje deparei com um notbook com uma tela diferente no qual ficou tudo modificado meu form na tela.

Imagino que sejam as novas telas wide (??). Tentar manter o aspecto neste caso não será possivel já que a relação da primeira é 4:3 enquanto da segunda é aproximadamente 16:9 e nesta situação a melhor opção é calcular o fator de escala utilizando a altura (menor valor - para que parte da tela não fique fora da área de visualização).

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

ScreenHeight: LongInt = 600;

----> gostaria que jogasse automaticamente nestes dois campos acima a configuracao real do monitor

e ele automaticamente iria reconhecer e alterar a configuacao abaixo descrita

Estas constantes tipadas, só terão seus valores alterados através de atribuição explícita. Na verdade acredito que você não precise delas já que, como disse o colega s3c, você pode utilizar Screen.Height e Screen.Width e estas sim estão atualizadas com a resolução atual. Tanto que, utilizando a rotina abaixo, se você chamar este seu form a partir de outro ele ocupará toda a tela, dai você o fecha (não sai do programa), altera a resolução do vídeo e abrindo novamente ele ocupará toda a tela.

Verifique se o seu código alterado(abaixo) lhe dá o resultado esperado.

procedure TForm1.FormCreate(Sender: TObject);
var
  Fator :Double;
begin
  Scaled := true;
  if (Height <> Screen.Height) then
  begin
    Fator := Screen.Height /Height;
    ScaleBy(Screen.Height, Height);
    Width := Trunc(Width * Fator);
    Height := Trunc(Height *Fator);
  end;
end;

[]s

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
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...