我有一个条目网格,用户将单击以进行多选处理。根据第一行选择的值,其中一些条目将无效。
我知道 DBGrid.SelectedRows.CurrentRowSelected
,但我找不到适当的地方来检查我的条件并将其设置为 True 或 False。
类似这样:
var
bm: TBookmark;
CachedIdentity: String;
CanSelect: Boolean;
begin
with dgbSkypeConversations do
begin
if SelectedRows.Count > 0 then
begin
DataSource.DataSet.DisableControls;
bm := DataSource.DataSet.GetBookmark;
CachedIdentity := DataSource.DataSet.FieldByName('identity').AsString;
DataSource.DataSet.GotoBookmark(SelectedRows[0]);
CanSelect := DataSource.DataSet.FieldByName('identity').AsString <> CachedIdentity;
DataSource.DataSet.GotoBookmark(bm);
DataSource.DataSet.FreeBookmark(bm);
SelectedRows.CurrentRowSelected := CanSelect;
DataSource.DataSet.EnableControls;
end;
end
end;
我已经尝试了在Application.OnMessage
、DBGrid
和表单中使用OnMouseDown
事件,但是它们都无法工作,并且没有TBookmarkList.BeforeInsertItem
事件。我该怎么做或者必须进行哪些更改?