fenhanxue 发表于 2015-3-29 15:46:00

listview 当文本大于列宽时,如何把文本的最后部分显示完整 【已解决】

本帖最后由 fenhanxue 于 2015-3-29 17:00 编辑

netegg 发表于 2015-3-29 16:12:15

_GUICtrlListView_SetColumnWidth

fenhanxue 发表于 2015-3-29 16:16:58

本帖最后由 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:24:15

本帖最后由 netegg 于 2015-3-29 16:26 编辑

_GUICtrlListView_SetColumnWidth($hListView, 2, StringLen( _GUICtrlListView_GetItemText($hListView, 1, 1))*16)
既然列宽是固定的,那么只能更改字体大小了
这和多少次添加没关系

netegg 发表于 2015-3-29 16:28: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)

fenhanxue 发表于 2015-3-29 16:38:26

回复 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:41:52

本帖最后由 netegg 于 2015-3-29 16:45 编辑

回复 6# fenhanxue
那你用错东西了,或者说你的逻辑本身有点瑕疵,原来的数据还要不要,如果不要,直接设置,取字符串定宽就行了,如果要,麻烦大了,10000个数据很容易内存接收不了,直接崩溃

fenhanxue 发表于 2015-3-29 16:45:04

应该用什么?我打算有20行的listview的样子,每行相当于一个独立的程序,每行都对应一个独立的程序,进行独立的记录

netegg 发表于 2015-3-29 16:46:40

点击子项,取文本出来,用个文本框或者什么显示就行了
记录随便,但是别搞到这个里面

netegg 发表于 2015-3-29 16:49:07

而且,listview子项的字符元素印象里根本不支持16635以上的字符

fenhanxue 发表于 2015-3-29 16:51:05

回复 9# netegg


    您的意思是,listview是不是不适合做记录?原因是什么?



我原本打算的记录方式是: $record_txt =老记录&新记录
我想到的一个笨办法是:$record_txt   =新记录&老记录

netegg 发表于 2015-3-29 16:54:02

这两个没区别,是接收这个文本的要素,不允许那么多字符存在,如果真想做,用sqlite做,然后用listview显示,会自动截断

fenhanxue 发表于 2015-3-29 17:00:02

回复 12# netegg


    感谢感谢~
页: [1]
查看完整版本: listview 当文本大于列宽时,如何把文本的最后部分显示完整 【已解决】