你所需要的是打开DBGrid.Options中的dgMultiSelect 选项...
解决方案 »
- 求老师指导,大量数据通过TCP接收到后显示和存储的问题
- SHFILEOPSTRUCT
- 不懂就要问对不?
- 问一个DSPACK的简单问题
- 求助:如何才能断开本机正常的网络游戏(不关闭游戏,只断线)
- 请教一个关于form窗体的超菜的问题 !
- 请问大家那里有project2000下载的?
- 为什么delphi6老是自动退出
- MediaPlayer组件的什么属性可以控制画面的大小?
- Delphi的远程数据库连接问题
- 如何在adoQuery中增加一个计算字段,来显示查询出的记录的排序的号?记录一显示1,记录二显示2....
- 如何自定义控件,当TEdit,TComboBox等的BorderStyle设为bsNone时,能自定义边框。
对!在加点好玩的:添加DBGrid的DrawDataCell事件,procedure TForm1.DBGrid1DrawDataCell(Sender: TObject;
const Rect: TRect; Field: TField; State: TGridDrawState);
begin
with TDBGrid(Sender) do begin
if SelectedRows.IndexOf(DataSource.Dataset.Book) >= 0 then
Canvas.Brush.Color := clPurple
else if gdSelected in State then
Canvas.Brush.Color := clHighlight
else if (DataSource.Dataset.RecNo and 1) <> 0 then
Canvas.Brush.Color := $00DDEEFF
else
Canvas.Brush.Color := $00DDFFFF;
DefaultDrawDataCell(Rect, Field, State);
end;
end;
例如:
for i := 0 to table1.recordcount - 1 do
begin
if dbgrid1.currentrows.selected then
begin
...
end;
next;
end;
还有,选好了以后不小心一动鼠标以前选的就都没了,确实和在资源管理器中一样。不过我不想这样。这应该是DBGrid控件的特性。我想的是:用户点一下记录就选上了,再点一下取消选择。点别的记录不影响以前的选择。有什么办法呀?是不是要自己响应OnClick,太麻烦了……to: cobi(小新国际)
您的代码似乎有点问题,TDBGrid是没有CurrentRows这么个属性的。应该改成:
(我用ADO)
for i := 1 to ADODataSet.RecordCount do
begin
ADODataSet.RecNo:=i;
if DBGrid1.SelectedRows.CurrentRowSelected then
begin
...
end;
next;
end; 或是用Inprise提供的方法:procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
GotoBook(pointer(DBGrid1.SelectedRows.Items[i])); ... end;
end;