Ajuda - Busca - Membros - Calendário
Versão Completa: Redimencionamento
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
Cleverson Honório Gouvêa
Quero saber se existe uma forma de impedir que o Usuário Redmencione o Formulário!!!

Meu amigo usa o Windows 2003 e utilizando a mesma resolução que eu em um monitor de "15 meu programa ficou fora dos padrões !!!

Com barras de rolagem!!

Alguém sabe me explicar porquê?
Churc
procura no Object Inspector, nas propriedades do formulário por
BorderStyle e ajuste pra bsSingle
Cleverson Honório Gouvêa
Tem como impedir que eles sejam movidos também Churc ???
Churc
você diz mover os componentes?

se for, tem sim, vai no object inspector, e na propriedade Anchors de cada componente você coloca tudo em False, ou seja, pode acontecer o que for com o formulário eles nunca vão sair da posição que você os deixou...
Cleverson Honório Gouvêa
Não Cara!!! Quero saber se posso impedor os Forms de serem movidos!!!

As janelas entende, quando você clica no titulo do Formulário e arrasta ele em tempo de execução!!!

Tem como impedir isso!?

E o que essa última configuração que você me passou faz?
Churc
opa

tem como sim ai vai

em private

procedure wmsyscommand(var message: tmessage); message wm_syscommand;

depois de implementation

procedure tnomedoform.wmsyscommand(var message: tmessage);
begin
case (message.wparam and $fff0) of
SC_MOVE, SC_SIZE:
message.result := 0;
else
inherited;
end;
end;

Anchors impede que um componente seja redimensionado ou saia da posicao, dependendo da configuracao que voce deixar, por padrão, ele não anda pra esquerda e não sobe pra cima, exemplo...

cria um form que possa ser redimensionavel, coloca um botao...
redimensiona o form da direita pra esquerda, se vai ver que o botao não anda da posicao dele pra esquerda, porque o anchors Left está true, agora se voce por Left false, ai ele anda, é tipo pra segurar uma posicao independente de como estará o form.
Micheus
QUOTE(Cleverson Honório Gouvêa @ Nov 20 2006, 03:19 PM) *

Não Cara!!! Quero saber se posso impedor os Forms de serem movidos!!!

As janelas entende, quando você clica no titulo do Formulário e arrasta ele em tempo de execução!!!

Tem como impedir isso!?
Num outro forum, aprendi que há uma forma bem simples de evitar que uma janela seja movida (apenas): basta definir a proporiedade Align do form para alCustom. Combinada com a a sugestão do Chrc de utilizar a propriedade BorderStyle com bsSingle - resolvem o problema de forma rápida.

E apenas para dar mais uma opção (que eu havia sugerido naquele forum), similar a do Churc, dá para interceptar a mensagem WM_WINDOWPOSCHANGING. Ela ocorre antes que a movimentação ou resize sejam aplicados a janela:
CODE
type
  TForm1 = class(TForm)
  private
    procedure WMWinPosChanging(var Msg :TMessage); message WM_WINDOWPOSCHANGING;
    ...
  end;

implementation
{$R *.DFM}

procedure TForm1.WMWinPosChanging(var Msg :TMessage);
begin
  PWindowPos(Msg.LParam)^.flags := PWindowPos(Msg.LParam)^.flags OR SWP_NOMOVE;
  Msg.Result := 1;
end;
...
O que se faz é modificar o flag para conter a opção SWP_NOMOVE, impedindo que a janela seja movida de sua posição.
Msg.Result = 1 diz ao processador de mensagens do windows que não tratamos esta mensagem, de modo que ela seguirá e será processada com nossa alteração.
Se quizer que o tamanho da janela não mude, também, acrescente "OR SWP_NOSIZE".

[]s
Cleverson Honório Gouvêa
valeu Galera!! Brigadão pela força!
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.