[delphi]代码看不懂,请高手帮解释下. Form里有SH_spmc的文本框,ListBox1

该代码的作用是该edit的text输入,会出现类似的百度下拉框,选中回车后,其他两个edit的(SH_spbh和SH_sptm)内容也会相应的变动.procedureTF... 该代码的作用是该edit的text输入,会出现类似的百度下拉框,选中回车后,其他两个edit的(SH_spbh和SH_sptm)内容也会相应的变动.
procedure TForm1.SH_spmcKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
VAR SqlStr:STRING;
begin
if (Key=38) and (ListBox1.Visible) then //当按下方向上键,并且ListBox1可视时
begin
if ListBox1.ItemIndex>0 then //若ListBox1的指针>0 ???????? 1
ListBox1.ItemIndex:=ListBox1.ItemIndex-1; //??????????? 2
exit;
end;
if (Key=40) and (ListBox1.Visible) then
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex+1;
exit;
end;
if (Key=13) and (ListBox1.Visible) then
begin
if ListBox1.ItemIndex>-1 then
TEdit(Sender).Text:=ListBox1.Items[ListBox1.ItemIndex]; //??????? 3
ListBox1.Visible :=False; //ListBox1不可视
TEdit(Sender).SelStart:=Length(TEdit(Sender).Text); // ????? 4
SH_sl.SetFocus;
exit;
end;
ADOQuery4.Close ;
ADOQuery4.SQL.Text :='select spmc from sp where spmccode like ''%'+TEdit(Sender).Text+'%'''; //ADOQuery4.SQL.Text 是什么????? 5
ADOQuery4.Open ;
ListBox1.Items.Clear ;
if ADOQuery4.IsEmpty then exit; //??????? 6
ADOQuery4.First ; //指向数据库的第一条数据 7
While not ADOQuery4.Eof do //???????8
begin
ListBox1.Items.Add(ADOQuery4.Fields[0].AsString); // ??????? 9
ADOQuery4.Next ; //指向下一个数据 10
end;
ADOQuery4.Close ;
ListBox1.Left := TEdit(Sender).Left ; // ?????? 11
ListBox1.Top := TEdit(Sender).Top+TEdit(Sender).Height +1; //????? 12
ListBox1.ItemIndex:=0; //为什么要设为1????? 13
ListBox1.Visible :=True;

with ADOQuery4 DO
begin
ADOQuery4.Close ;
ADOQuery4.SQL.Clear;
SqlStr:='select * from sp where spmccode like ''%'+UpperCase(TEdit(Sender).Text)+'%''';
ADOQuery4.SQL.Add(SqlStr);
ADOQuery4.Open ;
SH_spbh.Text:=ADOQuery4.fieldByName('spbh').AsString;
SH_sptm.Text:=ADOQuery4.fieldByName('sptm').AsString;
if SH_spmc.Text='' then
begin
SH_spbh.Clear;
SH_sptm.Clear;
end;
end;

end;
我打??的地方就是不明白的,能否解释一下~~谢谢
展开
 我来答
匿名用户
2013-03-01
展开全部
1和2 实现的是按下方向键上,listbox向上移动一位,那个不是指针,而是listbox的被选中的项的号码
3 edit中显示listbox被选中的内容
4 把光标移到edit最后(即移到内容长度)
5 数据库指令,这里是条查询
6 7 8 9 10 把数据库查询返回的内容全部放入listbox中
11 12 把listbox位置设置到edit正下方
13 listbox选择第一项
追问
5.ADOQuery4.SQL.Text 是保存到什么地方去了?
8.Eof是什么意思?
9..Fields[0].是什么意思?可以写.Fields[1].或.Fields[2].吗?
追答
5存到ado里,也就是和数据库接口的中间层,你可以理解为这条命令发给了数据库
8 end of file 即当没有到结尾时执行添加
9 field指的是你数据库的结构,field【0】就是你数据库结构里的第一项
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式