分享

cxGrid的实现鼠标拖动多选

 独孤求财 2012-03-20

cxGrid的实现鼠标拖动多选

时间:2011-5-26来源:yang 作者: peng点击: 41次

//实现鼠标拖动多选,必须设置
//cxGrdDataTV.DragMode=dmAutomatic
//cxGrdDataTV.OptionsSelection.MultiSelect=True
procedure TfrmBase_DB_SingleGrid.cxGrdDataTVDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);

  procedure SwapInt(var A, B: integer);
  var
    tmp: Integer;
  begin
    tmp := a;
    a := b;
    b := tmp;
  end;
var
  AHitTest: TcxCustomGridHitTest;
  i, IndexStart, IndexEnd: integer;
begin
  if cxGrdDataTV.DragMode <> dmAutomatic then
    Exit;
  if cxGrdDataTV.OptionsSelection.MultiSelect = False then
    Exit;
  cxGrdDataTV.BeginUpdate;
  AHitTest := cxGrdDataTV.ViewInfo.GetHitTest(X, Y);
  if AHitTest is TcxGridRecordHitTest then
  begin
    IndexStart := cxGrdDataTV.Controller.FocusedRecord.Index;
    IndexEnd := TcxGridRecordHitTest(AHitTest).GridRecord.Index;
    cxGrdDataTV.Controller.ClearSelection;
    if IndexEnd < IndexStart then
      SwapInt(IndexStart, IndexEnd);
    for i := IndexStart to IndexEnd do
      cxGrdDataTV.ViewData.Records[i].Selected := True;
  end;
  cxGrdDataTV.EndUpdate;
end;  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多