Fórum Ajuda com mapeamento via CANVAS. #371666
26/06/2009
0
Pessoal estou com um problema que não consigo resolver, espero que me ajudem :oops: .
Seguinte estou esenvolvendo um sistema para uma rede autorizada de antenas, nessa rede autorizada os tecnicos tem os datasheets que seriam os esquemas eletricos das placas, onde cada componente tem seu nome etc...
O sistema que estou criando o tecnico passa o mouse em cima ou simplemente clica em cima esse componente eletrico e mostra os dados tecnicos desse componente para solicitar ao estoque. Ate ai tudo bem consegui criar o mapeamento, mas não consigo colocar para funcionar esse mapeamento. Vide Imagem.
[URL=http://img43.imageshack.us/i/mapsvr.jpg/][img:1446a06dc6]http://img43.imageshack.us/img43/9463/mapsvr.th.jpg[/img:1446a06dc6][/URL]
1 e 2- onde criei os mapeamento da imagem ´Datasheets´, onde mostra o componente.
3 - Dados do mapeamento onde mostra as posições que foi criado o quadrado.
Estou utilizando dois Timage.
1º Onde fica o datasheet.
2º Onde vai gerar o mapeamento.
O mapeamento me traz as coordenadas X/Y :
436-250
250-350
135-250
366-450
Que seriam para formar um quadrado onde pinto via canvas, gravo esses dados em uma tabela ´TAB_POSICOES´.
Bom ate ai otimo consigo na boa, mas o problema e puxar esse mapeamento e deixar o mesmo habilitado com mouseover e mousedown para puxar no banco de dados o nome e funcionalidades do componente.
Mas não sei como fazer essa função estou perdido nessa parte se alguem puder me dar uma força nessa parte.
[]´s
Uasan
Curtir tópico
+ 0Posts
27/06/2009
Uasan
Capturar as posições na tela:
Quadrado 1:
Inicia com a posição X 150 e termina com 250.
Inicia com a posição Y 450 e termina com 500.
Dentro desse espaço posso clicar e ira chamar uma função que seria a função procurar peças.
Ms não estou conseguindo alocar somente esse espaço para aceitar o clique :(
Isso já esta dificil para uma peça so estou imaginando para varias.
Alguem teria uma rotina ai para alocação de clique pos left ou top?
[]´s
Gostei + 0
29/06/2009
Emerson Nascimento
eu ´chumbei´ as coordenadas, mas você pode fazer através de um banco de dados. tomei como exemplo a imagem que você postou.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm3 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
procedure Image1Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
PosX, PosY: integer;
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Image1Click(Sender: TObject);
begin
if (((PosX >= 228) and (PosX <= 241)) and ((PosY >= 188) and (PosY <= 195))) or
(((PosX >= 276) and (PosX <= 299)) and ((PosY >= 322) and (PosY <= 330))) then
ShowMessage(´Clicou num componente mapeado´);
end;
procedure TForm3.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label1.Caption := ´X: ´+IntToStr(X);
Label2.Caption := ´Y: ´+IntToStr(Y);
PosX := X;
PosY := Y;
if (((X >= 228) and (X <= 241)) and ((Y >= 188) and (Y <= 195))) or
(((X >= 276) and (X <= 299)) and ((Y >= 322) and (Y <= 330))) then
Image1.Cursor := crHandPoint
else
Image1.Cursor := crDefault;
end;
end.Gostei + 0
29/06/2009
Lehapan
Exemplo: quando o mouse estiver dentro do seu quadrado, altere o cursor para ´crHandPoint´ e se caso estiver fora do quadrado, coloque como ´crDefault´, sendo assim, no evento OnClick do componente você coloca um IF para executar somente se o cursor estiver ´crHandPoint´.
Bom, este é o primeiro passo, agora para você saber se onde você clicou é o local A, local B etc, defina algumas Tags para cada local.
Exemplo:
Quadrado TAG
====== ===
1 0
3 1
4 2
2 3
Assim, no mesmo momento que seta cursor para ´crHandPoint´, você atribui a TAG para o componente.
Espero ter ajudado...!!!
Gostei + 0
30/06/2009
Uasan
Emerson sua ideia caiu feito uma luva, fico show de bola bom como não sou egoista recebi ajuda então vo disponibilizar uma parte que estava desenvolvendo. Quem sabe não ajuda outra pessoa :D
http://rapidshare.com/files/250170202/pintarcanvas.rar.html
[]´s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)