Buscar

Ajuste automatico da resolução

Código

Configurando a resolução de vídeo
Autor:Ricardo de Abreu


Como tive muitos problemas em relação a configurações de vídeo resolvi criar este mini tutorial para que possam ajudar a quem estiver interessado .

Nota : Estas dicas que estão neste documento não são minhas apenas peguei na Internet e sites de programação  e adaptei conforme minha necessidade sendo assim cheguei em um padrão que qualquer pode adaptar seguindo o modelo que fiz


Set Screen Resolution

No delphi por padrão não existe esta função você irá precisar dela mais tarde , declare na USES  logo abaixo de {$R *.dfm}:

Não esqueça de usar a biblioteca do windows : Shellapi.

function SetScreenResolution(Width, Height: integer): Longint;
var
  DeviceMode: TDeviceMode;
begin
  with DeviceMode do begin
    dmSize := SizeOf(TDeviceMode);
    dmPelsWidth := Width;
    dmPelsHeight := Height;
    dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
  end;
  Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY);
end;

Declare as seguintes variáveis globais :
 
 oldwidth:integer;
 OldHeight :integer;
 Auxwidth:integer;
Auxheight:integer ;


No evento On Create do Form principal ponha o seguinte código :

var Mens: String;

begin
 EnableMenuItem(GetSystemMenu(handle, False), SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
begin

  if (Screen.Width  =1024) and (Screen.Height = 768) then
  begin
  Auxwidth :=1024;
  Auxheight :=768;
  end;

 if (Screen.Width <> 1024) and (Screen.Height <> 768) then
 begin

    OldWidth := Screen.Width;
    OldHeight := Screen.Height;
    Auxwidth:=oldwidth;
     Auxheight:=OldHeight;

    Mens := 'O Programa "Seu programa -"irá ajustar sua resolução de vídeo  para 1024 X 768'+#13;
    Mens := Mens + 'automaticamente para uma melhor visualisação, mas não se preocupe pois ao termino de uso ,' + #13;
    Mens := Mens + ' ele retornará sua resolução novamente. Muito obrigado...';
    MessageBox(Self.Handle, PChar(Mens), 'Ajuste de Vídeo', MB_OK + MB_ICONWARNING);
    SetScreenResolution(1024, 768);
 end;
end;


end;

Explicando :

Desenvolvi este programa em uma resolução 1024X768 (tamanho do Forms) mas se por exemplo o usuário estiver com uma resolução diferente seja ele maior ou menor  que 1024  ele seta para 1024  e quando ele encerra o programa ele volta para resolução anterior :

Detalhes:

Ao criar o form  o código faz a seguinte verificação ,
As variaveis  OldWidth   e  OldHeight recebem a resolução da tela atual depois testa as seguintes condições :

“Se for 1024  as variáveis auxiliares   Auxwidth e  Auxheight  recebem as resolução 1024 X768 “(Isto será usado com base na hora de fechar o form logo abaixo ).

Agora “Se for diferente de 1024 as as variáveis auxiliares  Auxwidth e  Auxheight  recebem agora o que as variáveis OldWidth   e  OldHeight  ou seja a resolução  de tela atual .

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Agora coloque um botão “sair “ ou no evento OnClose do seu form  e ponha o seguinte código :


If (Screen.Width = 1024)and(Auxwidth=1024)and(Screen.Height = 768)and(Auxheight=768) then
begin
  Application.Terminate;
  end;
  If (Screen.Width = 1024)and(Auxwidth<>1024)and(Screen.Height = 768)and(Auxheight<>768) then

        if  (Application.MessageBox('Voltando para sua resolução antiga...','Ajustes Automaticos',MB_OK +MB_ICONWARNING)=ID_OK )then

         Begin
            OldWidth := 800  ;
            OldHeight := 600;
            SetScreenResolution(Auxwidth, Auxheigth);
        end;
                Application.Terminate;
end;

Explicando :

Ao fechar o form  o código verifica a resolução  atual e  verifica também as variáveis auxiliares – Auxwidth e AuxHeight

Detalhes

Após verificar a resolução de tela atual e as variáveis ele testa as seguintes condições :

“ Se a resolução e a variáveis auxiliares forem iguais ele termina a aplicação

“Se  a resolução for 1024 X768 (que o próprio programa determinou) e as variáveis forem diferentes ele volta para a resolução antiga ou seja volta para a resolução que estava antes de abrir o programa .


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Pode ser que alguém já tenha feito de forma diferente porém  foi a melhor  forma que achei para resolver este problema .
Volto a resaltar que não fui eu que fiz estas dicas ,não por falta de capacidade , apenas fui coletando dicas ali,aqui e alterei algumas em certas tive  que mudar o código adaptando assim de um melhor maneira para resolver meu problema .
Insisto em dizer isto para que os autores das dicas possam dizer que estou sendo adepto do CTRL+c e CTRL +v , e tentado ganha créditos .(Foram tantos que pesquisei que não lembro o nome de todos )

Agradeço ao conteúdo dos seguintes sites :

www.planetadelphi.eti.br
www.activedelphi.com.br

Espero que tenha ajudado alguém
Muito obrigado

 
            Ricardo de Abreu
            Analista de Suporte
  rabreu@bredasjc.com.br
ricardodeabreu@hotmail.com
 

Publicidade

Vote na dica




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes da dica

Categoria: Forms
Adicionada dia: 11/05/07
Por: Ricardo De Abreu
Visualizada: 15224 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009