【发布时间】:2016-10-05 21:40:41
【问题描述】:
我正在使用添加到我的 DBGrid - OnCellClick 事件的以下代码
procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
if dbmodule.comenziDataSet.Active then
begin
if not Assigned(dbgridCelulaForm) then
begin
dbgridCelulaForm := TdbgridCelulaForm.Create(Self);
dbgridCelulaForm.DBMemoCelula.DataSource := dbmodule.comenziSource;
end;
dbgridCelulaForm.Visible := False;
dbgridCelulaForm.Visible := True;
dbgridCelulaForm.DBMemoCelula.DataField := Column.FieldName;
dbgridCelulaForm.Caption := Format('%s / randul: %d',[Column.FieldName, DBGrid1.DataSource.DataSet.RecNo]);
end;
end;
dbgridCelulaForm = 包含TDBMemo 的表单名称
DBMemoCelula = TDBMemo 的名称
dbmodule.comenziDataSet =comenziDataSet 是DataSet 的名称,dbmodule 是data module 的名称(单位,类似于表单)-DataSet 在data module 上,所以,dbmodule.comenziDataSet
dbmodule.comenziSource = 同数据集,数据模块上的DataSource,源名为comenziSource
好的,这段代码的作用:
单击DBGrid 上的一个单元格后,它会弹出一个form(名为dbgridCelulaForm),其中包含一个TBMemo(名为DBMemoCelula),它会显示该单元格中包含的信息(例如,客户名称例如,或任何单元格在我的数据库中保存)
这很好,我的问题是我现在无法在DBGrid 中选择行,好吧,我可以,但是一旦我做了第一个地方,我在我想要选择的特定行上单击(一个单元格,任何)我的鼠标,然后单元格激活并弹出form。
是否可以在 DBGrid - OnDblClick 事件中使用此代码而不是 OnCellClick ?
这意味着一旦我双击一行/单元格,form 应该会弹出并显示信息,但双击 - 不是单击。
这样,如果需要,我仍然可以选择行并查看单元格中的信息。
或任何其他方式/地方使用/接收此功能。 有什么想法吗?
如果我的解释模棱两可并且您认为这会有所帮助,我可以发布所有内容的快速视频,请在评论/答案中告诉我。
另外,我正在使用 RAD Studio 10 Seattle 和 dbexpress 组件作为数据库 - 如果有帮助的话。
谢谢!
【问题讨论】:
-
完全没有歧义......我实现类似功能的方式是通过网格列的编辑按钮 - 在网格上触发 OnEditButtonClick 事件。将按钮样式设置为 cbsEllipsis,以便在单击时弹出对话框。也可以通过 Alt+Down 触发。
-
您好,感谢您的回复。我已经将 OnEditButtonClick 用于其他用途,所以不能使用它。 Martyn 的回答对您的 SelectedField 评论也有帮助,谢谢!
标签: mysql delphi dbgrid tdbgrid