我有一个DBGrid,当我在运行时分配SQLQuery时,它链接到客户端数据集 DBGrid自动分配列数。我需要的是当DBGrid自动分配列时我需要设置其中一列来分配一个选项列表。 谁能帮我? 以下过程调用show事件中的表单。该表单包含DataSource,ClientDataSet,SQLViewQuery(TSQLQuery),DatasetProvider和DBGridDetails(TDBGrid)。
procedure TViewDetailsForm.ViewPendingAndReturnCheques;
var I : Integer;
slPickList:TStringList;
begin
slPickList := TStringList.Create;
slPickList.Add('Pending');
slPickList.Add('Returned');
slPickList.Add('Passed');
SQL := 'SELECT a.CHEQUE_NO, a.BANK, a.CHEQUE_DATE, a.AMOUNT,a.STATUS FROM CHEQUES a';
//refreshisng the DBGrid
SQLViewQuery.SQL.Clear;
SQLViewQuery.SQL.Add(SQL);
ClientDataSet.Active := false;
ClientDataSet.Active := true;
DBGridDetails.Columns[0].Width := _Block;
DBGridDetails.Columns[1].Width := _Block;
DBGridDetails.Columns[2].Width := _Block;
DBGridDetails.Columns[3].Width := _Block;
DBGridDetails.Columns[4].Width := _Block;
for I := 0 to DBGridDetails.Columns.Count - 1 do
begin
if DBGridDetails.Columns[I].FieldName = 'STATUS' then
begin
DBGridDetails.Columns[i].ButtonStyle := cbsAuto;
DBGridDetails.Columns[I].PickList := slPickList;
end;
end;
Show;
end;
答案 0 :(得分:1)
这是我刚刚在Delphi 2007中创建的一个示例应用程序,它演示了如何实现这一目标。以下是我设置的所有内容:
单击表单,然后使用Object Inspector创建新的 OnCreate 事件处理程序。添加以下代码:
procedure TForm1.FormCreate(Sender: TObject);
var
SL: TStringList;
begin
with ClientDataSet1 do
begin
FieldDefs.Clear;
FieldDefs.Add('OrderNo', ftInteger);
FieldDefs.Add('Status', ftString, 10);
CreateDataSet;
end;
ClientDataSet1.Active := True;
// Connect a datasource to the CDS
DataSource1.DataSet := ClientDataSet1;
// Connect the grid to that datasource to create the columns.
DBGrid1.DataSource := DataSource1;
// Create the picklist for the second column (Status)
SL := TStringList.Create;
try
SL.Add('Pending');
SL.Add('Returned');
SL.Add('Passed');
DBGrid1.Columns[1].ButtonStyle := cbsAuto;
DBGrid1.Columns[1].PickList := SL;
finally
SL.Free;
end;
end;
运行该应用程序,点击网格中的Status
列,您就会看到上面PickList
添加的三个选项。
答案 1 :(得分:1)
您可以在运行时将值分配给dbgrid列选取列表。
以下是代码: 程序Tfrm1.FormShow(发件人:TObject); VAR slPickList:TStringList中; 我:整数; 开始 slPickList:= TStringList.Create; slPickList.Add('待定&#39); slPickList.Add('返回的&#39); slPickList.Add('传递&#39); 对于我:= 0到2做 开始 。dbgViewAxiomClaims.Columns 1 PickList.add(slPickList [I]); //指定 结束; 端;
结果如下: