在ListView中建几个Columnitem := lstTest.items.add;
item.caption := str1;
item.subitems.add(str2);
item.subitems.add(str3);执行到item.caption := str1;时报错:list index out of bounds(2)
我建了5个Column,不至于溢出呀
请高人指点
item.caption := str1;
item.subitems.add(str2);
item.subitems.add(str3);执行到item.caption := str1;时报错:list index out of bounds(2)
我建了5个Column,不至于溢出呀
请高人指点
解决方案 »
- 如何在PNG图像上绘制文字
- pchar(),pwidechar(),pansichar()都不行啊。
- 谁可以给出waveInOpen及其相关API函数的Delphi范例,感激不尽
- 请问在那里可以下载到installshile的非限制版本
- 如何用代码动态的在paradox数据库添加字段!
- 怎样设置打印机纸的大小
- 如何设计程序在Memo当前光标位置插入字符串?急.
- 100 分寻求答案 (有关C/S的问题)
- 高手请进,请高手帮忙啊,急!!!!
- 如何控制另一程序的某个控件执行它的默认操作!
- Oracle Access(ODAC)组件,大家用的什么版本,SmartQuery组件中是否有UpdataModen属性
- 如何高效率的获取网页中指定内容的网址?
我一直都用得好好的,突然就不行了.
我看了一下,我一共5个Column,添加的时候居然是从第4个Column开始写,所以会out of bounds(2)可为什么item.caption会从第4个开始呢,怎么都查不出原因
没办法贴图呢,就是报这个错,抱错的同时能看到把第一个caption的值写到了第4个Column
你这样子还不如不问问题。
到了第7楼才出现IdServer谁知道你怎么添加怎么删除?
listview你不用线程操作本来就有错。
procedure TServer.IdServerExecute(AThread: TIdPeerThread);
var
msg: String;
begin
msg := AThread.Connection.ReadLn;
if msg = '' then exit; ReadMsg(msg);
end;procedure TServer.ReadMsg(msg: String);
var
item: TListItem;
begin
M_Lock.Enter; //M_Lock是全局变量TCriticalSection
item := ListView1.Items.Add;
item.Caption := '0'; //单步执行到这里报错
item.subItems.Add('1');
item.subItems.Add('2');
item.subItems.Add('3');
item.subItems.Add(msg);
M_Lock.Leave;
end;
重新开个进程同样报错
用Synchronize解决问题,原来VCL的可显示控件只能用主线程来控制。我在Execute里面另外初始化一个用来处理消息的线程类,再把ListView添加的过程函数放在Synchronize里面,问题就解决了。