procedure TForm1.FormCreate(Sender: TObject);
begin
image:= TImage.Create(self);
with image do
begin
Left := 100;
Top := 100;
parent:= self;
visable:= true;
enabled:= true;
width:= 20;
height:= 20;
Imagelist1.GetBitmap(0,image.Picture.Bitmap);
image.onclick:=imageonclick;
end;procedure TForm1.imageonclick(Sender: TObject);
begin
showmessage('ok');
end;
以上点击image时,可以响应onclick事件,
当enabled为true,visiable为true时,什么情况下image的onclick事件无法响应
begin
image:= TImage.Create(self);
with image do
begin
Left := 100;
Top := 100;
parent:= self;
visable:= true;
enabled:= true;
width:= 20;
height:= 20;
Imagelist1.GetBitmap(0,image.Picture.Bitmap);
image.onclick:=imageonclick;
end;procedure TForm1.imageonclick(Sender: TObject);
begin
showmessage('ok');
end;
以上点击image时,可以响应onclick事件,
当enabled为true,visiable为true时,什么情况下image的onclick事件无法响应
解决方案 »
- 鏈嶅姟鍣ㄦ€庢牱鍔ㄦ€佺殑鍒嗛厤绔彛缁欐瘡涓鎴风?.
- 我delphi刚入门,就有人建议我转java或.net,怎么办?参与有分,不够再加
- fastreport报表打印导入到word表中????
- dbgrideditbutton事件
- 为什么在更新数据库时总是出现Record not found or changed by another user
- 如何加密自定义构件?
- 关于NMUDP里触发OnDataRecive事件的问题。
- 谁实现过将bmp转换成ico图标,并去掉背景色?
- 《Delphi 5中文手册》
- 如何获取字符串指定位置后面的几个字符串
- 在DBGrid中修改字段值,如何保证某字段值的唯一性?
- delphi+access 用ADO连接,为什么在SQL语句中用SUM()时,执行出错?送分
procedure TForm1.imageonclick(Sender: TObject);
begin
// showmessage('ok');
end;
你只用这样写就可以拉:
procedure TForm1.imageonclick(Sender: TObject);
begin
if image.visiable=true then
showmessage('ok');
end;
部分代码如下:
……
nodeImageA : array[1..250] of TImage;
……
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
for i:=1 to 250 do
begin
nodeImageA[i] := TImage.Create(tabsheet7);
Imagelist1.GetBitmap(0,nodeImageA[i].Picture.Bitmap);
with nodeImageA[i] do
begin
Width :=10;
Height:= 15;
DragMode := dmAutomatic;
DragKind := dkDrag; Parent := tabsheet7;
Left :=random(tabsheet7.Width-10);
Top:= random(tabsheet7.Height-10);
Visible:=true;
Enabled := true;
BringToFront;
OnClick := ShapeOnClick; ////点击image(节点)触发shapeonclick事件
end;
end;
end;procedure TForm1.ShapeOnClick(Sender: TObject);
begin showmessage('click ok');//////////////end;主要的就是这样的,但是click那些 image时,没有希望的click ok弹出!
谢谢你们,帮帮忙
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ExtCtrls, ImgList, ComCtrls;type
TForm1 = class(TForm)
PageControl1: TPageControl;////
TabSheet1: TTabSheet; ////
ImageList1: TImageList;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
nodeImageA : array[1..250] of TImage;
procedure ShapeOnClick(Sender: TObject);
// procedure click(Sender: TObject; Button: TMouseButton; Shift:
//TShiftState; X, Y: Integer); end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
Randomize;
for i:=1 to 250 do
begin
nodeImageA[i] := TImage.Create(tabsheet1);
Imagelist1.GetBitmap(0,nodeImageA[i].Picture.Bitmap);
with nodeImageA[i] do
begin
Width :=10;
Height:= 15;
DragMode := dmAutomatic;
DragKind := dkDrag; Parent := tabsheet1;
Left :=random(tabsheet1.Width-10);
Top:= random(tabsheet1.Height-10);
Visible:=true;
Enabled := true;
BringToFront;
OnClick := ShapeOnClick; ////点击image(节点)触发shapeonclick事件
end;
// nodeImageA[i].OnMouseDown:=click;
end;end;
procedure TForm1.ShapeOnClick(Sender: TObject);
begin showmessage('click ok');//////////////end;//procedure TForm1.click(Sender: TObject; Button: TMouseButton;
// Shift: TShiftState; X, Y: Integer);
//begin
//showmessage('ok');
//end;end.
不管是click还是通过onmousedown,单击image 无任何反应
procedure TForm1.TabSheet1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
(source as TImage).Left:=x;
(source as TImage).Top:=y;
end;
能否有办法使onclick和利用上述拖动能同时实现的?
TemClick : Procedure(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer) Of Object;
Begin
//判断CheckBox的onClick事件是否有内容
If Assigned(Form1.click) Then
Begin
TemClick := Form1.click;
//屏蔽onClick事件代码
Form1.click.onClick := Nil;
//干你的事
……
……
//恢复
Form1.click := TemClick;
End;
End
为什么不用双击dblclick
对动态创建的image的OnMouseDown事件=imageOnMouseDown(自定义的),dragmode仍然为dmAutomatic;用右键点击来触发自定义事件。右键的down和拖动不冲突
谢谢大家给于这么多诚恳的建议,再次谢谢了