GARANTIR DESCONTO

Fórum abrir janela de seleção com mouse #272806

17/03/2005

0

Bom dia. galera, tenho uma panel, e preciso com o mouse abrir uma janela (corner) para selecionar uma área deste panel e cálcular qual a porcentagem da área selecionada referente ao panel. Alguém tem idéia de como fazer isso ?


Cristianopintado

Cristianopintado

Responder

Posts

17/03/2005

Marcelo Saviski

bom, se entendi vc quer clicar, arrastar e desehar um retângulo da area selecionada, do ponto inicial aonde foi clicadoa té aonde o mouse está no momento, isso da para fazer com a função
[color=green:7129c7eb79] DrawFocusRect(GetDC(Panel.Handle), Rect)[/color:7129c7eb79]

Rect é uma variavel do tipo TRect, ela armazena as coordenadas iniciais do ponto aonde foi clicado:
[color=darkblue:7129c7eb79][i:7129c7eb79]Rect.Left e Rect.Top (Rect.TopLeft)[/i:7129c7eb79][/color:7129c7eb79]

e o ponto corrente da posição do mouse:
[color=darkblue:7129c7eb79][i:7129c7eb79]Rect.Right e Rect.Bottom (Rect.BottomRight)[/i:7129c7eb79][/color:7129c7eb79]

então no OnMouseDown do Panel vc seta o Rect:
Rect.Left := X;
Rect.Top := Y;


no OnMouseMove verifica se está clicado, muda os valores da segunta coordenada e desenha o retângulo coma função acima.


Responder

Gostei + 0

17/03/2005

Rômulo Barros

[color=darkblue:87aea52b74][b:87aea52b74]Declare as seguintes variáveis na seção PUBLIC de sua Unit:[/b:87aea52b74][/color:87aea52b74]

  public
     Resultado : Real;
     BaseSelecionada : Real;
     AlturaSelecionada : Real;
     LarguraSelecionada : Real;
     AreaTotalSelecionada : Real;
     AreaTotalPanel : Real;
  end;


[color=darkblue:87aea52b74][b:87aea52b74]Agora, no evento OnMouseDown do Panel faça:[/b:87aea52b74][/color:87aea52b74]

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   AlturaSelecionada  := Y;
   LarguraSelecionada := X;
end;


[color=darkblue:87aea52b74][b:87aea52b74]Agora, no evento OnMouseUp do seu Panel, faça:[/b:87aea52b74][/color:87aea52b74]

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
      // AreaSelecinada = Base * Altura
   AreaTotalSelecionada :=(X - LarguraSelecionada) * (Y - AlturaSelecionada);
   AreaTotalPanel := Panel1.Width * Panel1.Height;

   // Abs: Método para convertar para positivo, caso o usuário selecione no        sentido ESQUERDA --> DIREITA
   Resultado := Abs(((100 * AreaTotalSelecionada) / AreaTotalPanel));
   ShowMessage(´Percentual da área Selecionada: ´ + FloatToStr(Resultado) + ´ ¬´);
end;

end.


:wink: :wink: :wink: :wink: :wink:


_____________________________________________
[b:87aea52b74][color=blue:87aea52b74]Utilize a Ferramenta de Pesquisa do Fórum[/color:87aea52b74][/b:87aea52b74]

Pesquisar pelos termos
_____________________________________________
[b:87aea52b74]Veja como[url=http://forum.clubedelphi.net/viewtopic.php?t=16976] OBTER RESPOSTAR RÁPIDAS[/url][/b:87aea52b74]
[b:87aea52b74]Veja as novas [url=http://forum.clubedelphi.net/viewtopic.php?t=59817]MUDANÇAS NA ESTRUTURA[/url] do site[/b:87aea52b74]
[b:87aea52b74]Leia sempre as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]REGRAS DE CONDUTA[/url][/b:87aea52b74]


Responder

Gostei + 0

17/03/2005

Cristianopintado

muito bom o seu código, muito obrigado. Só mais uma coisa...existe uma forma do mause mostrar o que está sendo selecionado ? Só mostrar uma janela de um ponto ao outro?


Responder

Gostei + 0

17/03/2005

Rômulo Barros

Então.. vamos lá:

Vamos fazer tudo novamente, Ok?

[color=red:145ca7e103][b:145ca7e103]1 - Declare as seguintes variáveis na seção PUBLIC de seu Unit:[/b:145ca7e103][/color:145ca7e103]

  public
     Resultado : Real;
     BaseSelecionada : Real;
     AlturaSelecionada : Integer;
     LarguraSelecionada : Integer;
     AreaTotalSelecionada : Real;
     AreaTotalPanel : Real;
     MeuBevel : TBevel;
  end;


[color=red:145ca7e103][b:145ca7e103]2 - Codifique o método OnMouseDown do seu panel como segue:[/b:145ca7e103][/color:145ca7e103]

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   MeuBevel := TBevel.Create(Self);
   MeuBevel.Parent := Panel1;
   MeuBevel.Height := 0;
   MeuBevel.Width := 0 ;
   MeuBevel.Top := Y;
   MeuBevel.Left := X;
   AlturaSelecionada  := Y;
   LarguraSelecionada := X;
end;


[color=red:145ca7e103][b:145ca7e103]3 - Codifique o método OnMouseMove do seu panel como segue:[/b:145ca7e103][/color:145ca7e103]
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   If(Shift = [ssLeft])Then
   Begin
      MeuBevel.Height := Y - AlturaSelecionada;
      MeuBevel.Width  := X - LarguraSelecionada;
   End;
end;


[color=red:145ca7e103][b:145ca7e103]4 - Codifique o método OnMouseUp como segue:[/b:145ca7e103][/color:145ca7e103]

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
      // AreaSelecinada = Base * Altura
   AreaTotalSelecionada :=(X - LarguraSelecionada) * (Y - AlturaSelecionada);
   AreaTotalPanel := Panel1.Width * Panel1.Height;

   // Abs: Método para convertar para positivo, caso o usuário selecione no sentido ESQURDA --> DIREITA
   Resultado := Abs(((100 * AreaTotalSelecionada) / AreaTotalPanel));
   ShowMessage(´Percentual da área Selecionada: ´ + FloatToStr(Resultado) + ´ ¬´);
   FreeAndNil(MeuBevel);
end;


[u:145ca7e103][b:145ca7e103]Prontinho....[/b:145ca7e103][/u:145ca7e103] :wink: :wink:

_____________________________________________
[b:145ca7e103][color=blue:145ca7e103]Utilize a Ferramenta de Pesquisa do Fórum[/color:145ca7e103][/b:145ca7e103]

Pesquisar pelos termos
_____________________________________________
[b:145ca7e103]Veja como[url=http://forum.clubedelphi.net/viewtopic.php?t=16976] OBTER RESPOSTAR RÁPIDAS[/url][/b:145ca7e103]
[b:145ca7e103]Veja as novas [url=http://forum.clubedelphi.net/viewtopic.php?t=59817]MUDANÇAS NA ESTRUTURA[/url] do site[/b:145ca7e103]
[b:145ca7e103]Leia sempre as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]REGRAS DE CONDUTA[/url][/b:145ca7e103]


Responder

Gostei + 0

17/03/2005

Rômulo Barros

[color=darkblue:9564d7d76b][i:9564d7d76b][b:9564d7d76b]Resolveu o seu problema?[/b:9564d7d76b][/i:9564d7d76b][/color:9564d7d76b]

_____________________________________________
[b:9564d7d76b][color=blue:9564d7d76b]Utilize a Ferramenta de Pesquisa do Fórum[/color:9564d7d76b][/b:9564d7d76b]

Pesquisar pelos termos
_____________________________________________
[b:9564d7d76b]Veja como[url=http://forum.clubedelphi.net/viewtopic.php?t=16976] OBTER RESPOSTAR RÁPIDAS[/url][/b:9564d7d76b]
[b:9564d7d76b]Veja as novas [url=http://forum.clubedelphi.net/viewtopic.php?t=59817]MUDANÇAS NA ESTRUTURA[/url] do site[/b:9564d7d76b]
[b:9564d7d76b]Leia sempre as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]REGRAS DE CONDUTA[/url][/b:9564d7d76b]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar