| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qua Mai 27, 2009 6:25 pm Assunto: Movimentar Form C/ Propriedade Style Como: bsNone[Resolvido] |
|
|
| Moderadores do Active-Delphi escreveu: |
Tópico editado por: johnny-walker
Motivo: Regras do fórum
Título Original: [RESOLVIDO]MOVIMENTAR FORM C/ PROPRIEDADE STYLE COMO: BSNONE |
Ola pessoal estou eu de novo...com mais uma duvida...estou com um form...com essa propriedade bsnone ativada...so que preciso que esse form seje arrastado certo...cmo todos sabem essa propriedade como ta marcada ele não da de mover se caso não fizer alguns ajustes no codigo blz...eu to usando um codigo que funciona blz mover ele, so que ocorreu um problema...os componentes ficam todos desabilitados, BUTTONS...
segue o codigo
///a partir dessa lnha coloquei os codigos
private
{ Private declarations }
public
procedure WMNChitTest(var M: TWMNchitTest); message WM_NCHITTEST;
{ Public declarations }
end;
var
Form2: TForm2;
procedure TForm2.WMNchitTest(var M:TWMNChitTest);
begin
inherited;
if M.result = htclient then
M.result := htCaption;
end;
aí está ...bom espero que me ajudem novamente...
Editado pela última vez por mr.solutions em Qui Mai 28, 2009 3:44 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Mai 28, 2009 12:34 am Assunto: |
|
|
eis aih meu amigo:
| Código: |
private
{ Private declarations }
procedure WMNCHitTest(var M: TWMNCHitTest); message WM_NCHITTEST;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// MOVIMENTA O FORMULÁTRIO
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
if (M.XPos>=Left + Left) and (M.XPos<Left>=Top + Top) and (M.YPos<=Top + Top + Height) then
M.Result := htCaption;
end;
|
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Qui Mai 28, 2009 8:52 am Assunto: |
|
|
| vc tem q testar seo mouse ta sobre algum componente ou não |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qui Mai 28, 2009 9:43 am Assunto: |
|
|
| johnny-walker escreveu: | if (M.XPos>=Left + Left) and (M.XPos<Left>=Top + Top) and (M.YPos<=Top + Top + Height) then
[/code |
da um erro nessa linha.... |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qui Mai 28, 2009 9:45 am Assunto: |
|
|
| gilsonnrodrigues escreveu: | | vc tem q testar seo mouse ta sobre algum componente ou não |
´Poderia passar p gente como faz? |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Mai 28, 2009 9:52 am Assunto: |
|
|
Antes de te enviar amigo eu testei e funcionou tudo bem, mas qual o problema que aconteceu que vc não conseguiu...
Mas eu utilizaava isto em outra área por isto coloquei desta maneira...
Mas vc pode comentar esta linha:
| Código: |
if (M.XPos >= Left + Left) and (M.XPos <= Left + Width + Left) and (M.YPos >= Top + Top) and (M.YPos <= Top + Top + Height) then then
M.Result := htCaption;
end;
|
É que eu desenhava uma imagem no Timage e fazia o movimento do formulário através dele, por isto fiz desta forma mas no seu caso vc pode simplesmente deixar assim:
| Código: |
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
M.Result := htCaption;
end;
|
Desculpe não ter explicado antes, pois esta imagem ficava como o caption do formulário e como está aih, qualquer lugar que vc clicar no formulário não precisará das outras linhas...
eis o código original que eu usava na aplicacação para movimentar pelo TImage:
| Código: |
procedure TClock.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
if (M.XPos >= Left + MoveArea.Left) and (M.XPos <= Left + MoveArea.Width + MoveArea.Left)
and (M.YPos >= Top + MoveArea.Top) and (M.YPos <= Top + MoveArea.Top + MoveArea.Height) then
M.Result := htCaption;
end;
|
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Qui Mai 28, 2009 11:47 am Assunto: |
|
|
teste assim:
| Código: | procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
var
vCtrl : TControl;
begin
vCtrl := ControlAtPos(ScreenToClient(SmallPointToPoint(M.Pos)), False);
if (vCtrl <> nil) and not (vCtrl is TLabel) and not (vCtrl is TImage) then
M.Result := HTCLIENT
else
M.Result := htCaption;
end; |
|
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qui Mai 28, 2009 11:50 am Assunto: |
|
|
| gilsonnrodrigues escreveu: | teste assim:
| Código: | procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
var
vCtrl : TControl;
begin
vCtrl := ControlAtPos(ScreenToClient(SmallPointToPoint(M.Pos)), False);
if (vCtrl <> nil) and not (vCtrl is TLabel) and not (vCtrl is TImage) then
M.Result := HTCLIENT
else
M.Result := htCaption;
end; |
|
funcionou perfeitamente...obrigado |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qui Mai 28, 2009 12:04 pm Assunto: |
|
|
| mr.solutions escreveu: | | gilsonnrodrigues escreveu: | teste assim:
| Código: | procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
var
vCtrl : TControl;
begin
vCtrl := ControlAtPos(ScreenToClient(SmallPointToPoint(M.Pos)), False);
if (vCtrl <> nil) and not (vCtrl is TLabel) and not (vCtrl is TImage) then
M.Result := HTCLIENT
else
M.Result := htCaption;
end; |
|
funcionou perfeitamente...obrigado |
e como faço para componentes TPanel...?????????? |
|
| Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Qui Mai 28, 2009 3:01 pm Assunto: |
|
|
um pouquinho mais complicado
mas precisa do painel?
pode ser um bevel não? |
|
| Voltar ao Topo |
|
 |
mr.solutions Aprendiz

Registrado: Terça-Feira, 2 de Setembro de 2008 Mensagens: 278
|
Enviada: Qui Mai 28, 2009 3:43 pm Assunto: |
|
|
| gilsonnrodrigues escreveu: | um pouquinho mais complicado
mas precisa do painel?
pode ser um bevel não? |
não...a minha idéia era fazer tipo um alto relevo no form...então achei a tabcontrol e fica tipo 3d....blz...o panel não serviu...coloquei a tbcontrol e funcionou do geito que tava precisando obrigado pelo codigo de movimentar o form...amigo...
att..mr solutions |
|
| Voltar ao Topo |
|
 |
harleydk Profissional

Registrado: Quinta-Feira, 4 de Setembro de 2008 Mensagens: 635
|
Enviada: Qua Set 09, 2009 4:20 pm Assunto: |
|
|
| gilsonnrodrigues escreveu: | teste assim:
| Código: | procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
var
vCtrl : TControl;
begin
vCtrl := ControlAtPos(ScreenToClient(SmallPointToPoint(M.Pos)), False);
if (vCtrl <> nil) and not (vCtrl is TLabel) and not (vCtrl is TImage) then
M.Result := HTCLIENT
else
M.Result := htCaption;
end; |
|
gilson, fiz exatamente assim... funfa... mas nao consigo clicar no fechar(X) na barra de titulo... |
|
| Voltar ao Topo |
|
 |
|