如何使dbgrid中一些行不能修改(100)

  • 主题发起人 主题发起人 augur
  • 开始时间 开始时间
A

augur

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使dbgrid中一些行不能修改,而其他行可以修改。
 
如果是用Adoquery连接,则在BeforeEdit事件中进行判断。
 
procedure TForm1.DBGrid1CellClick(Column: TColumn);begin if (Column.Grid.DataSource <> nil) and (Column.Grid.DataSource.DataSet <> nil) and Column.Grid.DataSource.DataSet.Active then begin if Column.Field.Value = '度假村' then // 你要去掉编辑的条件 begin if dgEditing in DBGrid1.Options then DBGrid1.Options := DBGrid1.Options - [dgEditing]; end else if not (dgEditing in DBGrid1.Options) then DBGrid1.Options := DBGrid1.Options + [dgEditing]; end;end;
 
楼上的,不知道用键盘移动记录会不会触发CellClick事件?
 
只能说是方法procedure TForm1.DBGrid1CellClick(Column: TColumn);begin if (DBGrid1.DataSource <> nil) and (DBGrid1.DataSource.DataSet <> nil) and DBGrid1.DataSource.DataSet.Active then begin if DBGrid1.Fields[2].Value = '度假村' then // 你要去掉编辑的条件 begin if dgEditing in DBGrid1.Options then DBGrid1.Options := DBGrid1.Options - [dgEditing]; end else if not (dgEditing in DBGrid1.Options) then DBGrid1.Options := DBGrid1.Options + [dgEditing]; if dgEditing in DBGrid1.Options then Caption := 'Edit is Enabled' else Caption := 'Edit is not Enabled'; end;end;procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key in [VK_DOWN, VK_UP] then DBGrid1CellClick(nil);end;
 
我还是习惯放在BeforeEdit事件中
 
数据集有事件,可用此实现。也就是zbdzjx说的。
 
后退
顶部