如何实现如下功能

JWhiteHorse 2003-01-29 11:15:13
鼠标移入ComboBox控件,控件自动下拉,
移出ComboBox控件和下拉框,自动收缩。
...全文
91 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛人软件 2003-01-30
  • 打赏
  • 举报
回复
补充一点BCB6是:
private: // User declarations

Classes::TWndMethod OldComBoxWP;

以前的版本是:
private: // User declarations
Controls::TWndMethod OldComBoxWP
Nepalon 2003-01-29
  • 打赏
  • 举报
回复
用OnMouseenter,onclick要在控件上单击时才触发的
linx2 2003-01-29
  • 打赏
  • 举报
回复
ONMOUSEENTER
Billy_Chen28 2003-01-29
  • 打赏
  • 举报
回复
发送ONCLICK消息
牧牛人软件 2003-01-29
  • 打赏
  • 举报
回复
给你我的代码,下拉菜单名称较长EnrolDateComboBox,
加一个Timer1,Timer1->Enabled=false; Timer1->Interval=100;


*.h:

private: // User declarations

Classes::TWndMethod OldComBoxWP;
void __fastcall NewComBoxWP(TMessage &Msg);

//---------------------------------------------------------------------------
__fastcall TNoteForm::TNoteForm(TComponent* Owner)
: TForm(Owner)
{
OldComBoxWP = EnrolDateComboBox->WindowProc;
EnrolDateComboBox->WindowProc = NewComBoxWP;
}
//---------------------------------------------------------------------------

RECT r;//下拉框的区间设设为全局量,以便在Timer1Timer()中判断。

void __fastcall TNoteForm::Timer1Timer(TObject *Sender)
{
POINT pos;
GetCursorPos(&pos);
if(!(pos.x>r.left && pos.x<r.right && pos.y >r.top && pos.y < r.bottom)){//出了下拉框
EnrolDateComboBox->DroppedDown=false;
Timer1->Enabled=false;
}
}
//---------------------------------------------------------------------------

void __fastcall TNoteForm::NewComBoxWP(TMessage& msg)
{
switch (msg.Msg)
{
case CM_MOUSEENTER:
{
EnrolDateComboBox->DroppedDown=true;
msg.Result = true;

break;
}
case CM_MOUSELEAVE:
{
POINT pos;
Timer1->Enabled=true;
GetCursorPos(&pos);
EnrolDateComboBox->Perform(CB_GETDROPPEDCONTROLRECT,0,LPARAM(&r));
if(!(pos.x>r.left && pos.x<r.right && pos.y >r.top && pos.y < r.bottom)){//★★★当鼠标向下移时,即使出了下拉框,也无法判断CM_MOUSELEAVE,只能在Timer1Timer()判断。
EnrolDateComboBox->DroppedDown=false;
}

msg.Result = true;
break;
}
case WM_DESTROY:
{
EnrolDateComboBox->WindowProc = OldComBoxWP;
break;
}
}
OldComBoxWP(msg);

}

有问题再问
JWhiteHorse 2003-01-29
  • 打赏
  • 举报
回复
我对 C++ Builder 不熟, 实现即给200分.

13,870

社区成员

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

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