Click事件怎么写

zhanghelpsgz 2007-06-24 04:09:24
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()怎么写?
...全文
347 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghelpsgz 2007-07-01
  • 打赏
  • 举报
回复
谢谢各位
jacknes009 2007-06-29
  • 打赏
  • 举报
回复
恩,
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
String str = "你点击的是第" + IntToStr(ListBox1->ItemIndex+1) +"行";
ShowMessage(str );
}
//---------------------------------------------------------------------------
初始化的时候
list->OnClick = ListBox1Click;
mgsg 2007-06-29
  • 打赏
  • 举报
回复
补充一点
list->OnClick = ListBox1Click;
mgsg 2007-06-29
  • 打赏
  • 举报
回复
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
String str = "你点击的是第" + IntToStr(ListBox1->ItemIndex+1) +"行";
ShowMessage(str );
}
//---------------------------------------------------------------------------
n27741 2007-06-29
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------

#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 复制代码就可
zhanghelpsgz 2007-06-28
  • 打赏
  • 举报
回复
第2种方法能给更多提示吗?
coolcalf 2007-06-28
  • 打赏
  • 举报
回复
第一句:
list=new TListBox(this);

要写成:
TListBox *list=new TListBox(this);
i_love_pc 2007-06-28
  • 打赏
  • 举报
回复
list=new TListBox(this);
list->Parent=this;
list->Left=100;
list->Top=150;
list->Items->Add("第一行");
list->Items->Add("第二行");
//list->OnMouseDown=ListBoxMouseDown;
list->OnClick=ListClick;
list->Show();

//---------------------------------------------------------------------------

//自定义函数ListClick
//.h文件
void __fastcall ListClick(TObject *Sender);

//.cpp文件
void __fastcall TForm1::ListClick(TObject *Sender)
{
POINT pt;
int index;
GetCursorPos(&pt);
::ScreenToClient((dynamic_cast<TListBox *>(Sender))->Handle,&pt);
index=(dynamic_cast<TListBox *>(Sender))->ItemAtPos(TPoint(pt),true);
ShowMessage("您点击的是第"+IntToStr(index+1)+"行!");
}
i_love_pc 2007-06-24
  • 打赏
  • 举报
回复
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);

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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