listview 当文本大于列宽时,如何把文本的最后部分显示完整 【已解决】
本帖最后由 fenhanxue 于 2015-3-29 17:00 编辑_GUICtrlListView_SetColumnWidth 本帖最后由 fenhanxue 于 2015-3-29 16:18 编辑
回复 2# netegg
宽度是固定的,在实际应用中,我想在这里列中,要多次添加文本,
比如,我第1次会添加:这是第1次添加的文本BALABALABALA
第2次会添加:这是第2次添加的文本BALABALABALA
第N次会添加:这是第n次添加的文本BALABALABALA
那么,这个文本,就会变成这样的形式:
这是第1次添加的文本BALABALABALA & 这是第2次添加的文本BALABALABALA & 。。。。。。这是第N次添加的文本BALABALABALA
那么,想要上面的这一堆红色的文本,最新添加的文字,一定要显示全,之前添加的文本,就可以只显示部分 本帖最后由 netegg 于 2015-3-29 16:26 编辑
_GUICtrlListView_SetColumnWidth($hListView, 2, StringLen( _GUICtrlListView_GetItemText($hListView, 1, 1))*16)
既然列宽是固定的,那么只能更改字体大小了
这和多少次添加没关系 本帖最后由 netegg 于 2015-3-29 16:40 编辑
不过不考虑以前的话,就取出字符串要显示的部分,不就完了前后用...代替,
你是说前面的不管,只管后面的,如果是这样,那就
_GUICtrlListView_SetItemwidth($listview, $column, $num)
_GUICtrlListView_SetItemtext($listview, $index, '...' & stringright(_GUICtrlListView_getItemText($listview, $index, $iSubindex) & $tring, $num-3), $subindex) 回复 4# netegg
这段字体我是打算用来记录程序的运行状态,所以会随着程序的运行,字符会不断的增加,到最后会成百上千,大致逻辑是这样的:For$i = 1 To 10000
If need_recordThen; need_record当程序判断后,觉得需要进行记录
Local $temp = _GUICtrlListView_GetItemText($hListView,$index)
Local $temp_out = $temp & '这是第'&$i&"次记录,记录的内容为balabalabala"
_GUICtrlListView_SetItemText($hListView,$index,$temp_out)
EndIf
Next 本帖最后由 netegg 于 2015-3-29 16:45 编辑
回复 6# fenhanxue
那你用错东西了,或者说你的逻辑本身有点瑕疵,原来的数据还要不要,如果不要,直接设置,取字符串定宽就行了,如果要,麻烦大了,10000个数据很容易内存接收不了,直接崩溃 应该用什么?我打算有20行的listview的样子,每行相当于一个独立的程序,每行都对应一个独立的程序,进行独立的记录 点击子项,取文本出来,用个文本框或者什么显示就行了
记录随便,但是别搞到这个里面 而且,listview子项的字符元素印象里根本不支持16635以上的字符 回复 9# netegg
您的意思是,listview是不是不适合做记录?原因是什么?
我原本打算的记录方式是: $record_txt =老记录&新记录
我想到的一个笨办法是:$record_txt =新记录&老记录 这两个没区别,是接收这个文本的要素,不允许那么多字符存在,如果真想做,用sqlite做,然后用listview显示,会自动截断 回复 12# netegg
感谢感谢~
页:
[1]