ListItems의 빈 텍스트가있는 ListItems
-
12-12-2019 - |
문제
나는 잠시 동안 변경되지 않은 오래된 VB6 프로그램을 가지고 있지만 이제는 새로운 행동이 있습니다. 나는 공통 구성 요소가 그 아래에서 업그레이드 된 것을 생각하고 있습니다. 여기에 세부 사항이 있습니다.
SallIcon 모드에서 표준 ListView 컨트롤이 있습니다. 코드 스 니펫 :
'setup the listview
With lvwMap
.Appearance = ccFlat
.BackColor = vbBlack
.BorderStyle = ccNone
.Font.Name = "Arial"
.Font.Bold = True
.Font.Size = 9
.ForeColor = vbYellow
.LabelEdit = lvwManual
.LabelWrap = True
.OLEDropMode = ccOLEDropManual
.PictureAlignment = lvwTopLeft
.TextBackground = lvwOpaque
.View = lvwSmallIcon
End With
.
대부분의 ListItem은 SmallIcon과 캡션 (텍스트)이 모두 있습니다. TextBackground는 불투명으로 설정되어 있으므로 텍스트가 묶는 색상의 사각형으로 렌더링됩니다.
일부 항목은 캡션이 제공되지 않거나 사용자가 캡션이 없도록 변경할 수 있습니다. 이것은 괜찮아요. 그러나 이제는 빈 텍스트 속성이있는 ListItem은 텍스트가없는 텍스트가없는 꽤 넓은 넓은 직사각형을 렌더링합니다 (마치 사용자가 공백을 무리에 입력 한 것처럼).
LISTITEM을 추가하는 코드는 똑바로 전달됩니다 :
Set oLI = lvwMap.ListItems.Add(lvwMap.ListItems.Count + 1, Key:=sKey)
oLI.SmallIcon = sIcon
oLI.Text = sCaption
.
여기에서 디버거를 중지하고 즉각적인 창에서 다음을 번영했습니다.
oLI.Text= "AAAAAAA"
?oLI.Width
100.0063
oLI.Text= "AAAAAA"
?oLI.Width
91.99371
oLI.Text= "AAAAA"
?oLI.Width
84.0189
oLI.Text= "AAAA"
?oLI.Width
76.0063
oLI.Text= "AA"
?oLI.Width
60.0189
oLI.Text= "A"
?oLI.Width
52.0063
oLI.Text= ""
?oLI.Width
96.00001
.
ListItem.Width가 텍스트가 비어있을 때까지 올바르게 다시 계산 한 다음 96 픽셀로 점프합니다.
이 동작을 보상 할 수있는 방법을 알고 있습니까? 기본 빈 WDITH를 구성하는 데 사용할 수있는 일부 Windows 메시지는 무엇입니까? ListView 동작 변경에 대한 정보도 도움이 될 수 있습니다.
해결책
mscomctl.ocx는 4 월에서 업데이트되었습니다 IE의 보안 취약점 - 그리고이 방법은이 방법으로 작동하지 않는 파일의 이전 버전의 파일 (2004 년부터)으로 VM 시스템이있는 것처럼 변경되었을 때의 것으로 추측하고 있습니다. href="http:///support.microsoft.com/kb/896559"rel="nofollow"> 최근의 릴리스
그것에 대해 무엇을 해야하는지에 대해서 : 글쎄, 나는 그것이 당신에게 문제를 일으키는 것에 대한 그것이 무엇인지에 달려 있다고 생각합니다. 항목의 너비 속성을 사용하고 있기 때문에 다음과 같이 부울 평가와 쉽게 곱할 수 있습니다. iWidth = oLi.Width * Abs(oLi.Text <> "")
. 그러나 그것이 당신이 좋아하지 않는 모습이라면, 내가 생각할 수있는 유일한 것은 사용자가 비어있게 설정하는 경우에 단일 공간을 추가하여 효과를 완화하는 것입니다. 사용 지점에서 볼 수있는 관점에서 넓은 영역을 제공 할 때 라벨 편집이 활성화 된 경우 새 동작이 더 좋습니다.