• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API

控件数组,+ 鼠标事件 + 该控件的 index

com235 2002-04-19 02:32:11
大约可以描述为电子地图,有10个点,是10个小ico 或 bmp 数组,希望在鼠标点其中一个时,在onclick事件中得到 该控件的index 。

我困惑好久了,以前在VB6 中很方便,现在 VB.Net也不行了,Delphi可以如何作??


...全文
64 点赞 收藏 13
写回复
13 条回复
com235 2002年04月21日
大佬:Delphi中没问题了,C++Bulid中如何实现?
到C++bulid中回答,谢了

http://www.csdn.net/expert/topic/664/664439.xml?temp=.7957422

怎样写Onclick()?
int i;
for(i=0;i<10;i++)
{
Image1[i]= new TImage(this);
Image1[i]->Parent = Form1;
Image1[i]->Picture->LoadFromFile("c:\\aa.bmp");
Image1[i]->Top = i*20;
Image1[i]->Tag = i;
ImageClick :TImage->Image2->OnClick();//这句话表达的意识
//该如何写?
}

回复 点赞
Borlandor 2002年04月19日
一个例子:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBXpress, StdCtrls, Mask, ExtCtrls, DB, SqlExpr;

type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure ImageClick(Sender: TObject);
public
{ Public declarations }
end;
const
ImageCount = 10;
ImageWidth = 40;
ImageHeight = 40;
var
Form1: TForm1;
Images: array[1..ImageCount] of TImage;

implementation

{$R *.dfm}

procedure TForm1.ImageClick(Sender: TObject);
begin
Edit1.Text := IntToStr(TImage(Sender).Tag);

end;

procedure TForm1.FormCreate(Sender: TObject);
var I: Integer;
begin
for I := 1 to ImageCount do
begin
Images[I] := TImage.Create(Self);
with Images[I] do
begin
Picture.LoadFromFile('C:\temp\MAPIF4L.ICO');
Left := (I-1)*(ImageWidth+1);
Top := 10;
Stretch := TRUE;
Width := ImageWidth;
Height := ImageHeight;
OnClick := ImageClick;
Parent := Self;
Tag := I;
end;
end;

end;

end.
回复 点赞
erryan 2002年04月19日
调用按钮的tag属性
回复 点赞
com235 2002年04月19日
???? zenartus(投入者)
回复 点赞
com235 2002年04月19日
To:投入者:

这样的用法 如何编写该数组的onclick()???

index 参数如何得到?

谢了
回复 点赞
com235 2002年04月19日
UP
回复 点赞
zenartus 2002年04月19日
delphi可以自己定义控件数组,先定义一个该类的数组,再给数组元素赋初值


按钮数组:array[1..10] of tbutton
回复 点赞
com235 2002年04月19日
上上下下,你说得我左右不是,
我以前是用VB 和C++Bulider的,看不明白。劳驾你老人家
多来几句代码。

就写个小东东给我, qihaozi@sohu.com

因为我大多时候很。。。。。。。。。。。。。





大民兄,有道理,哈哈哈,曲线救国。可要命的是我以前在VB里这一切都是动态生成可用户定义的,现在总不好退步吧!





回复 点赞
Borlandor 2002年04月19日
假设你的ICOs放在多个TImage中,Index索引可以存放于TImage.Tag中.
在OnClick中可以实现:

procedure TForm1.Image1Click(Sender: TObject);
begin
Edit1.Text := IntToStr(TImage(Sender).Tag);

end;
回复 点赞
王集鹄 2002年04月19日
参考TComponent.Tag属性
回复 点赞
nne998 2002年04月19日
其实delphi这样比 vb的控件数组更简单。。。

当然,delphi也有控件数组。。。不过也差不多这样用。。。
回复 点赞
nne998 2002年04月19日
把他们的onclick事件都指到同一个处理上:
然后在这个处理里:

procedure TForm1.Button1Click(Sender: TObject);
begin
//sender 就是发消息那个控件了,例如
(sender as TImage).picture.loadfromfile('c:\aaa.bmp');

end;
回复 点赞
nne998 2002年04月19日
procedure TForm1.Button1Click(Sender: TObject);
begin
//sender 就是发消息那个控件了,例如
(sender as TImage).picture.loadfromfile('c:\aaa.bmp');

end;
回复 点赞
发动态
发帖子
Delphi
创建于2007-08-02

1472

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告