我一般不用DBEDIT,直接用EDIT,自己控制心里更有数。
关于你那个问题,我有个类似的程序,你看看吧。procedure TfmCXTJ.CBoxZXChange(Sender: TObject);
var
sz : TStrings;
n : integer;
begin
if CBoxZX.ItemIndex<>-1 then begin //按从下拉菜单中选择的为主
zx:=sBH[CBoxZX.ItemIndex];
end
else if CBoxZX.Text<>'' then begin //用户的填写不为空
zx:=CBoxZX.Text;
try //试着转换成数字编号
StrToInt(zx);
except //填写不正确
on EConvertError do begin
MyMsg('"主修专业"的编号必须为有效的4位数字.');
CBoxZX.ItemIndex:=-1;
CBoxZX.Text:='';
exit;
end;
end;
end
else begin //用户的填写为空
zx:='';
CBoxFX.Items.Clear();
exit;
end; if Length(zx)<4 then
exit; for n:=0 to sBH.Count-1 do begin//检查填写的主修专业编号是否正确
if zx=sBH[n] then
break;
end;
if n=sBH.Count then begin
CBoxZX.SetFocus();
MyMsg('填写的主修专业"' + zx + '"不存在,请检查后再填写.');
CBoxZX.ItemIndex:=-1;
CBoxZX.Text:='';
exit;
end; sz:=TStringList.Create;
with DataModule1.QueryTmp do begin
Close;
SQL.Clear;
SQL.Add( 'select * from 辅修报名专业限制 where 专业编号=' + zx);
Open; sz.Add(FieldByName('限制专业编号1').AsString);
sz.Add(FieldByName('限制专业编号2').AsString);
sz.Add(FieldByName('限制专业编号3').AsString);
Close;
end; CBoxFX.Items.Clear();
for n:=0 to CBoxZX.Items.Count-1 do begin
if (sBH[n] <> zx) and
(sBH[n] <> sz[0]) and
(sBH[n] <> sz[1]) and
(sBH[n] <> sz[2]) then
CBoxFX.Items.Add(CBoxZX.Items[n]);
end;
sz.Clear;
end;
关于你那个问题,我有个类似的程序,你看看吧。procedure TfmCXTJ.CBoxZXChange(Sender: TObject);
var
sz : TStrings;
n : integer;
begin
if CBoxZX.ItemIndex<>-1 then begin //按从下拉菜单中选择的为主
zx:=sBH[CBoxZX.ItemIndex];
end
else if CBoxZX.Text<>'' then begin //用户的填写不为空
zx:=CBoxZX.Text;
try //试着转换成数字编号
StrToInt(zx);
except //填写不正确
on EConvertError do begin
MyMsg('"主修专业"的编号必须为有效的4位数字.');
CBoxZX.ItemIndex:=-1;
CBoxZX.Text:='';
exit;
end;
end;
end
else begin //用户的填写为空
zx:='';
CBoxFX.Items.Clear();
exit;
end; if Length(zx)<4 then
exit; for n:=0 to sBH.Count-1 do begin//检查填写的主修专业编号是否正确
if zx=sBH[n] then
break;
end;
if n=sBH.Count then begin
CBoxZX.SetFocus();
MyMsg('填写的主修专业"' + zx + '"不存在,请检查后再填写.');
CBoxZX.ItemIndex:=-1;
CBoxZX.Text:='';
exit;
end; sz:=TStringList.Create;
with DataModule1.QueryTmp do begin
Close;
SQL.Clear;
SQL.Add( 'select * from 辅修报名专业限制 where 专业编号=' + zx);
Open; sz.Add(FieldByName('限制专业编号1').AsString);
sz.Add(FieldByName('限制专业编号2').AsString);
sz.Add(FieldByName('限制专业编号3').AsString);
Close;
end; CBoxFX.Items.Clear();
for n:=0 to CBoxZX.Items.Count-1 do begin
if (sBH[n] <> zx) and
(sBH[n] <> sz[0]) and
(sBH[n] <> sz[1]) and
(sBH[n] <> sz[2]) then
CBoxFX.Items.Add(CBoxZX.Items[n]);
end;
sz.Clear;
end;
解决方案 »
- 怎样解决Delphi2005编辑器自动关闭
- 为庆祝D2010发布,留贴给第一个发可下载用的正式发布版本的同志!
- enlib控件怎么实现下拉框
- 没有可用分的过来。
- delphi6 怎样删除一个控件?
- 麻烦各位delphi的高手推荐一下入门的好书.(回复者有分)
- Form1设为avilable form.用Application.CreatForm(TForm1,Form1);Form1.Show;创建子窗体出错。是不是创建MDI或CHILD不能用以上方法啊?
- 请教CppWebBrowser怎么把它的内容存储成图片?
- 能不能隐藏Combobox里的其中一个选项内容?
- 如何在Onclick事件中打开outlook?
- kylix 安装???
- 屏幕保护程序的预览问题
dbedit一样的有text属性,要把姓名显示到dbedit中去,在你选中listbox中记录时,应把当前记录游标定位到选中的记录,这时在dbedit不就可以自动显示姓名了吗?
1.put all the items into one Listbox;
2.Add code in the Edit.Onchaneg event as follows: procedure TFrmCondZZ.E_xtdwdmChange(Sender: TObject);
var
i: integer;
begin
LB_xtdwdm.Items.Clear;
if Trim(E_xtdwdm.Text) = '' then
for i := 0 to DWDMLST.items.Count-1 do
LB_xtdwdm.Items.Add(DWDMLST.Items.Strings[i])
else
for i := 0 to DWDMLST.items.Count-1 do
begin
if Pos(Trim(E_xtdwdm.Text),DWDMLST.Items.Strings[i])<>0 then
LB_xtdwdm.Items.Add(DWDMLST.Items.Strings[i]);
end;
if DWDMLST.Items.Count>0 then
DWDMLST.Itemindex := 0;
end;SORRY! I don't know why I can't input Chinese!