注册 登录
编程论坛 Delphi论坛

combobox制作的3级下拉菜单

guang2356447 发布于 2007-10-11 22:26, 1390 次点击

那位高手能帮忙注释下什么意思
我的表ywzl 字段是yjl ejl sjl
业务种类 一级类 2级类 3级类

我注释了一部分 还有的不知道
procedure Tts.LoadDataToCombox(Target:TComboBox;DataColumn:String;Condition:String='');//定义一个过程
begin
if Target=nil then Exit; //如果combobox为空 就退出
if DataColumn<='' then Exit; //不知道什么意思
with ADOQuery1 do
begin
Close; //distinct 表示无重复显示字段内容
SQL.Text:='SELECT DISTINCT '+DataColumn+' FROM ywzl WHERE '+DataColumn+' IS NOT NULL '+IfThen((Condition<=''),'',' AND '+Condition); // 不知道什么意思
Open;
Target.Items.Clear; // 晴空combobox中的内容
while not Eof do //从头检测到尾
begin
Target.Items.Add(Fields.Fields[0].AsString);//不知道什么意思
Next;
end;
Close;
end;
Target.Visible:=(Target.Items.Count>0); //透明取决于combobox里面的内容大于0则返回true
end;


procedure Tts.FormCreate(Sender: TObject);
begin
LoadDataToCombox(ComboBox4,'yjl'); //combobox4中的内容显示 字段为yjl的内容 1级类
end;

procedure Tts.ComboBox4Change(Sender: TObject);
begin
LoadDataToCombox(ComboBox5,'ejl','yjl='''+ComboBox4.Text+''''); //combobox5中的内容显示 字段为ejl的内容 2级类 条件是 // 条件不知道是什么意思
ComboBox6.Visible:=False;
end;

procedure Tts.ComboBox5Change(Sender: TObject);
begin
LoadDataToCombox(ComboBox6,'sjl','yjl='''+ComboBox4.Text+''' AND ejl='''+ComboBox5.Text+'''');
end;

2 回复
#2
sky_yang_sky2007-10-12 08:35

procedure Tts.LoadDataToCombox(Target:TComboBox;DataColumn:String;Condition:String='');//定义一个过程
begin
if Target=nil then Exit; //如果combobox为空 就退出
if DataColumn<='' then Exit; //{為DataColumn 字段沒有內容時則退出}
with ADOQuery1 do
begin
Close; //distinct 表示无重复显示字段内容
SQL.Text:='SELECT DISTINCT '+DataColumn+' FROM ywzl WHERE '+DataColumn+' IS NOT NULL '+IfThen((Condition<=''),'',' AND '+Condition); // {當DataColumn字段伙內容不為空,且Condition<=‘’條件成立取值為‘,’,否則取值為‘and’+condition的值時,查詢DataColumn字段所有記錄且重復記錄不顯示}
Open;
Target.Items.Clear; // 晴空combobox中的内容
while not Eof do //从头检测到尾
begin
Target.Items.Add(Fields.Fields[0].AsString);//在Target中增加記錄
Next;
end;
Close;
end;
Target.Visible:=(Target.Items.Count>0); //透明取决于combobox里面的内容大于0则返回true
end;

procedure Tts.FormCreate(Sender: TObject);
begin
LoadDataToCombox(ComboBox4,'yjl'); //combobox4中的内容显示 字段为yjl的内容 1级类
end;
procedure Tts.ComboBox4Change(Sender: TObject);
begin
LoadDataToCombox(ComboBox5,'ejl','yjl='''+ComboBox4.Text+''''); //combobox5中的内容显示 字段为ejl的内容 2级类 条件是 // 這個條件就是上面的定義的過程的調用呀
ComboBox6.Visible:=False;
end;
procedure Tts.ComboBox5Change(Sender: TObject);
begin
LoadDataToCombox(ComboBox6,'sjl','yjl='''+ComboBox4.Text+''' AND ejl='''+ComboBox5.Text+'''');
end;

#3
guang23564472007-10-12 16:30

感谢
sky_yang_sky

1