从组合框中显示tdbmemo中的项目

时间:2010-06-17 03:13:32

标签: delphi

我有一个值为category1和category2的组合框...类别1包含铅笔,食物,杂志,报纸...... 当我选择category1时,我想检索tdbmemo中的项目。然后我想在tdbmemo中显示相同的项目 checklistbox ...我不知道该怎么做...我使用clcat.items.add来显示项目,但项目不显示

procedure TfrmSysConfig.FillInCheckListClCat;  
var  
  sTable  : string;  
  sqlCat  : TIBOQuery;  
  iIndex :integer;  
  lstCat : TStringList;  
begin  
  if tblMain.FieldByName('POS_ReceiptCatBreakDown').AsString <> '' then begin  
     sqlCat := TIBOQuery.Create(nil);  
     sqlCat.IB_Connection := dmMain.db;  
     lstCat := TStringList.Create;  
     try  
       sqlCat.SQL.Text := 'SELECT code FROM ' + cboCategory.Value;  
       sqlCat.Open;  
       while not sqlCat.Eof do begin  
         clCat.Items.Add( sqlCat.FieldByName( 'Code' ).AsString );  
         sqlCat.Next;  
       end;  
     finally  
       lstCat.Free;  
       sqlCat.Free;  
     end;  
  end;  
end;  

2 个答案:

答案 0 :(得分:0)

sqlCat.SQL.Text:='SELECT code FROM'+ cboCategory.Value; - 我相信这不会起作用......一个select子句类似于“select * from table where condition”。

我之前和IBObjects一起工作过,这些组件有一些有用的属性。

使用IB_ComboBox作为列表(category1和category2等)并将其链接到IB_Memo(我不确定100%这是名称,但你会发现)并且使用IBTable你可以设置一个过滤器超过它。他们还在网站上提供了非常有用的文档。

最好的问候,

答案 1 :(得分:0)

继承人我是怎么做到的...... 首先在表单组合框,dbmemo和check listbox上删除三个组件(正如您已经拥有的那样)。

然后在单元''var'部分中添加一个字符串列表变量,我将其命名为strs

strs : tstringlist;

下一个 在formcreate事件初始化tstringlist项目,清除组合框并添加'category1'和'category2'项目.....继承人如何做到

procedure TForm2.FormCreate(Sender: TObject);
begin
    strs := TStringList.create;
    strs.Add('food');
    strs.Add('magazine');
     strs.Add('pencil');
    strs.Add('newspaper');
    Combobox1.Items.clear;
    ComboBox1.Items.add('category1');
    ComboBox1.Items.add('category2');

end;

接下来我们为组合框更改编写事件处理程序并编写更新checklistbox和dbmemo的代码:

procedure TForm2.ComboBox1Change(Sender: TObject);
begin
     if ComboBox1.ItemIndex = 0 then
     DBMemo1.lines.AddStrings(strs);
     CheckListBox1.Items.addstrings(strs);
end;

下面是完整的代码:

 unit project1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, CheckLst;

type
  TForm2 = class(TForm)
    ComboBox1: TComboBox;
    DBMemo1: TDBMemo;
    CheckListBox1: TCheckListBox;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  strs : tstringlist;

implementation

{$R *.dfm}

procedure TForm2.ComboBox1Change(Sender: TObject);
begin
     if ComboBox1.ItemIndex = 0 then
     DBMemo1.lines.AddStrings(strs);
     CheckListBox1.Items.addstrings(strs);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
    strs := TStringList.create;
    strs.Add('food');
    strs.add('magazine');
     strs.Add('pencil');
    strs.add('newspaper');
    combobox1.Items.clear;
    ComboBox1.items.add('category1');
    ComboBox1.items.add('category2');

end;


end.

我希望这有帮助,请问你是否有什么东西不清楚,或者你不明白的东西,我试着详细解释。