listbox问题(50分)

  • 主题发起人 主题发起人 自我教育
  • 开始时间 开始时间

自我教育

Unregistered / Unconfirmed
GUEST, unregistred user!
表结构:
列a,b,c得值对应的是True或False
在listBox中对影相是'代码维护','条件维护','用户管理'
问题:
需要将记录中列a,b,c中值为False得对应相显示在listbox中,例如:
现有记录为:True,True,False,应该在listBox中显示的是'用户管理'
就是从原来的listBox中全部显示'代码维护','条件维护','用户管理'三相中
删除其他两项,

我的实现方法是:
For 3 to 5 do
Begin
if Fields.value:='True' then
listbox1.delete(i-3);
End;
 
但是这样有漏删问题!
 
有问题,删除的时候最好从大到小的删除,否则容易出Bug
For 5 downto 35 do
Begin
if Fields.value:='True' then
listbox1.delete(i-3);
End;
 
抱歉,源代码应为:
For i:=3 to 5 do
Begin
if Fields.value:='True' then
listbox1.delete(i-3);
End;

 
For i:=3 to 5 do
Begin
if Fields.value:='True' then
listbox1.selected[i-3]:=true;
End;
listbox1.DeleteSelected;
 
to 自我教育:我给你写的代码你是否实验?
露删的原因在于你删除了一个ListBox的 Item后,其他的自动向前走了一个。
你从后面向前删就不存在这个问题了。
 
随手写的,:)有错误自己修改

var
i:integer
while i<ListBox1.Items.Count do
if ListBox1.selected then
ListBox1.delete
else inc(i);
 
to yzhshi
兄弟我变道了,不过仁兄说得在理,我测试通过!
to 无忌
这样好像不行,我用过
to ugvanxk
这样我没试过,不过看来挺有道理
to 大家
还有个问题:就是如何锁定treeview中选择的根节点,让用户不能选择其他根节点?
 
在OnChanging里面做文章。判断Node ,设置AllowChange
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
767
DelphiTeacher的专栏
D
D
回复
0
查看
809
DelphiTeacher的专栏
D
D
回复
0
查看
639
DelphiTeacher的专栏
D
后退
顶部