类似于Windows中使用Shift实现多选的功能!

解决方案 »

  1.   

    在option属性里看看,关于它多选的属性都在那里了。
      

  2.   

    沒有,裡面隻有dgMutiSelect是實現多選的,不過隻能通過CTRL一次加多一條.
      

  3.   

    DELPHI 的TDBGrid 控 件 主 要 用 来 处 理 数 据 表, 它 的 属 性 中 有 
    一 个dgMultiSelect, 若 此 属 性 设 定 为TRUE, 则 可 以 选 中 多 个 记 录
    ( 可 用CTRL + 鼠 标 左 键 选 择 多 个 记 录)。 对 选 中 的 多 个 记 录
    可 以 有 以 下 几 种 处 理 方 式, 比 较 简 单 的 两 种 是: 清 除 所 有
    的 选 择 记 录 可 用DBGrid1.SelectedRows.Clear 语 句; 删 除 所 有 的 选 
    择 记 录 可 用DBGrid1.SelectedRows.Delete 语 句。 但 如 果 想 获 得 选 中 
    的 所 有 记 录 的 其 他 信 息, 比 如, 在 单 独 的 一 个 窗 体 中 显 示
    用 户 选 择 的 记 录 的 第 一 个 字 段 的 内 容( 如 所 有 选 择 的 姓 名)
    如 何 处 理 呢 ? 这 就 要 使 用 书 签 功 能 了, 下 面 是 笔 者 编 写 的
    一 个 程 序 中 的 过 程, 用 来 将 用 户 选 择 的 多 个 记 录 集 中 显 示 
    在 另 外 一 个 窗 体 中( 笔 者 使 用 的 是DELPHI4), 供 参 考 使 用。
    procedure GetSelectedRecord
    (DataSet : TDataSet; FieldName : String;
    BookList : TBookList; Strings : TStrings);
    file://这个过程中的参数分别为:数据表、字段名称、
    书签、用来保存所选字段内容的
    file://字符串(用于将内容传递到另
    一个单独窗体中的TLIST控件中)
    var
    I: Integer;
    bm : TBookMark;
    begin
    Strings.Clear;
    with Dataset do begin
    DisableControls;
    bm := GetBookMark;
    try
    file://每个选择的记录都有一个书签标志,
    这就为处理它们提供了条件
    for I := 0 to BookList.Count - 1 do begin
    Book := BookList[I];
    Strings.Add(DataSet.FindField(fieldname).AsString);
    end;
    finally
    GotoBookMark(bm);
    FreeBookMark(bm);
    EnableControls;
    end;
    end;
    end;调用举例:
    GetSelectedRecord(Table1, 'NAME', DBGrid1.SelectedRows, 
    Form2.ListBox1.Items
      

  4.   

    倒~~~,這個網上經常看倒啊,但是樓主是要實現"多選的方式",即,先選定一條記錄做為開始的記錄,然後按住shift,再選擇另外一條,那麼,就需要兩次鼠標點擊的兩筆記錄之間的記錄全部被選定(包含這兩筆記錄)
      

  5.   

    dgMutiSelect隻能通過CTRL一次加多一條
      

  6.   

    DBgrid-->Options-->dgMutiSelect=True
      

  7.   

    判断一下SHIFT键按下没有,再选中出两次鼠标点击的记录不就行了吗
      

  8.   

    的确,我所要实现的功能即suton(suton) 所说的,因为压住ctrl选择一条一条的点太费劲了,有时可能遇到上白条记录需要选择。所以想找一个简单的可以多选的方法。
      

  9.   

    在onclick事件裡面判斷shift鍵是否被按下?
      

  10.   

    同意things(平) (男儿在他乡,焉得不憔悴!) ,简洁!
      

  11.   

    onclick事件中判断Shift是否按下,之后还要记录起始记录的位置和结束记录的位置,然后计算之间的所有记录,并使这些记录被选种,这似乎有些烦琐。我想知道是否有比这样用代码实现更简洁的方法,因为这个功能在平时是个挺常用的一个功能。
      

  12.   

    记好上一次选择的记录,当按Shift并点选择记录后,则将上一次先的记录号开始逐条加入书签。
      

  13.   

    用二公共变量记录开始选中记录与最终选中记录,然后在DrawCell事件中给两行之间的行加上点颜色,表示被选中。
    鄙人从干过这样的事,做起来要控制的细微点
      

  14.   

    我有个想法,可不可以让程序模拟系统处理CTRL+鼠标单击的事件来处理呀,但我还不是很清楚程序模拟系统事件是怎么具体实现的,我想这个一定可以的!请各位高手试试看!