及时问题(100分)

  • 主题发起人 主题发起人 dancing_mouse
  • 开始时间 开始时间
D

dancing_mouse

Unregistered / Unconfirmed
GUEST, unregistred user!
本人初学Delphi碰到以下问题:
在添加一条记录后, 在combobox中不能马上显示刚刚添加那条的记录,而要退出窗体之后才能在combobox中显示刚刚添加的那条记录
程序代码是:
procedure Tman.FormShow(Sender: TObject);
begin
Adoquery1.Open;
while not Adoquery1.Eof do
begin
combobox1.Items.Add(adoquery1.Fields[0].asstring);
Adoquery1.Next;
end;
end;

procedure Tman.BitBtn1Click(Sender: TObject);
begin
with Adotable1 do
begin
open;
Edit;
Append;
if Trim(combobox1.Text)='' then
begin
Application.MessageBox('请输入操作员姓名','提示',0+64);
combobox1.SetFocus;
end
else
if Trim(Edit3.Text)='' then
begin
Application.MessageBox('请输入操作员密码','提示',0+64);
Edit3.SetFocus;
end
else
if Trim(Edit1.Text)='' then
begin
Application.MessageBox('请输入操作员权限','提示',0+64);
Edit1.SetFocus;
end
else
begin
if (combobox1.Text<>'') and (Edit3.text<>'') and (Edit1.Text<>'')
then
begin
if Application.MessageBox('确实要添加用户么?','提示',mb_YesNo)=ID_Yes then
begin
Adotable1.fieldByname('操作员姓名').AsString:=Trim(combobox1.Text);
Adotable1.fieldByname('操作员密码').AsString:=Trim(Edit3.Text);
Adotable1.FieldByName('操作员权限').AsString:=Trim(Edit1.Text);
if (Adotable1.modified) then Adotable1.post;
combobox1.Text:='';
Edit3.Text:='';
Edit1.Text:='';
end;
end;
end;
end;
end;
我想应该是fromshow 事件没能及时实现.
请问delphi中还有其他的事件能实现把数据库中的记录及时的添加到combobox控件中去
 
你保存数据后,执行一次这个过程就可以。

if (Adotable1.modified) then Adotable1.post;
FormShow(Sender);
 
仿照我如下的例程来作就行了:
procedure TfmInputJDKPB.GetDLList(Sender: TObject);
begin
inherited;
cmbxDL.Items.Clear;
with DataModuler.qryPulic do
begin
SQL.Clear;
SQL.Add('SELECT 要显示在ComboBox中的文字 FROM 表名 WHERE 条件=:条件 ORDER BY 排序字段');
ParamByName('条件').AsString := 条件
Open;
First;
while not Eof do
begin
ComboBox.Items.Add(Fields[0].AsString);
Next;
end;
end;
end;
每次需要的时候调用,如记录提交后,以及窗体加载时候
 
我已试过,无论是直接在if (Adotable1.modified) then Adotable1.post;
后添加formshow(sender);
或是另外定义一个涵数,都不行.在设置断点运行时,它总是运行到那一步就不再运行了,还请再指教指教啊
 
运行到哪一步?
 
简单点的,用一个TTIMER,不停地找新的纪录,发现有新的记录,就加到COMBOBOX.
 
增加后执行你的
Adoquery1.Open;
while not Adoquery1.Eof do
begin
combobox1.Items.Add(adoquery1.Fields[0].asstring);
Adoquery1.Next;
end;
一次
 
var
combobox1.Items.clear;
lssql:='select * from tablename';
Adoquery1.close;
Adoquery1.sql.clear;
Adoquery1.sql.add(lssql);
Adoquery1.Open;
Adoquery1.first;
while not Adoquery1.Eof do
begin
combobox1.Items.Add(adoquery1.Fields[0].asstring);
Adoquery1.Next;
end;
把上面的代码写成一个过程.
当插入数据时,调一下不就行了,..有没什么麻烦的.
 
后退
顶部