在线等!combobox中数据的刷新问题

terry65737701 2012-04-04 09:45:16
我通过formcreate将数据库相应字段的数据添加到了combobox中,现在发现一个问题是如果我把其中一组数据给删除,combobox中仍然显示着那串数据,一定要把程序关闭再重新打开才会更新里面的数据。我也知道formcreate是一次性的东西,那现在有没有甚么办法比如添加一个刷新按钮来更新combobox中新的数据(或是更好的办法...)关闭程序重新打开巨麻烦啊~~~
...全文
354 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
polebear26 2012-04-04
  • 打赏
  • 举报
回复
对adoqueryDW 不要用free
polebear26 2012-04-04
  • 打赏
  • 举报
回复
procedure TCRSH.setcomb;
begin
with adoqueryDW do
begin

//这里加
sql.close;

sql.Clear;
sql.Add('select 单位名称 from 单位类别表');
fmj1743458607 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

感谢LS的指点~问题大致是解决了~但发现这刷新貌似只能点一次~点第二次就报内存错误了,麻烦帮我看下是不是我获取数据库时的方式不对~


procedure TCRSH.setcomb;
begin
with adoqueryDW do
begin
sql.Clear;
sql.Add('select 单位名称 from 单位类别表');
……
[/Quote]

代码里的free;语句是错误的,在这里的意思是Free掉adoqueryDW,所以第二次执行时就错误了
polebear26 2012-04-04
  • 打赏
  • 举报
回复
combobox在formcreate事件中添加的内容,那么只会在窗口创建时执行一次,这个数据与数据库在其它时间并不关联,所以数据库删除了数据后combobox的内容是不会变化的,你应该选择合适的时间来重置combobox的内容
terry65737701 2012-04-04
  • 打赏
  • 举报
回复
感谢LS的指点~问题大致是解决了~但发现这刷新貌似只能点一次~点第二次就报内存错误了,麻烦帮我看下是不是我获取数据库时的方式不对~


procedure TCRSH.setcomb;
begin
with adoqueryDW do
begin
sql.Clear;
sql.Add('select 单位名称 from 单位类别表');
open;
combobox1.Items.Clear;
while not eof do
begin
combobox1.Items.Add(FieldByName('单位名称').asstring);
next;
end;
close;
free;
combobox1.ItemIndex:=0;
end;
end;
kaikai_kk 2012-04-04
  • 打赏
  • 举报
回复
如果增加/删除/修改时同时增加/删除/修改combobox中对应的数据,会麻烦点,要处理很多相关的事件
不如重新加载数据来的方便

{声明方法setcomb}
private
procedure setcomb;

{添加combobox数据,数据来源自己决定从那里取}
procedure TForm1.setcomb;
begin
with combobox.items do
begin
clear;
add('A');
add('B');
end;
end;

{打开窗口时调用}
procedure TForm1.FormCreate(Sender: TObject);
begin
setcomb;
end;

{刷新按扭调用,或者其它想刷新的地方就加上setcomb;就行了}
procedure TForm1.Button1Click(Sender: TObject);
begin
setcomb;
end;
Oraclers 2012-04-04
  • 打赏
  • 举报
回复
你可以在删除数据库表中的数据后去删除对应ComboBox中项,代码可以写在数据集的OnAfterDelete事件中。
2016-1-31 更新 1、使用时不再需要显示调用followCustomHandle方法,即可生效扩展属性。 2013-9-3 更新 1、$.showWindow 和 $.showModalDialog 在useiframe=true时,对窗体body增加遮罩控制。 2、easyui.tabs的add方法当useiframe=true时,增加遮罩控制。 3、toolbar增加url属性,可以通过请求后台数据构建。 4、增加mask(遮罩)扩展。 2013-8-26 更新 1、tree增加支持类标准数据格式加载,具体看demo或jquery.easyui.tree.extend.js文件开头说明。 2、修复datagrid在rowediting编辑风格时点击“确定”按钮无法提交问题。 3、datagrid和treegrid增加getEditingRows方法,用来获取所有正在编辑的行。 4、修复tabs.add方法,当useiframe=true时, iframe的高度改为100%。 5、修复当tabs使用iframe时,右键菜单刷新报错问题。 6、增加combotree对简单数据格式和类标准数据格式的加载,具体参考jquery.easyui.tree.extend.js文件开头说明。 7、修复datagrid.onConfirmEdit事件默认实现bug。 8、增加treegrid.onConfirmEdit事件。 2013-8-12 更新 1、修复combobox在级联操作时,传递的swd参数值为null,而不是选值。 2、datagrid的addEventListener 方法增加对事件onExpandRow和onCollapseRow的控制。 3、tree增加自定义属性 attributes,用于简单数据加载时,指定那些字段当作node的attributes属性使用。 4、combobox增加 getSelected 方法, 返回选item的data值。 5、combogrid增加 getSelected 方法,返回选item的data值。 6、datagrid增加 getAllExpandRowIndex 方法,用于在detailView视图下获取当前页已展开行的索引。 7、datagrid增加 getExpandRowIndex 方法,用于在detailView视图下获取当前页第一个展开行的索引。 8、datagrid增加 fixDetailRowWidth 方法,用于detailView视图下修改rowDetial组件宽度。 9、getAllExpandRowIndex、getExpandRowIndex、fixDetailRowWidth 这三个方法联合使用可解决detailView视图下列拖拽时显示错位问题。 10、修复datagrid 的rowEditing编辑风格在没有数据的datagrid增加数据后,再编辑时无法显示的问题。 11、datagrid增加自定义事件 onConfirmEdit , 用于rowEditing编辑风格点击“确定”按钮时触发。当事件返回false时终止endEdit方法调用。 2013-7-31 更新 1、$.showWindow、$.showModalDialog 这两个方法增加返回值,返回值指向当前弹出窗的引用。 2、移除根据$.browser.msie判断浏览器版本。 2013-7-18 更新 1、menu、datagrid、combo、combobox、panel、tabs、tree、treegrid 增加 addEventListener 方法。 2、修复menu、datagrid、combo、combobox、panel、tabs、tree、treegrid 因事件注册造成多次重复渲染的问题(包括多次请求后台数据)。 3、移除datagrid 的rowContextMenu菜单项默认事件替换功能。 4、删除datagrid rowContextMenu默认菜单的增加、编辑、导出菜单项。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧