在listbox中。怎么用鼠标代替ctrl键进行多选(50分)

  • 主题发起人 主题发起人 zhousi
  • 开始时间 开始时间
Z

zhousi

Unregistered / Unconfirmed
GUEST, unregistred user!
我试过用 keybd_event(VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY,0);
效果不太好,关闭程序后总是ctrl还要作用好长时间
 
这样做有什么用?一个键盘有两个ctrl键。不会同时都坏吧?
 
to 影 子
我想用户不用总是按着ctrl进行多选,
相当于鼠标点击的事件代替原来的按着ctrl点击鼠标的事件
 
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
keybd_event(vk_control,0,0,0);
end;

//要加上下面的代码
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);
end;
 
to 影 子
功能是实现了,但,总是在退出后,系统整个都按了ctrl!
keybd_event(vk_control,0,0,0);
第三个参数有0吗?我看了下帮助好象没有呀,这一句,是什么意思?
 
没那么复杂,两个属性设置一下就成了
listbox1.MultiSelect := true;
listbox1.ExtendedSelect := false;
 
额外的参数。word类型可以用0。加了FormMove应该不会“系统整个都按了ctrl”
一少的方法最简单实用。
 
点一下选中该项,再点一下取消该项呀
多好
 
to :影 子
keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);
好象还不行
我用了一少的方法,晕,好简单,呵呵,还本人水平差了点,呵呵,谢谢
 
多人接受答案了。
 
后退
顶部