怎样让DBGrid在按住Shift点鼠标的同时能将连续范围的多行选中?

 我来答
朴乐荷bH
2013-10-16 · TA获得超过114个赞
知道答主
回答量:139
采纳率:100%
帮助的人:55.3万
展开全部
参见例子:…privateSel : Boolean ;//判断是否处于选择状态
BookMark : TBookMark ;//记录先前的位置…procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var SelNo:integer ;//记录当前位置beginif ( Button = mbLeft ) then
if sel = false then//非选择状态,记录当前位置beginBookMark := Table1.GetBookmark ;
Sel := true ;exit ;endelse //选择状态
if Shift = [ssShift] thenbegin//遍历所有从先前位置开始到当前位置之间的记录并标记
SelNo := DBGrid1.DataSource.DataSet.RecNo ;
DBGrid1.DataSource.DataSet.DisableControls ;
DBGrid1.DataSource.DataSet.GotoBookmark(BookMark);
DBGrid1.SelectedRows.CurrentRowSelected := true ;
if SelNo<DBGrid1.DataSource.DataSet.RecNo then
while SelNo<DBGrid1.DataSource.DataSet.RecNo dobeginDBGrid1.SelectedRows.CurrentRowSelected := true ;
DBGrid1.DataSource.DataSet.Prior ;endelsewhile SelNo DBGrid1.DataSource.DataSet.RecNo dobeginDBGrid1.SelectedRows.CurrentRowSelected := true ;
Sel := false ;end ;end;虽然效果不十分理想,但足以完成要求。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式