Fórum Ajuda com mapeamento via CANVAS. #371666

26/06/2009

0

Boa Noite,

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

Uasan

Responder

Posts

27/06/2009

Uasan

Consegui uma solução mas estou apanhando para conseguir criar ela, minha ideia e o seguinte:

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


Responder

Gostei + 0

29/06/2009

Emerson Nascimento

criei um programa que pode servir de idéia para você implementar o que você precisa.
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.



Responder

Gostei + 0

29/06/2009

Lehapan

UaSan, o que você pode fazer perante a sua solução, é mudar o cursor do componente.
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...!!!


Responder

Gostei + 0

30/06/2009

Uasan

Boa Noite,

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


Responder

Gostei + 0

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

Aceitar