mendes15 0 Denunciar post Postado Novembro 20, 2007 Galera, sou novo no pedaço e gostaria de uma ajuda de vcs que possuem mais tempo de experiencia do que eu. Minha duvida é o seguinte, possuio 32 Timage, com tag's de 1 a 32, tenho um popup menu que está ligado as todas as 32 imagem, contendo 6 opções. Preciso saber qual foi a imagem clicada e carregar sua tag para saber qual a função deverá ser executada correspondente a imagem clicada. procedure Tfrm_Cliente.Cor1Click(Sender: TObject); var fotoCarre:string; begin tipo:='E'; // tipo de controle, apenas para saber qual o tipo de execução. numerotag:= (Sender as TImage).Tag; // aki é que eu preciso pegar o tag da imagem que foi clicada. fotoCarre:= carregarDente(tipo, IntToStr(numerotag)); // aki eu chamo uma função que faz as conversões e devolve imagem correspondente ao tipo de controle. (Sender as TImage).Picture.LoadFromFile(fotoOdonto+'\'+fotoCarre); //aki eu preciso carregar a nova imagem conforme as especificações da imagem clicada (entre as 32) e tipo escolhido. end; acho que consegui explicar o que eu preciso, fico no aguardo da ajuda de vcs. vlw Ricardo Mendes Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 20, 2007 Você pode usar o evento OnContextPopUp do TImagem, vinculando todos eles a um mesmo evento, podendo declarar na seção private da unit uma variável que vai receber o nome do TImage precionado, algo como: procedure TForm1.Image1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); begin componenteImagem:=TImage(Sender).Name; end; Podendo depois nos eventos fazer: procedure Tfrm_Cliente.Cor1Click(Sender: TObject); var fotoCarre:string; begin tipo:='E'; numerotag:=TImage(FindComponent(componenteImagem)).Tag; fotoCarre:=carregarDente(tipo, IntToStr(numerotag)); TImage(FindComponent(componenteImagem)).Picture.LoadFromFile(fotoOdonto+'\'+fotoCarre); end; Compartilhar este post Link para o post Compartilhar em outros sites
mendes15 0 Denunciar post Postado Novembro 21, 2007 Galera eu andei falando com amigos e fiz da seguinte maneira Não esqueça de declarar uma variavel do tipo stringo com o nome de sMsg; procedure Tfrm_Cliente.PopupMenu1Popup(Sender: TObject); var I: integer; fotoCarre:string; begin //ImagemNumero.Caption := 'Imagem Número '+IntToStr(PopupMenu1.Tag); try for I := 0 to frm_Cliente.ComponentCount - 1 do begin //Troque Form1 pelo nome do seu form if (frm_Cliente.Components is TImage) then begin with (frm_Cliente.Components as TImage) do begin if Tag = TMenuItem(Sender).Tag then begin fotoCarre:=carregarDente('E', IntToStr(Tag)); Picture.LoadFromFile(fotoOdonto+'\'+fotoCarre); //Falta setar as varíaveis end; end; end; end; except on E: Exception do begin sMsg := ' Erro: '+E.Message; FatalAppExit(0,PChar('Erro ao tentar trocar imagem. '+ 'Impossível continuar. O programa será encerrado!'+sMsg)); end; end; end; procedure Tfrm_Cliente.imagem01MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PopupMenu1.Tag := TImage(Sender).Tag; end; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2007 Da forma que lhe falei no post #2 não lhe serviu ? Compartilhar este post Link para o post Compartilhar em outros sites