我有一个值为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;
答案 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.
我希望这有帮助,请问你是否有什么东西不清楚,或者你不明白的东西,我试着详细解释。