Fórum abrir janela de seleção com mouse #272806
17/03/2005
0
Cristianopintado
Curtir tópico
+ 0Posts
17/03/2005
Marcelo Saviski
[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.
Gostei + 0
17/03/2005
Rômulo Barros
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]
Gostei + 0
17/03/2005
Cristianopintado
Gostei + 0
17/03/2005
Rômulo Barros
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]
Gostei + 0
17/03/2005
Rômulo Barros
_____________________________________________
[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]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)