 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
calel Novato

Registrado: Terça-Feira, 18 de Mai de 2010 Mensagens: 63
|
Enviada: Sáb Jul 24, 2010 4:01 pm Assunto: Resolução de tela no delphi |
|
|
Estive vasculhando os sites sobre como resolver o problema de resolução de tela. Meus projetos em delphi são feitos em resolução acima dos padrões 800x600 e 1024x800 pixels. Nestas resoluções as telas ficam "comidas". Achei aqui no Forum de autoria do Sr. usr2:
Ajustar o Form à Resolução de Video. O código abaixo:
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;
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;
Para somente um form tudo bem e para os demais como fica? Lembrando que meus forms não tem herança entre eles.
Obrigado |
|
Voltar ao Topo |
|
 |
CENTURYINF Membro Junior

Registrado: Sexta-Feira, 19 de Fevereiro de 2010 Mensagens: 364
|
Enviada: Dom Jul 25, 2010 8:47 pm Assunto: Re: Resolução de tela no delphi |
|
|
Ola , vi esta rotina mas não testei...
Como mudar resolução de video via programação..
Analise e faça suas alteraçoes.
1º 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;
espero que ajude... |
|
Voltar ao Topo |
|
 |
arenasam Novato

Registrado: Sexta-Feira, 2 de Outubro de 2009 Mensagens: 80
|
Enviada: Seg Jul 26, 2010 8:39 am Assunto: |
|
|
Faz uma procedure e chama ela em todos os formulários! |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|