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事件无法响应
解决方案 »
- 三层结构中如何使用ClientDataset来保存图片到数据库
- 为什么过程的参数只能用一次?
- 在DBGRID中输入某材料入库单据,输入材料代码后,怎么能同时在DBGRID中显示他的名称,保存时,只保存代码
- 谁来帮帮我女朋友,很简单的问题
- 大家快来看看这是怎么回事?
- 我只想创建一个数据表的结构为什么这个不行?select * into table1 from table2 where false
- 我这几天遇见几件怪事,说给大家听听
- Delphi TWebBrowser控件的问题有点复杂
- 当我安装Delphi5.0完成后,DCOM是不是就安装好了。还需要我重新安装DCOM吗?
- 关于屏幕平滑、连续的显示的问题!!!
- 在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和拖动不冲突
谢谢大家给于这么多诚恳的建议,再次谢谢了