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

(Resolvido) Tela Desktop X Laptop - Lazarus


Lazaruz

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

Veja esses links

https://www.devmedia.com.br/forum/ajustar-todos-os-forms-a-resolucao-de-video/382092

https://www.google.com.br/search?source=hp&ei=QU_zXs_sH7m65OUP2cS9kAw&q=tela+auto+ajustável+delphi&o que=tela+autoajustavel+delp&gs_lcp=CgZwc3ktYWIQARgCMgcIIRAKEKABMgcIIRAKEKABMgQIIRAKOgUIABCDAToFCAAQsQM6AggAOgQIABAKOggIABAWEAoQHjoGCAAQFhAeOggIABAIEA0QHjoFCCEQoAFQihZY-JMBYPSpAWgDcAB4AIABygGIAaYZkgEGMC4yNC4xmAEAoAEBqgEHZ3dzLXdperABAA&sclient=psy-ab

ou


Ajuste automatico da resolução  ( FUNCIONA PERFEITAMENTE ) OK

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 )

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

  Olá , Ricardo agradeço a ajuda. Neste meio tempo estive tetando em outro modo mais simples  que o Lazarus proporciona, mas vou registrar aqui os seu esforços e guardar para um hora que meus teste não surtirem efeito desejado.

       Consegui trocar o Lazarus 1.6 para 2.0.8  e este já traz alguns parâmetros bate pronto no Options->Project_>Usar escalonamento e Resurso de manifesto e  Scaled nos forms =  true. Com isso pelo menos até agora deu certo . Vou continuando aqui com meus testes.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe, Jhonas voce fez referencia ao Ricardo.

Testei a solução do parceiro e acabei adotando

a opção simples do próprio Lazarus conforme já descrito.

OBS.  No PC desenvolvedor deve estar nas configurações padrões de video inclusive aquele item que trata tamanho de letra 100%,125% etc.  No meu caso estava 125% e não dava certo quando eu levava o executável produzido para o lap-top.

   Com este ajuste funcionou normal e o executável ajusta certinho quando eu executo no lap -top.

 

Editado por Lazaruz
nova posicao.
Link para o comentário
Compartilhar em outros sites

  • 0

Num dos links que te passei tem um codigo que funciona assim:

voce monta os seus forms no seu computador usando a sua propria tela ...  vamos supor que voce esteja usando a resolução de 1024 X 768 ... então voce configura tudo para funcionar nessa resolução.

quando voce executar o seu programa em outra maquina e nela estiver usando uma resolução de  ( Ex: 1280 X 800 ) , o código vai alterar automaticamente ( assim que for executado o programa ) para a resolução que voce usou inicialmente ( 1024 X 768 )  e assim que o programa for fechado, a resolução da tela volta a ser a que estava sendo usada na maquina ( 1280 X 800 )

O código esta num dos links que te passei ...  veja se voce consegue achar

abraço

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...