listview多选的问题
listview的multiselect属性设为true后,可以选,但是必须用ctrl或者shift配合鼠标点选,或者鼠标在空白的地方开始托选,不满足要求,能否直接用鼠拖选中其中的连续几条数据?
[解决办法]
加个CHECKBOX列进行选择
[解决办法]
没有这样的属性,只能自己模拟这样的操作,OnMouseDown,OnMouseUp,用Pen.Mode=pmXor画方框和擦除,循环用GetItemAt获取鼠标框下的内容,设置为Selected
[解决办法]
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls;type TForm1 = class(TForm) ListView1: TListView; procedure ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ListView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure ListView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } FDown:Boolean; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin FDown := True;end;procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);var item : TListItem;begin if FDown then begin item := ListView1.GetItemAt(X,Y); if item = nil then Exit; item.Selected := True; end;end;procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin FDown := False;end;end.
[解决办法]
依旧mouseup里处理