请问如何获得StringGrid中多行选择的内容?(100分)

  • 主题发起人 主题发起人 lipingcool
  • 开始时间 开始时间
L

lipingcool

Unregistered / Unconfirmed
GUEST, unregistred user!
我在StringGrid中选择了多个单元(连续),请问如何能获得这些
单元的内容?
另请问如何实现选择不连续的多个单元(例如Ctrl+鼠标)?
 
1.StringGrid.Selection标记了所选的内容,可以查看Delphi的Help
2.可能需要改进StringGrid控件,他自己不行
 
StringGrid选择连续的单元,不连续的好象不行。
所选择的单元格在Selection中标记了
 
在StringGrid中选择不连续的行需要自己进行处理啦。简单的想法,设置一个隐藏的列,用来表明是否选中,当按住Ctrl键,用鼠标点击这一行时,给这个隐藏的字段赋值为1,否则为0。
这样就可以实现不连续的选择啦。
 
我做过类似功能,但办法比较笨。
做一个循环,while (stringgrid.selection <> nil ) do
取完第一条后把它delete掉。
不知你的需求是否适合。
 
各位能给出具体一点的代码吗?多谢!
 
有谁能帮帮我?
实在是感激不尽!!!
 
真的没有人知道吗?
 
怎么有2个同样的问题?
 
在"数据库-C/S"版中没有人给我具体一点的指示,我只有在"控件-使用"中
再问一次了.
 
可以设一个动态数组:select_text 来存放所选内容,并在MouseUp事件里写
如下代码:

procedure Tadd_db_area_win.StringGridMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
li_left,li_right,li_top,li_bottom,li_loop:integer;

begin
li_left:=stringgrid1.selection.left;
li_right:=stringgrid1.Selection.Right;
li_top:=stringgrid.Selection.Top;
li_bottom:=stringgrid.Selection.Bottom;

if li_bottom-li_top>0 then
begin
setlength(selection_text,((li_bottom-li_top)+1));
for li_loop:=li_top to li_bottom do selection_text[li_loop-
li_top]:=stringgrid.Cells[**,li_loop];
end
else
begin
setlength(selection_text,1);
selection_text[0]:=stringgrid.Cells[**,li_top];
end;

end;
 
多人接受答案了。
 
后退
顶部