for i := cbldeb.Items.Count - 1 downto 0 do
....
解决方案 »
- delphi 数据库里日期相减得到年龄的值怎么写
- delphi怎样动态连接两个数据库怎么做 急急急急急急
- 求助一个小问题
- socket通讯 问题,请教
- Treeview中选择一个,就可以在表格里显示出东西,怎么使用?
- [在线求教]---我照着猛料里的例子写的一个dll,freelibrary时候出错,大侠看看~解决立即给分!!
- 分数不多,请大家帮助一下,封装别人的Dll到自己的Dll内部,如何做??
- MDI中子窗口的显示问题,高分相送!
- 如何调用dll文件???
- 怎么用Delphi调用MySql(win)
- 请教一个有关Form1对象的基本问题!
- 急!急!急!急!亲爱的大虾们,只有你们能救我了,恳请您的帮助,三层数据库系统,关于图片数据提交时的错误:
http://www.csdn.net/expert/topic/146/146920.shtm
那位大虾能否指出更深层的原因?
象下面这样的代码是选哪个就哪个报错
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:= ListBox1.Items.Count-1 downto 0 do
if ListBox1.Selected[i] then ListBox1.Selected[i]:=false;
end;
而如果将这句ListBox1.Selected[i]:=false;改为
ListBox1.Items.Delete(i)后是正常的
//下面是从VCL中COPY的delete方法源码
procedure TCustomListBox.DeleteString( Index: Integer );
begin
SendMessage(Handle, LB_DELETESTRING, Index, 0);
end;
//下面是设置Selected propty的部分
procedure TCustomListBox.SetSelected(Index: Integer; Value: Boolean);
begin
if SendMessage(Handle, LB_SETSEL, Longint(Value), Index) = LB_ERR then
raise EListError.CreateResFmt(@SListIndexError, [Index]);
end;
//会不会是下这句SendMessage(Handle, LB_SETSEL, Longint(Value), Index)有问题?
如果在Button1Click中不去设置Selected属性而直接想向ListBox发消息,不论Index是
i,i+1,还是i-1都会导致LB_ERR,难道是DELPHI的问题?(我是很相信DELPHI的)
希望大家能进一步深入讨论!
i: Integer;
begin
TListBox(cbldeb).MultiSelect := True;
for i := 0 to cbldeb.Items.Count-1 do
cbldeb.Selected[i] := False;
end;
不可以自己赋值的,所以出现上述情况。
问题已解决了,多谢各位关注!
和MultiSelect是否为True 有关。
MultiSelect 为False 时,Selected 值不可知。
没事不要轻易怀疑delphi,多找找自己的程序的问题吧。
cbldeb.Selected的下标是从0开始的吗??
也许你应该改成:
if cbldeb.Items.Count-1 >1 then
for i := 1 to cbldeb.Items.Count-1 do
cbldeb.Selected[i] := false
else
cbldeb.Selected[1] := false;