1000 分求救!!!!!!!!DBGrid多选择问题,小弟在线等,急 !!!! ( 积分: 300 )

  • 主题发起人 主题发起人 boy8899
  • 开始时间 开始时间
B

boy8899

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:1000分求救!!!!!!!!DBGrid多选择问题,小弟在线等,急 !!!!

请教富翁们如何在DBGrid多选的时候只选中符合条件的记录?不符合条件的记录出现提示后不选择?小弟在线等,急 最好详细一点说明或者有例程 小弟愚笨能否给个例程 小弟急!

主要是怎么取消选择!
 
用循环判断标志位,再用DBGrid中的SelectedRows.CurrentRowSelected为False取消选择。
 
对,这样循环处理可以。应该可以到达你说的。
 
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if table1.FieldValues['size']>10 then
begin
showmessage('不符合条件');
dbgrid1.SelectedRows.CurrentRowSelected:=false;
end;
end;

end.
用的是animals.dbf那张数据表。你试试看是不是你想要的。
 
我研究的初步结果,循环肯定不行的,表格会滚动!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADOTable1: TADOTable;
ADOConnection1: TADOConnection;
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ADOTable1BeforeScroll(DataSet: TDataSet);
procedure DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ Private declarations }
F:Boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with dbgrid1, dbgrid1.SelectedRows do
begin
if (CurrentRowSelected = true)
and (DataSource.Dataset.FieldValues['name'] = '烙铁') //询问条件
and (MessageDlg('你是否选择“烙铁”?', mtConfirmation, [mbYes, mbNo], 0) = mrNo) //询问过程
then
CurrentRowSelected := False;
end;
end;

procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
with dbgrid1, dbgrid1.SelectedRows do
begin
if (F = true)
and (DataSource.Dataset.FieldValues['name'] = '烙铁') //询问条件
and (MessageDlg('你是否选择“烙铁”?', mtConfirmation, [mbYes, mbNo], 0) = mrNo) //询问过程
then
CurrentRowSelected :=false;
end;
end;

procedure TForm1.ADOTable1BeforeScroll(DataSet: TDataSet);
begin
F:=dbgrid1.SelectedRows.CurrentRowSelected;
end;

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