form上放有多个图片,鼠标随机点击图片。怎么设计一个过程, 判断每张图片鼠标点击的次数。源码。谢谢

解决方案 »

  1.   

    利用image的tag值的不同,进行判断是哪个image控件的单机事件,然后将单机的次数进行累加;或者定义一个image的数组更为方便。
      

  2.   

    一、新建工程,加入2个Image和Edit  
    二、定义全局变量M1、M2,记录二个图像被鼠标点击的次数。
    三、代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, jpeg, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Edit1: TEdit;
        Edit2: TEdit;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Image2MouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      M1,M2:integer;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      close;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      M1:=0;
      M2:=0;
      Edit1.Text:=InttoStr(M1);
      Edit2.Text:=InttoStr(M2);
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      M1:=M1+1;
      Edit1.Text:=InttoStr(M1);
    end;procedure TForm1.Image2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      M2:=M2+1;
      Edit2.Text:=InttoStr(M2);
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      M1:=0;
      M2:=0;
      Edit1.Text:=InttoStr(M1);
      Edit2.Text:=InttoStr(M2);
    end;end.
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, jpeg;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Image3: TImage;
        Image4: TImage;
        Image5: TImage;
        Memo1: TMemo;
        procedure Image1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure DispimgClick;
      end;var
      Form1: TForm1;
      img_clicks : array [0..4] of Integer;implementation{$R *.dfm}procedure TForm1.DispimgClick;
    var
        i : Integer;
    begin
        Memo1.Lines.Clear;
        for i := Low(img_clicks) to High(img_clicks) do
            begin
            Memo1.Lines.Add('图片' + IntToStr(i+1) + '点击数:' + IntToStr(img_clicks[i]))
            end;
    end;procedure TForm1.Image1Click(Sender: TObject);
    begin
        img_clicks[(Sender as TImage).Tag] := img_clicks[(Sender as TImage).Tag] + 1;
        DispimgClick;
    end;end.
      

  4.   

    我给你写个比较通用算法,不用关心有几个image控件,不用写一堆死死的代码type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure OnImageClick(sender: TObject);
        procedure InitParam();
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}//image 控件点击事件
    procedure TForm1.OnImageClick(sender: TObject);
    begin
      TImage(sender).Tag := TImage(sender).Tag+1;
      TImage(sender).Hint:= Format('已点击%d次',[TImage(sender).Tag]);
    end;//初始化函数,主要用于动态绑定image点击事件
    procedure TForm1.InitParam();
    var
      i: integer;
    begin
      for i:= 0 to ControlCount-1 do
      begin
        if not (Controls[i] is TImage) then continue;
        TImage(Controls[i]).ShowHint := true;
        TImage(Controls[i]).OnClick := OnImageClick;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      InitParam();
    end;