DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: webb123
今日帖子: 36
在线用户: 19
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 tanyztj (tany) ★☆☆☆☆ -
普通会员
2020/1/14 0:47:52
标题:
新手再次求教,再次感谢前辈们。问题是:combobox刷新值的问题! 浏览:1695
加入我的收藏
楼主: 我有一个窗口,通过数据库修改了combobox需要显示的值,当我打开另一个的窗口发现combobox的值并没有改变,关掉程序再次打开时,则显示正常,问题就是在一个窗口修改combobox的值,而打开另一个窗口没有刷新,关于获取combobox部分的代码如下,还请前辈们帮忙看看,该如何做,谢谢:

procedure TForm3.xmbox(Sender: TObject);
var
i: integer;
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select distinct 姓名 from 学习');
Open;
combobox1.items.clear;
for i:=0 to (adoquery1.recordcount-1)  do
begin
combobox1.items.add(adoquery1.fieldbyname('姓名').asstring);
adoquery1.next();
end;
end;
end;

procedure TForm8.FormCreate(Sender: TObject);
begin
  xmbox(combobox1);
end;

//再次感谢!!
----------------------------------------------
-
作者:
男 grjs_2004 (grjsITname) ★☆☆☆☆ -
盒子活跃会员
2020/1/14 8:12:52
1楼: 你是通过combobox新增值吧!在新增之后,执行一下xmbox(Form3.combobox1);
xmbox要写在Public里,不然不能调用执行!
----------------------------------------------
Everyone will to do best!
作者:
男 jackalan (nVicen) ★☆☆☆☆ -
盒子活跃会员
2020/1/14 10:14:32
2楼: Create里只在窗口创建时执行一次,你要在更新数据库后,重载一次combobox。
----------------------------------------------
简单做人,认真做事。
作者:
男 tanyztj (tany) ★☆☆☆☆ -
普通会员
2020/1/14 19:00:46
3楼: 是不是我的问题没明示清楚呀,我再写一次:

//form3 中,combobox获得数据库的代码:

procedure TForm3.xmbox(Sender: TObject);
var
i: integer;
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select distinct 姓名 from 学习');
Open;
combobox1.items.clear;
for i:=0 to (adoquery1.recordcount-1)  do
begin
combobox1.items.add(adoquery1.fieldbyname('姓名').asstring);
adoquery1.next();
end;
end;
end;

//form3中,combobox调用。

procedure TForm3.FormCreate(Sender: TObject);
begin
  xmbox(combobox1);
end;

//form2 打开.form3窗口的代码是:
procedure TForm2.ToolButton1Click(Sender: TObject);
begin
  if not Assigned(Form2) then
   begin
   Form2:=TForm2.Create(Self);
   end
   else Form2.Show;
end;


问题尚示解决,麻烦帮帮看看,谢谢!
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2020/1/14 19:44:31
4楼: 别用FormCreate....

既然知道是显示前, 直接用formshow事件吧...
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 tanyztj (tany) ★☆☆☆☆ -
普通会员
2020/1/14 20:13:18
5楼: 谢谢!那要怎么做呢,我在Form3,增了了这个代码,还是不行,不好意思,新手万望指点,谢谢!
procedure TForm3.Formshow(Sender: TObject);
begin
  xmbox(combobox1);

end;
----------------------------------------------
-
作者:
男 arhaha (lin) ★☆☆☆☆ -
盒子活跃会员
2020/1/14 20:28:13
6楼: //form2 打开.form3窗口的代码是:
procedure TForm2.ToolButton1Click(Sender: TObject);
begin
  if not Assigned(Form2) then
   begin
   Form2:=TForm2.Create(Self);
   end
   else Form2.Show;
end;

------  Form2的事件代码中,Form2竟然需要被临时创建?写错了吧?是不是要创建 Form3? 需要加强基础!!
----------------------------------------------
-
作者:
男 tanyztj (tany) ★☆☆☆☆ -
普通会员
2020/1/14 20:40:43
7楼: 不好意思,这个我改过来了,我是学习想多打打代码,所以打错了的,改正了,但问题还是存在的。

再次谢谢!
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2020/1/14 21:17:59
8楼: 在Formshow里面写.. 看是否有清空..
combobox1.items.clear;
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 tanyztj (tany) ★☆☆☆☆ -
普通会员
2020/1/14 23:58:07
9楼: 不起作用~~~如果FormCreate不写就没数据,我多建了个试,发现Formshow没效果,是我写错了?
----------------------------------------------
-
作者:
男 mqqjqr5566 (竹林) ★☆☆☆☆ -
普通会员
2020/1/15 8:32:05
10楼: 呵呵,他是不是没改成功啊。
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2020/1/15 10:12:25
11楼: 呵呵.. 每次都重建,,  重建也不重新邦定事件,,  

我服了... 你至少  xx.onshow = formshow啊..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2020/1/15 14:09:42
12楼: 楼上的,你是 50 步 笑 百步。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 tanyztj (tany) ★☆☆☆☆ -
普通会员
2020/1/16 21:04:55
13楼: 已经解决了,谢谢!解决方法如下:

 procedure TForm3.Formshow(Sender: TObject);
 begin
  xmbox(combobox1);
 end;

然后将Form3表的属性 noshow绑定为Formshow,

再次感谢,希望各位前辈指点时多打几个字,表示清楚些,我们初学者能更好理解,谢谢!
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行66.40625毫秒 RSS