首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

Click事件如何写

2012-03-03 
Click事件怎么写TListBox*listlistnewTListBox(this)list- Parentthislist- Left100list- Top1

Click事件怎么写
TListBox   *   list;
list=new   TListBox(this);
list-> Parent=this;
list-> Left=100;
list-> Top=150;
list-> Items-> Add( "第一行 ");
list-> Items-> Add( "第二行 ");
list-> OnClick();       ////     ?这里怎么写Click事件,要求,如果在 "第一行 "上点实现ShowMessage( "你点击的是第一行 ");如果在第二行上点实现ShowMessage( "你点击的是第二行 ");


OnClick()怎么写?

[解决办法]
1.
使用onmousedown事件吧,这样方便一些
list=new TListBox(this);
list-> Parent=this;
list-> Left=100;
list-> Top=150;
list-> Items-> Add( "第一行 ");
list-> Items-> Add( "第二行 ");
list-> OnMouseDown=ListBoxMouseDown;


//自定义函数ListBoxMouseDown
//.h文件
void __fastcall ListBoxMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);

//.cpp文件
void __fastcall TForm1::ListBoxMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
int index;
index=(dynamic_cast <TListBox *> (Sender))-> ItemAtPos(Point(X,Y),true);
ShowMessage( "您点击的是第 "+IntToStr(index+1)+ "行! ");
}
//---------------------------------------

2.
要使用onclick事件也可以,需要自己获取鼠标位置坐标点传给ItemAtPos(Point(X,Y),true);
[解决办法]
第一句:
list=new TListBox(this);

要写成:
TListBox *list=new TListBox(this);
[解决办法]
//---------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h "
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm "
TForm1 *Form1;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TListBox * list;
list=new TListBox(this);
list-> Parent=this;
list-> Left=100;
list-> Top=150;
list-> Items-> Add( "第一行 ");
list-> Items-> Add( "第二行 ");
lst1-> OnClick;
list-> OnClick= lst1-> OnClick;
}
//---------------------------------------

void __fastcall TForm1::lst1Click(TObject *Sender)
{
TListBox *plist = (TListBox *)Sender;
int i = plist-> ItemIndex;
ShowMessage( "你点击了 "+IntToStr(i+1)+ "行 ");
}
//---------------------------------------

我告诉一个简单点的办法吧
自己加一个ListBox lst1
让你new的ListBox 的onclik = lst1-> OnClick;
根据事件驱动的原理
Tobject *sender
就是点击动作发出者的指针
将sender强制转换为 TListBox 得到的是你new的listbox
很明显 下面就不用我说了

上述代码已经实现你的要的功能
只需要添加一个listbox 命名为lst1 将visable属性设置为false 复制代码就可

[解决办法]
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
String str = "你点击的是第 " + IntToStr(ListBox1-> ItemIndex+1) + "行 ";


ShowMessage(str );
}
//---------------------------------------

[解决办法]
补充一点
list-> OnClick = ListBox1Click;
[解决办法]
恩,
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
String str = "你点击的是第 " + IntToStr(ListBox1-> ItemIndex+1) + "行 ";
ShowMessage(str );
}
//---------------------------------------
初始化的时候
list-> OnClick = ListBox1Click;

热点排行