form上放有多個圖片,滑鼠隨機點擊圖片。怎么設計一個程序, 判斷每張圖片滑鼠點擊的次數。原始碼。謝謝
uj5u.com熱心網友回復:
利用image的tag值的不同,進行判斷是哪個image控制元件的單機事件,然后將單機的次數進行累加;或者定義一個image的陣列更為方便。uj5u.com熱心網友回復:

他要的是原始碼
uj5u.com熱心網友回復:
幫幫我啦,有沒有人會uj5u.com熱心網友回復:
一、新建工程,加入2個Image和Edit二、定義全域變數M1、M2,記錄二個影像被滑鼠點擊的次數。
三、代碼:
unit Unit1;
interface
uses
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.
uj5u.com熱心網友回復:
四、效果圖:
uj5u.com熱心網友回復:
unit Unit1;
interface
uses
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.
uj5u.com熱心網友回復:
效果不錯!
uj5u.com熱心網友回復:
我給你寫個比較通用演算法,不用關心有幾個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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86085.html
