使用TcxPopUpEdit
问题描述:
我已经尝试使用cxGrid和TcxPopEdit来创建checkedComboBox,并且我实现了检查列表中的每个复选框,并在PopupEdit中显示选中的值。使用TcxPopUpEdit
为了扩展它,我为GridView添加了一个PopupMenu。
现在,有两个按钮说全选,全部清除popupmenu,当我右键GridView并说选择它应该检查所有的复选框,当我说清除所有它应该取消所有复选框。
任何人都可以请建议我一些想法实现这一目标? 顺便说一下,我们使用Dev Express 5.15(Express QuantumGrid v5.15等)和Borland Delphi 6作为开发IDE。
我附上我的应用程序外观的截图。 这里是我为此执行的源代码从DropBox获取示例项目。 SampleProject
答
下面的代码将设置或清除与连接到网格数据源的数据集中名为'标记'的字段关联的复选框。如果这不是你想要做的,你需要在你的q中更具体。你的项目代码
procedure TForm1.ProcessCheckboxes(SetCB : Boolean);
var
ADataSet : TDataSet;
BM : TBookmark;
Field : TField;
begin
ADataSet := DataSource1.DataSet;
Field := ADataSet.FieldByName('Marked')
BM := ADataSet.GetBookmark; // Place a bookmark on the dataset so that the
// same row stays current
try
ADataSet.DisableControls; // temporarily prevent the grid from being updated on-screen
ADataSet.First;
while not ADataSet.Eof do begin
ADataSet.Edit;
if SetCB then
Field.Value := True
else
Field.Value := False;
ADataSet.Post;
ADataSet.Next;
end;
finally
ADataSet.GoToBookMark(BM); // go back to the row where we placed the bookmark
ADataSet.FreeBookMark(BM);
ADataSet.EnableControls;
end;
end;
答
基地,我写一些代码,非常接近@MartynA答案,但你的codes.I基地没有测试他们,但你需要的主要逻辑是在这两个答案。为此,您必须更改数据而不是直接更改组件属性。
procedure TfrmCXPopUpEdit.CheckAll1Click(Sender: TObject);
Var
ADataSet : TDataSet;
bm : TBookmark;
begin
bm := CDS_LookUp.GetBookmark;
CDS_LookUp.DisableControls;
CDS_LookUp.first;
while not CDS_LookUp.eof do
begin
CDS_LookUp.edit;
CDS_LookUpDBFLAG.AsBoolean := true;
CDS_LookUp.post;
CDS_LookUp.next;
end;
CDS_LookUp.GoToBookMark(bm);
CDS_LookUp.FreeBookMark(bm);
CDS_LookUp.EnableControls;
end;
procedure TfrmCXPopUpEdit.ClearAll1Click(Sender: TObject);
Var
ADataSet : TDataSet;
bm : TBookmark;
begin
bm := CDS_LookUp.GetBookmark;
CDS_LookUp.DisableControls;
CDS_LookUp.first;
while not CDS_LookUp.eof do
begin
CDS_LookUp.edit;
CDS_LookUpDBFLAG.AsBoolean := false;
CDS_LookUp.post;
CDS_LookUp.next;
end;
CDS_LookUp.GoToBookMark(bm);
CDS_LookUp.FreeBookMark(bm);
CDS_LookUp.EnableControls;
end;
SO不是代码编写服务。我们很乐意回答您可能针对您的实施*提出的具体问题。你为什么不自己做,实际的问题是什么?另外,你已经是一个足够长的成员,知道一个问题的所有细节必须包含在问题本身中。外部链接可能会停止工作,从而使您的问题对于未来的读者毫无价值。 –
我只想提出一些关于如何处理我的需求的建议。我正在尝试。 – userhi
我没有下载你的DropBox代码,但是...最简单的方法是简单地遍历数据集(在Disable-和EnableControls之间的括号内),设置或清除填充复选框的字段。 – MartynA