Redimensionar form com componentes

Delphi

23/11/2010

Redimensionar um form e os objetos tipo edit, buttons, etc manter suas posições e tamanhos, ou seja, redimensionando junto.

É possível? Exemplo se possível aqui, preciso muito disso.
Frederico Brigatte***

Frederico Brigatte***

Curtidas 0

Melhor post

Wilson Junior

Wilson Junior

23/11/2010

Coloque um botão no formulário e altere a propriedade Anchors.akRight para True e redimencione o formulário, pode fazer isto em tempo de projeto.

Espero ter colaborado.
GOSTEI 2

Mais Respostas

Rodrigo Mattos

Rodrigo Mattos

23/11/2010

Amigo da uma olhada na propriedade Anchors, ele vai redimensionar se todos estiver marcados como TRUE, mas para ele não redimensionar você deixa akRight e akBottom como FALSE.


Espero ter Ajudado.
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Utilize a propriedade Anchors dos componentes.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Amigo da uma olhada na propriedade Anchors, ele vai redimensionar se todos estiver marcados como TRUE, mas para ele não redimensionar você deixa akRight e akBottom como FALSE.


Espero ter Ajudado.


Teria um exemplo simples para dispor? Agradeceria muito.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Utilize a propriedade Anchors dos componentes.

Espero ter colaborado.


Teria um exemplo simples para dispor? Agradeceria muito.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Coloque um botão no formulário e altere a propriedade Anchors.akRight para True e redimencione o formulário, pode fazer isto em tempo de projeto.

Espero ter colaborado.
Como assim, não entendi. Poderia fazer um exemplo para mim?
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Coloque um botão (TButton) no formulário e altere a propriedade Anchors.akRight para True (TButton.Anchors.akRight := True, o Object Inspector) e redimencione o formulário (altere o width), pode fazer isto em tempo de projeto.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Coloque um botão (TButton) no formulário e altere a propriedade Anchors.akRight para True (TButton.Anchors.akRight := True, o Object Inspector) e redimencione o formulário (altere o width), pode fazer isto em tempo de projeto.

Espero ter colaborado.



Então, como fazer isso em tempo de projeto? Faça um exemplo, por favor.
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Tempo de projeto = no momento em você está desenvolvendo o aplicativo
Tempo de execução = no momento em que o aplicativo está sendo executado.

Então para fazer isto em tempo de projeto, altere a propriedade conforme citado nos posts anteriores e altere o tamanho do formulário, caso queira fazer o mesmo em tempo de execução, altere a propriedade e execute o aplicativo e altere o tamanho do formulário.

Qualquer dúvida é só perguntar.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Tempo de projeto = no momento em você está desenvolvendo o aplicativo
Tempo de execução = no momento em que o aplicativo está sendo executado.

Então para fazer isto em tempo de projeto, altere a propriedade conforme citado nos posts anteriores e altere o tamanho do formulário, caso queira fazer o mesmo em tempo de execução, altere a propriedade e execute o aplicativo e altere o tamanho do formulário.

Qualquer dúvida é só perguntar.

Espero ter colaborado.


Por favor, faça um demo por favor, tenho uma dificuldade nisso.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Tempo de projeto = no momento em você está desenvolvendo o aplicativo
Tempo de execução = no momento em que o aplicativo está sendo executado.

Então para fazer isto em tempo de projeto, altere a propriedade conforme citado nos posts anteriores e altere o tamanho do formulário, caso queira fazer o mesmo em tempo de execução, altere a propriedade e execute o aplicativo e altere o tamanho do formulário.

Qualquer dúvida é só perguntar.

Espero ter colaborado.


Por favor, faça um demo para mim, tenho uma dificuldade nisso. Pode ser com vários componentes?


GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Tempo de projeto = no momento em você está desenvolvendo o aplicativo
Tempo de execução = no momento em que o aplicativo está sendo executado.

Então para fazer isto em tempo de projeto, altere a propriedade conforme citado nos posts anteriores e altere o tamanho do formulário, caso queira fazer o mesmo em tempo de execução, altere a propriedade e execute o aplicativo e altere o tamanho do formulário.

Qualquer dúvida é só perguntar.

Espero ter colaborado.





Por favor, faça um demo para mim, tenho uma dificuldade nisso. Pode ser com vários componentes?

GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Me desculpe, mas não querendo ser grosso, mas você sabe programar??? Pois acho que você deveria ler algumas apostilas de delphi antes de postar determinadas perguntas. Pois lhe damos as respostas mais mastigadas e você ainda quer que façamos um "Demo". Aqui utilizamos "Demos" para conteúdos muito complexos. Talvez isto seja complexo para você, mas não saber alterar uma propriedade no "Object Inspector" é falta de conhecimento BÁSICO em programação com Delphi. Novamente, me desculpe, mas não estou sendo grosso, só quero que você entenda que talvez lendo alguma apostila, isto irá lhe ajudar em DIVERSOS conhecimentos.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Me desculpe, mas não querendo ser grosso, mas você sabe programar??? Pois acho que você deveria ler algumas apostilas de delphi antes de postar determinadas perguntas. Pois lhe damos as respostas mais mastigadas e você ainda quer que façamos um "Demo". Aqui utilizamos "Demos" para conteúdos muito complexos. Talvez isto seja complexo para você, mas não saber alterar uma propriedade no "Object Inspector" é falta de conhecimento BÁSICO em programação com Delphi. Novamente, me desculpe, mas não estou sendo grosso, só quero que você entenda que talvez lendo alguma apostila, isto irá lhe ajudar em DIVERSOS conhecimentos.

Espero ter colaborado.


É claro que sei, só que estou com essa dificuldade de fazer sistemas que funcionem em diversas configurações, para não ter que ficar redesenhando tudo novamente. E por falar nisso, também sei elogiar, o que você fez para mim dos botões, funcionou muito bem, obrigado, está de parabéns. Não sou um expert em Delphi, tenho muitas dúvidas, e essa é uma delas.

Até fim fiz o que você ensinou do Anchors, para mudar a propriedade.

Minha dúvida é essa, se dimensionar o form, os componentes que estão nele, vão dimensionar junto? Tem que fazer isso pra cada componente no OnCreate?
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Os componentes serão redimensinados conforme o Parent deles. Exemplo: imagine tendo um botão com suas ancôras alteradas para se redmencionar: 1- se este botão está dentro do formulário, e você aumentar o formulário, o botão irá se redimencionar; 2- se o botão está dentro de um TPanel, e o TPanel está dentro do formulário, se você redimencionar o formulário, o botão não irá se redimencionar, pois o Parent dele é o TPanel e não o formulário, ou seja, para este caso se o TPanel for redimencionado o botão também será redimencionado.

Você deve alterar as ancôras para cada componente que você deseja redimencionar. Não necessariamente você precisa colocar no OnCreate, basta você alterar na propriedade do componente.

Obrigado pelo elogio e me desculpe novamente, é que diversas pessoas tem preguiça de pensar e querem que as outras pessoas pensem por elas, assim estas pessoas nunca irão se tornar desenvolvedores e sim, méros copiadores de códigos.
Acho que faltou um pouco de "diálogo" entre os tópicos para entendermos o que você queria realmente.
Mas qualquer coisa é só perguntar, estamos todos aqui para nos ajudar.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Os componentes serão redimensinados conforme o Parent deles. Exemplo: imagine tendo um botão com suas ancôras alteradas para se redmencionar: 1- se este botão está dentro do formulário, e você aumentar o formulário, o botão irá se redimencionar; 2- se o botão está dentro de um TPanel, e o TPanel está dentro do formulário, se você redimencionar o formulário, o botão não irá se redimencionar, pois o Parent dele é o TPanel e não o formulário, ou seja, para este caso se o TPanel for redimencionado o botão também será redimencionado.

Você deve alterar as ancôras para cada componente que você deseja redimencionar. Não necessariamente você precisa colocar no OnCreate, basta você alterar na propriedade do componente.

Obrigado pelo elogio e me desculpe novamente, é que diversas pessoas tem preguiça de pensar e querem que as outras pessoas pensem por elas, assim estas pessoas nunca irão se tornar desenvolvedores e sim, méros copiadores de códigos.
Acho que faltou um pouco de "diálogo" entre os tópicos para entendermos o que você queria realmente.
Mas qualquer coisa é só perguntar, estamos todos aqui para nos ajudar.

Espero ter colaborado.


Tudo bem, foi erro de minha parte não ser claro no que quero. Peço desculpa pela amolação. E que as vezes os mais experientes falam uma linguagem mais profissional, eu ainda estou no caminho, mas chego lá.

Mas agora entendi o que vc explicou ai sobre redimensionar forms. Vou explicar melhor o que quero, assim fica mais de entender:

Hoje, devido a demanda de monitores e placas de video não sabemos ao certo que resolução o usuário está usando. Queria , fazer um sistema que se adeque as configurações que o usuário está usando, ou seja, fazer com os forms não fiquem grande demais ou pequenos, ao ponto de criar as barras de rolagem.  É possível fazer isso? Se sim, qual sua sugestão? Desculpa novamente.
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Olha Frederico, depende muito do que a sua aplicação irá fazer.
Geralmente eu defino um tamanho mínimo (1024 x 768) e coloco como requisito do software.
Já para alguns formulários, eu os defino como "WindowState = wsMaximized" e coloco os campos com as suas devidas ancôras, mas não automaticamente, pois como disse, ão são todos os formulários que eu necessito auto-ajustar.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Olha Frederico, depende muito do que a sua aplicação irá fazer.
Geralmente eu defino um tamanho mínimo (1024 x 768) e coloco como requisito do software.
Já para alguns formulários, eu os defino como "WindowState = wsMaximized" e coloco os campos com as suas devidas ancôras, mas não automaticamente, pois como disse, ão são todos os formulários que eu necessito auto-ajustar.

Espero ter colaborado.


E como vc define isso no código? Nunca fiz assim. Sempre fazia com o padrão do delphi e vim percebendo ao longo do tempo a bagunça que ficava. Faço sempre formulários de cadastros simples e uso também Maximizado. Entende? E também nunca trabalhei com âncoras, por isso insisti no exemplo. Não quis ser chato. Quero fazer uma aplicação dinâmica.
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Como lhe falei, não são todos os formulários que utilizo, então para os poucos que utilizo, eu altero as propriedades de cada componente no "Object inpector" mesmo, ou seja, não escrevo código, apenos altero as propriedades de cada componente.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Como lhe falei, não são todos os formulários que utilizo, então para os poucos que utilizo, eu altero as propriedades de cada componente no "Object inpector" mesmo, ou seja, não escrevo código, apenos altero as propriedades de cada componente.

Espero ter colaborado.


Fiz um teste aqui e agora to entendendo como a ancora trabalha.

Coloquei um edit e deixei na ancora akLeft := True e akRight := False, mas pelo Object Inspector. Arrastei o form e funcionou, ele acompanha. É só saber como funciona :

akLeft
akTop
akRight
akBottom

É isso, né?

Para deixar em tempo de execução, não estou conseguindo fazer.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Como lhe falei, não são todos os formulários que utilizo, então para os poucos que utilizo, eu altero as propriedades de cada componente no "Object inpector" mesmo, ou seja, não escrevo código, apenos altero as propriedades de cada componente.

Espero ter colaborado.


Fiz um teste aqui e agora to entendendo como a ancora trabalha.

Coloquei um edit e deixei na ancora akLeft := True e akRight := False, mas pelo Object Inspector. Arrastei o form e funcionou, ele acompanha. É só saber como funciona :

akLeft
akTop
akRight
akBottom

É isso, né?

Para deixar em tempo de execução, não estou conseguindo fazer.


Agora estou com o seguinte problema:

Quando uso apenas um edit e altero as propriedades Anchor pelo Object Inspect como está descrito acima, funciona direitinho. Ao acrescentar um label e alterar as propriedades Anchor, o label não acompnha o edit.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Como lhe falei, não são todos os formulários que utilizo, então para os poucos que utilizo, eu altero as propriedades de cada componente no "Object inpector" mesmo, ou seja, não escrevo código, apenos altero as propriedades de cada componente.

Espero ter colaborado.



Fiz um teste aqui e agora to entendendo como a ancora trabalha.

Coloquei um edit e deixei na ancora akLeft := True e akRight := False, mas pelo Object Inspector. Arrastei o form e funcionou, ele acompanha. É só saber como funciona :

akLeft
akTop
akRight
akBottom

É isso, né?

Para deixar em tempo de execução, não estou conseguindo fazer.


Agora estou com o seguinte problema:

Quando uso apenas um edit e altero as propriedades Anchor pelo Object Inspect como está descrito acima, funciona direitinho. Ao acrescentar um label e alterar as propriedades Anchor, o label não acompnha o edit.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Como lhe falei, não são todos os formulários que utilizo, então para os poucos que utilizo, eu altero as propriedades de cada componente no "Object inpector" mesmo, ou seja, não escrevo código, apenos altero as propriedades de cada componente.

Espero ter colaborado.



Fiz um teste aqui e agora to entendendo como a ancora trabalha.

Coloquei um edit e deixei na ancora akLeft := True e akRight := False, mas pelo Object Inspector. Arrastei o form e funcionou, ele acompanha. É só saber como funciona :

akLeft
akTop
akRight
akBottom

É isso, né?

Para deixar em tempo de execução, não estou conseguindo fazer.


Agora estou com o seguinte problema:

Quando uso apenas um edit e altero as propriedades Anchor pelo Object Inspect como está descrito acima, funciona direitinho. Ao acrescentar um label e alterar as propriedades Anchor, o label não acompnha o edit.

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Como lhe falei, não são todos os formulários que utilizo, então para os poucos que utilizo, eu altero as propriedades de cada componente no "Object inpector" mesmo, ou seja, não escrevo código, apenos altero as propriedades de cada componente.

Espero ter colaborado.



Fiz um teste aqui e agora to entendendo como a ancora trabalha.

Coloquei um edit e deixei na ancora akLeft := True e akRight := False, mas pelo Object Inspector. Arrastei o form e funcionou, ele acompanha. É só saber como funciona :

akLeft
akTop
akRight
akBottom

É isso, né?

Para deixar em tempo de execução, não estou conseguindo fazer.


Agora estou com o seguinte problema:

Quando uso apenas um edit e altero as propriedades Anchor pelo Object Inspect como está descrito acima, funciona direitinho. Ao acrescentar um label e alterar as propriedades Anchor, o label não acompnha o edit.

GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Para você saber como funciona as ancôras, você pode ficar fazendo testes com elas, pois a mesma tem 4 opções, sendo que pode ter várias combinações. Por isto lhe disse para fazer testes em tempo de projeto.
Mas você está indo pelo caminho certo.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Para você saber como funciona as ancôras, você pode ficar fazendo testes com elas, pois a mesma tem 4 opções, sendo que pode ter várias combinações. Por isto lhe disse para fazer testes em tempo de projeto.
Mas você está indo pelo caminho certo.

Espero ter colaborado.


Então, mas com um edit até fiz funcionar. O problema é quando coloca outro, ai estou tendo dificuldade, é assim mesmo?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Para você saber como funciona as ancôras, você pode ficar fazendo testes com elas, pois a mesma tem 4 opções, sendo que pode ter várias combinações. Por isto lhe disse para fazer testes em tempo de projeto.
Mas você está indo pelo caminho certo.

Espero ter colaborado.


Então, mas com um edit até fiz funcionar. O problema é quando coloca outro, ai estou tendo dificuldade, é assim mesmo?


Agora com dois, quando dimensiono esquerda e direita, funciona. O problema está quando faço pra cima e para baixo. Quando subo, o edit2 no caso, vai se aproximando do edit1 até ficar em cima do mesmo. A única propriedade que está True é akLeft nos dois edits.
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Neste caso você terá que controlar "no braço", ou seja, no evento OnResize do Form você terá que ajustar a propriedade "Top" do seu Edit2.
Geralmente utilizo o redimensinamento para a largura dos componentes e não utilizo para a altura.
Caso queira aumentar proporcionalmente todos os componentes conforme a tela, você terá que fazer "no braço", pois eu não conheço nenhum programa/componente que faça isto.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Neste caso você terá que controlar "no braço", ou seja, no evento OnResize do Form você terá que ajustar a propriedade "Top" do seu Edit2.
Geralmente utilizo o redimensinamento para a largura dos componentes e não utilizo para a altura.
Caso queira aumentar proporcionalmente todos os componentes conforme a tela, você terá que fazer "no braço", pois eu não conheço nenhum programa/componente que faça isto.

Espero ter colaborado.


Só para finalizar, porque acho que consegui aqui, como fazer um programa em uma determinada resolução, como vc mesmo mencionou, por exemplo, utilizo 1280x1024, quero fazer em 800x600, tenho que mudar pelo windows? Essa é para encerrar.
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Não, você pode fazer o seu sistema com as telas em tamanho mínimo de 800x600 (800x570 por causa da barra de tarefas do windows), ou seja, como requisito para utilizar o seu sistema o usuário deverá ter resolução de 800x600.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Neste caso você terá que controlar "no braço", ou seja, no evento OnResize do Form você terá que ajustar a propriedade "Top" do seu Edit2.
Geralmente utilizo o redimensinamento para a largura dos componentes e não utilizo para a altura.
Caso queira aumentar proporcionalmente todos os componentes conforme a tela, você terá que fazer "no braço", pois eu não conheço nenhum programa/componente que faça isto.

Espero ter colaborado.


Só para finalizar, porque acho que consegui aqui, utilizei GroupBox.

Como fazer um programa em uma determinada resolução, como vc mesmo mencionou, por exemplo, utilizo 1280x1024, quero fazer em 800x600, tenho que mudar pelo windows? Essa é para encerrar.

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Neste caso você terá que controlar "no braço", ou seja, no evento OnResize do Form você terá que ajustar a propriedade "Top" do seu Edit2.
Geralmente utilizo o redimensinamento para a largura dos componentes e não utilizo para a altura.
Caso queira aumentar proporcionalmente todos os componentes conforme a tela, você terá que fazer "no braço", pois eu não conheço nenhum programa/componente que faça isto.

Espero ter colaborado.


Só para finalizar, porque acho que consegui aqui, utilizei GroupBox.

Como fazer um programa em uma determinada resolução, como vc mesmo mencionou, por exemplo, utilizo 1280x1024, quero fazer em 800x600, tenho que mudar pelo windows? Essa é para encerrar.


GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Para todos que estao participando deste tópico tenho aqui uma unit que eu uso em meus sistemas, espero que ajude a todos.

unit unit2;

interface
uses
StdCtrls,
Controls,
Forms
;

procedure CtrlResize(var Sender: TForm); export;

implementation

procedure CtrlResize(var Sender: TForm);
//Aqui vc especifica a resolução que vc
//desenvolveu o aplicativo
const
iWidth = 800;
iHeight = 600;

var i : Integer;

begin
with Sender do
for i := 0 to ComponentCount -1 do
begin { Varre todos os componentes do form que possam ser redefinidos (classe TWinControl) }
if Components[i] is TWinControl then
begin { Redefine os componentes em proporção ao original }
TWinControl(Components[i]).Width := Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TWinControl(Components[i]).Height := Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TWinControl(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TWinControl(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end
else
if Components[i] is TLabel then
begin { Redefine os componentes em proporção ao original }
TLabel(Components[i]).Width := Canvas.TextWidth(TLabel(Components[i]).Caption); // Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TLabel(Components[i]).Height := Canvas.TextHeight(TLabel(Components[i]).Caption); // Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TLabel(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TLabel(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end;
end;

//Para não alterar o tamanho e posição do form
//Comente as linhas abaixo
(*
{ Redefine o Formulário }
Sender.Width := Round(Sender.Width * (Screen.Width / iWidth));
Sender.Height := Round(Sender.Height * (Screen.Height / iHeight));
Sender.Top := Round(Sender.Top * (Screen.Height / iHeight));
Sender.Left := Round(Sender.Left * (Screen.Width / iWidth));
*)

{ Altera o tamanho da Fonte do Formulário }
Sender.Font.Size := Round(Sender.Font.Size * (Screen.Height / iHeight));
end;


end.
{*
//Exemplo de como usar
//Declare na seção uses do Form a unit sCtrlResize;

procedure TfrmCadEmpresas.FormShow(Sender: TObject);
begin
sCtrlResize.CtrlResize(TForm(frmCadEmpresas));
end;

*}


GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Para todos que estao participando deste tópico tenho aqui uma unit que eu uso em meus sistemas, espero que ajude a todos.

unit unit2;

interface
uses
StdCtrls,
Controls,
Forms
;

procedure CtrlResize(var Sender: TForm); export;

implementation

procedure CtrlResize(var Sender: TForm);
//Aqui vc especifica a resolução que vc
//desenvolveu o aplicativo
const
iWidth = 800;
iHeight = 600;

var i : Integer;

begin
with Sender do
for i := 0 to ComponentCount -1 do
begin { Varre todos os componentes do form que possam ser redefinidos (classe TWinControl) }
if Components[i] is TWinControl then
begin { Redefine os componentes em proporção ao original }
TWinControl(Components[i]).Width := Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TWinControl(Components[i]).Height := Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TWinControl(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TWinControl(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end
else
if Components[i] is TLabel then
begin { Redefine os componentes em proporção ao original }
TLabel(Components[i]).Width := Canvas.TextWidth(TLabel(Components[i]).Caption); // Round(TWinControl(Components[i]).Width * (Screen.Width / iWidth));
TLabel(Components[i]).Height := Canvas.TextHeight(TLabel(Components[i]).Caption); // Round(TWinControl(Components[i]).Height * (Screen.Height / iHeight));
TLabel(Components[i]).Left := Round(TWinControl(Components[i]).Left * (Screen.Width / iWidth));
TLabel(Components[i]).Top := Round(TWinControl(Components[i]).Top * (Screen.Height / iHeight));
end;
end;

//Para não alterar o tamanho e posição do form
//Comente as linhas abaixo
(*
{ Redefine o Formulário }
Sender.Width := Round(Sender.Width * (Screen.Width / iWidth));
Sender.Height := Round(Sender.Height * (Screen.Height / iHeight));
Sender.Top := Round(Sender.Top * (Screen.Height / iHeight));
Sender.Left := Round(Sender.Left * (Screen.Width / iWidth));
*)

{ Altera o tamanho da Fonte do Formulário }
Sender.Font.Size := Round(Sender.Font.Size * (Screen.Height / iHeight));
end;


end.
{*
//Exemplo de como usar
//Declare na seção uses do Form a unit sCtrlResize;

procedure TfrmCadEmpresas.FormShow(Sender: TObject);
begin
sCtrlResize.CtrlResize(TForm(frmCadEmpresas));
end;

*}




Vou testar. Se quiser deixar que eu controle a resolução, iWidth = 800 e iHeight = 600 eu entrando com o valor da resolução no código é possível? Exemplo: 1280 x 1024
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

sim com certeza
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

sim com certeza



Exemplo:

iWidth = 800;
iHeight = 600;

iWidth = x;
iHeight = y;


edit1.text := x;
edit2.text := y;

Pode ser assim, né? É claro que a variável for inteira ou outro tipo, tem que usar strtoint, correto? Está certo o que fiz?
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Eu nao utilizei tantas formas diferentes assim, mas veja como seu sistema se comporta com esstes parametros.
Geralmente utilizo assim:

  iWidth = 800;
  iHeight = 600;
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Eu nao utilizei tantas formas diferentes assim, mas veja como seu sistema se comporta com esstes parametros.
Geralmente utilizo assim:

  iWidth = 800;
  iHeight = 600;



Deu erro aqui: sCtrlResize.CtrlResize(TForm(Form2));

//Exemplo de como usar
//Declare na seção uses do Form a unit sCtrlResize;

Criei dois Forms

No Form 1 coloquei o código que vc postou. Assim:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

procedure CtrlResize(var Sender: TForm); export;


implementation

Logo abaixo da {$R *.dfm} coloquei a procedure CtrlResize(var Sender: TForm);

Como está postado.

No Form 2 coloquei na Uses sCtrlResize:

procedure TForm2.FormShow(Sender: TObject);
begin
  sCtrlResize.CtrlResize(TForm(Form2));
end;

Deu o seguinte erro: [Fatal Error] Unit2.pas(7): File not found: 'sCtrlResize.dcu'

GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

O erro é bem simples, você nao deveria ter colocado outro form em seu projeto mas apenas incluido a unit, Explicando o uso de units:

Para você utilizar uma unit em qualquer sistema que vc estiver desenvolvendo você deverá ir até o menu project e no primeiro item Add to project e na janela que ira abrir selecionar a unit desejada. É bem provavel que depois deste procedimento você poderá utilizar este recurso. Abraços
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

O erro é bem simples, você nao deveria ter colocado outro form em seu projeto mas apenas incluido a unit, Explicando o uso de units:

Para você utilizar uma unit em qualquer sistema que vc estiver desenvolvendo você deverá ir até o menu project e no primeiro item Add to project e na janela que ira abrir selecionar a unit desejada. É bem provavel que depois deste procedimento você poderá utilizar este recurso. Abraços


Ok, então em vez de fazer um projeto eu faço um .pas. File - New - Unit e colo o que você postou, correto? Salvo com aquele nome lá que está no onShow do form onde quero por. É isso?

Abraços.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

estarei postando um fonte aqui para servir de estudos. Abraços

http://www.4shared.com/file/NC2JnckD/redimencionar.html

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

estarei postando um fonte aqui para servir de estudos. Abraços

http://www.4shared.com/file/NC2JnckD/redimencionar.html



Agora entendi. Tem Add a unit no projeto que estou fazendo no menu File do Delphi, correto?
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

estarei postando um fonte aqui para servir de estudos. Abraços

http://www.4shared.com/file/NC2JnckD/redimencionar.html



Agora entendi. Tem Add a unit no projeto que estou fazendo no menu File do Delphi, correto?



No menu Project-> Add to project e ai você seleciona a Unit.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

estarei postando um fonte aqui para servir de estudos. Abraços

http://www.4shared.com/file/NC2JnckD/redimencionar.html



Agora entendi. Tem Add a unit no projeto que estou fazendo no menu File do Delphi, correto?



No menu Project-> Add to project e ai você seleciona a Unit.


Ahhhh, entendi, é como se quisesse aproveitar uma unit que fiz de um projeto e adicionar em outro, isso meso, vou Project, Add to Project. Legal, isso né?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

estarei postando um fonte aqui para servir de estudos. Abraços

http://www.4shared.com/file/NC2JnckD/redimencionar.html



Agora entendi. Tem Add a unit no projeto que estou fazendo no menu File do Delphi, correto?



No menu Project-> Add to project e ai você seleciona a Unit.


Ahhhh, entendi, é como se quisesse aproveitar uma unit que fiz de um projeto e adicionar em outro, isso meso, vou Project, Add to Project. Legal, isso né?


Leonardo, só não entendi pq que está desligada essa procedure:

{*

//Exemplo de como usar
//Declare na seção uses do Form a unit sCtrlResize;

procedure TfrmCadEmpresas.FormShow(Sender: TObject);
begin
sCtrlResize.CtrlResize(TForm(frmCadEmpresas));
end;

*}

No projeto que for fazer tem que fazer assim como vc descreveu? Tem que usar no evento onShow no form que for usar e declarar na Uses sCtrlResize. Mas antes disso tem que fazer Project - Add to Project e adicionar a Unit 2 que poderia ser outro nome, é isso?
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

estarei postando um fonte aqui para servir de estudos. Abraços

http://www.4shared.com/file/NC2JnckD/redimencionar.html



Agora entendi. Tem Add a unit no projeto que estou fazendo no menu File do Delphi, correto?



No menu Project-> Add to project e ai você seleciona a Unit.


Ahhhh, entendi, é como se quisesse aproveitar uma unit que fiz de um projeto e adicionar em outro, isso meso, vou Project, Add to Project. Legal, isso né?


Leonardo, só não entendi pq que está desligada essa procedure:

{*

//Exemplo de como usar
//Declare na seção uses do Form a unit sCtrlResize;

procedure TfrmCadEmpresas.FormShow(Sender: TObject);
begin
sCtrlResize.CtrlResize(TForm(frmCadEmpresas));
end;

*}

No projeto que for fazer tem que fazer assim como vc descreveu? Tem que usar no evento onShow no form que for usar e declarar na Uses sCtrlResize. Mas antes disso tem que fazer Project - Add to Project e adicionar a Unit 2 que poderia ser outro nome, é isso?


o comentario no codigo da unite serviria como exemplo para chamada da unit Unit2 pode ser qualquer outro nome desde que você nao se perce em seu projeto, e o comentario da unit você pode apagar, como mencionei é apenas um exemplo do uso desta unit.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

estarei postando um fonte aqui para servir de estudos. Abraços

http://www.4shared.com/file/NC2JnckD/redimencionar.html



Agora entendi. Tem Add a unit no projeto que estou fazendo no menu File do Delphi, correto?



No menu Project-> Add to project e ai você seleciona a Unit.


Ahhhh, entendi, é como se quisesse aproveitar uma unit que fiz de um projeto e adicionar em outro, isso meso, vou Project, Add to Project. Legal, isso né?


Leonardo, só não entendi pq que está desligada essa procedure:

{*

//Exemplo de como usar
//Declare na seção uses do Form a unit sCtrlResize;

procedure TfrmCadEmpresas.FormShow(Sender: TObject);
begin
sCtrlResize.CtrlResize(TForm(frmCadEmpresas));
end;

*}

No projeto que for fazer tem que fazer assim como vc descreveu? Tem que usar no evento onShow no form que for usar e declarar na Uses sCtrlResize. Mas antes disso tem que fazer Project - Add to Project e adicionar a Unit 2 que poderia ser outro nome, é isso?


o comentario no codigo da unite serviria como exemplo para chamada da unit Unit2 pode ser qualquer outro nome desde que você nao se perce em seu projeto, e o comentario da unit você pode apagar, como mencionei é apenas um exemplo do uso desta unit.



Ok, porque sCtrlResize?
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Você com toda certeza ja se deparou com o TForm não é mesmo? Bom o Tform quer diser que é o componente, assim como o sCtrlResize quer diser que é uma cmada exterior ao fomulario criado. Quando você diz para o compilador utilizar o sCtrlResize o mesmo carrega todas as funções apresentadas na unit  como exemplo: CrlResize se exixtissem outras funções nesta unit você poderia utilizar o sCtrlResize.nomeoutrafunçao. entendeu?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Você com toda certeza ja se deparou com o TForm não é mesmo? Bom o Tform quer diser que é o componente, assim como o sCtrlResize quer diser que é uma cmada exterior ao fomulario criado. Quando você diz para o compilador utilizar o sCtrlResize o mesmo carrega todas as funções apresentadas na unit  como exemplo: CrlResize se exixtissem outras funções nesta unit você poderia utilizar o sCtrlResize.nomeoutrafunçao. entendeu?


Sim, então o s seria o t que como exemplo que vc deu o TForm. Esse nome que vc deu não pode ser mudado então, né? Tem que deixar como está.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Você com toda certeza ja se deparou com o TForm não é mesmo? Bom o Tform quer diser que é o componente, assim como o sCtrlResize quer diser que é uma cmada exterior ao fomulario criado. Quando você diz para o compilador utilizar o sCtrlResize o mesmo carrega todas as funções apresentadas na unit  como exemplo: CrlResize se exixtissem outras funções nesta unit você poderia utilizar o sCtrlResize.nomeoutrafunçao. entendeu?


Sim, então o s seria o t que como exemplo que vc deu o TForm. Esse nome que vc deu não pode ser mudado então, né? Tem que deixar como está.


Não nescessáriamente você pode mudar tudo se você quiser. Por exemplo se você trocar a propriedade Name do formulário tipo Form1 você trocar ( a propriedade Name do form1) para meuformularioprincipal você teria que chama-lo com Tmeuformularioprincial. você pode alterar todas as propriedades name tanto de formulários quando de  rotinas , fiunções, etc... mas nunca a forma de chama-la como T ou S.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Você com toda certeza ja se deparou com o TForm não é mesmo? Bom o Tform quer diser que é o componente, assim como o sCtrlResize quer diser que é uma cmada exterior ao fomulario criado. Quando você diz para o compilador utilizar o sCtrlResize o mesmo carrega todas as funções apresentadas na unit  como exemplo: CrlResize se exixtissem outras funções nesta unit você poderia utilizar o sCtrlResize.nomeoutrafunçao. entendeu?


Sim, então o s seria o t que como exemplo que vc deu o TForm. Esse nome que vc deu não pode ser mudado então, né? Tem que deixar como está.


Não nescessáriamente você pode mudar tudo se você quiser. Por exemplo se você trocar a propriedade Name do formulário tipo Form1 você trocar ( a propriedade Name do form1) para meuformularioprincipal você teria que chama-lo com Tmeuformularioprincial. você pode alterar todas as propriedades name tanto de formulários quando de  rotinas , fiunções, etc... mas nunca a forma de chama-la como T ou S.


Ok, agora entendi, é só usar como vc mencionou que vai funcionar, correto? Agora como vou programar em determinada resolução se utilizo 1280x1024?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Você com toda certeza ja se deparou com o TForm não é mesmo? Bom o Tform quer diser que é o componente, assim como o sCtrlResize quer diser que é uma cmada exterior ao fomulario criado. Quando você diz para o compilador utilizar o sCtrlResize o mesmo carrega todas as funções apresentadas na unit  como exemplo: CrlResize se exixtissem outras funções nesta unit você poderia utilizar o sCtrlResize.nomeoutrafunçao. entendeu?


Sim, então o s seria o t que como exemplo que vc deu o TForm. Esse nome que vc deu não pode ser mudado então, né? Tem que deixar como está.


Não nescessáriamente você pode mudar tudo se você quiser. Por exemplo se você trocar a propriedade Name do formulário tipo Form1 você trocar ( a propriedade Name do form1) para meuformularioprincipal você teria que chama-lo com Tmeuformularioprincial. você pode alterar todas as propriedades name tanto de formulários quando de  rotinas , fiunções, etc... mas nunca a forma de chama-la como T ou S.


Ok, agora entendi, é só usar como vc mencionou que vai funcionar, correto? Agora como vou programar em determinada resolução se utilizo 1280x1024?


Essa é pra encerrar a novela, rs.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Crie um protótipo do seu sistema, e coloca a unit para rodar e veja o comportamento do software em resoluçoes menores no que a sua, para você entender como a funçao trabalha.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Crie um protótipo do seu sistema, e coloca a unit para rodar e veja o comportamento do software em resoluçoes menores no que a sua, para você entender como a funçao trabalha.


Fiz um projeto de teste e parece que funcionou direitinho. Pra cada form que quiser usar, tem que declarar na uses do form, correto?
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Correto.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Correto.


Ok, dou por concluído. Muito obrigado pelos esclarecimentos. O site DeMedia é uma ótima fonte de pesquisas, com ótimos profissionais no atendimento e esclarecimentos de nossas dúvidas. Fica aqui meus parabéns para todos e um ótimo final de ano. Boas Festas pra todos. E desculpe por qualquer coisa.

Att,

Frederico
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Não esqueça de finalizar o tópico.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Não esqueça de finalizar o tópico.


Onde finalizo, pois é a primeira vez que utilizo?
GOSTEI 0
Wilson Junior

Wilson Junior

23/11/2010

Na própria mensagem que estopu lhe enviando aparece se deseja 'Concluir" o tópico.

Espero ter colaborado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Na própria mensagem que estopu lhe enviando aparece se deseja 'Concluir" o tópico.

Espero ter colaborado.


Ok. Desejo concluir o tópico.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Na própria mensagem que estopu lhe enviando aparece se deseja 'Concluir" o tópico.

Espero ter colaborado.


Ok. Desejo concluir o tópico.


Gostaria de tirar uma última dúvida. O procedimento postado, funciona se a máquina que for instalar o sistema for um notebook? Não vai criar as barras de rolagens?
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Eu utilizo notboock e nunca tive este problema.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Eu utilizo notboock e nunca tive este problema.


Perguntei pq faço em meu computador Desktop, com monitor de 17".
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Eu utilizo notboock e nunca tive este problema.


Perguntei pq faço em meu computador Desktop, com monitor de 17".

Sim sem problemas pode fazer sim nao tem problema.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Eu utilizo notboock e nunca tive este problema.


Perguntei pq faço em meu computador Desktop, com monitor de 17".

Sim sem problemas pode fazer sim nao tem problema.


Boa noite. Gostaria de tirar mais uma dúvida. Estou querendo fazer um slide de uma pasta com fotos que tenho, só que de uma forma automática, ir mudando as fotos até a última, como que se faz isso? Sei que tem que usar o Timer.

Obrigado.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

Frederico, Para que o pessoal do fórum possa te ajudar com mais precisão, coloque neste post "Redimencionar form" como concluido se você já tirou esta dúvida. E sugiro que você abra um novo post para esta sua nova pergunta, sei como fazer seu slide e posso ajudar vc nisso mas sugiro que você resolva primeiro este post de redimencionar o form, após isso abra um novo post(chamado). isso é somente para manter o fórum organizado pois esta sua nova duvida pode ser a de outra pessoa tambem e se esta pessoa ver o titulop de redimencionar form, possivelmente ela nunca veria a resposta para slides de fotos. Agradeço sua compreenção. Abraços
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

23/11/2010

Frederico, Para que o pessoal do fórum possa te ajudar com mais precisão, coloque neste post "Redimencionar form" como concluido se você já tirou esta dúvida. E sugiro que você abra um novo post para esta sua nova pergunta, sei como fazer seu slide e posso ajudar vc nisso mas sugiro que você resolva primeiro este post de redimencionar o form, após isso abra um novo post(chamado). isso é somente para manter o fórum organizado pois esta sua nova duvida pode ser a de outra pessoa tambem e se esta pessoa ver o titulop de redimencionar form, possivelmente ela nunca veria a resposta para slides de fotos. Agradeço sua compreenção. Abraços


Ok, como faço para concluir? É a primeira vez que entro num forum.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

23/11/2010

para conclir este poste é muito simples ao lado de todas as resposta que vc obteve deste pedido, á um item descrito como esta ajuda resolveu seu problema? coloque em concluido. você pode visualizr isso neste mesmo post que estou colocando aqui para vc. Somente coloque em concluido e pronto. Abraços
GOSTEI 0
POSTAR