DBGrid多选择问题,小弟在线等,急 没有高手了么5555555 ( 积分: 100 )

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

boy8899

Unregistered / Unconfirmed
GUEST, unregistred user!
请教富翁们如何在DBGrid多选的时候只选中符合条件的记录?不符合条件的记录出现提示后不选择?小弟在线等,急 最好详细一点说明或者有例程 小弟愚笨能否给个例程
 
加一个控制字段state,在DBGrid的state字段中的visiable set false,选择的时候判断state是否为1
 
这样可以.
 
帮你顶一个,顺便发个交流群:
无论你是超极菜鸟,亦或是绝顶高手,在这里偶们静下心来平等地交流学习:
delphi交流群:4654765(delphi天堂)欢迎您的加入!让我们共同进步!!
加入者必须改名片为:{地点}+姓名 注:不改者勿扰!
 
我研究的初步结果

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.
 
我认为boy8899应该是这个意思:选错了只是提示,而不让人错了还选。
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with dbgrid1, dbgrid1.SelectedRows do
begin
if CurrentRowSelected then
if (DataSource.Dataset.FieldValues['类别'] <> '电子产品') then
begin
MessageDlg('你选的不是“电子产品”', mtConfirmation, [mbOK], 0);
CurrentRowSelected := False;
end;
end;
end;
 
之所以我写的控件,不愿意公开源代码,其中一个理由,就是不管你是什么思路,
也不管你做的多辛苦,随便复制、粘贴,然后改一改,成了他的了。懒得去骂人,
只是看了珊瑚虫事件,以及我之前在网上有些作品,被胡乱篡改,甚至拿去赚钱,
有些想法。
 
接受答案了.
 
SelectedRows.CurrentRowSelected

我要的就是这一句,苦恼了许久,原来就是这么简单!我差点都发送Ctrl+鼠标左键消息了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
748
import
I
I
回复
0
查看
680
import
I
后退
顶部