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

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

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


...全文
118 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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;

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧