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;