잠시 후에 변경되지 않은 이전 VB6 프로그램이 있지만 지금은 새로운 동작이 있습니다. 일반적인 구성 요소가 그 아래에서 업그레이드되었다고 생각합니다. 여기에 세부 사항이 있습니다.빈 텍스트가있는 ListView의 ListItem
SmallIcon 모드에서 표준 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과 Caption (Text)이 모두 있습니다. TextBackground는 불투명으로 설정됩니다. 즉, 텍스트가 둘러싸는 컬러 사각형으로 렌더링됩니다.
일부 항목에는 캡션이 제공되지 않았거나 사용자가 캡션이 없도록 변경할 수있는 항목이 있습니다. 이것은 SmallIcon이 보여주는 것만 큼 좋았습니다. 그러나 이제는 Text 속성이 비어있는 모든 ListItem은 텍스트가없는 상당히 넓은 둘러싸는 직사각형을 렌더링합니다 (마치 사용자가 여러 공백을 키 입력 한 것처럼).
을 ListItem을 추가하는 코드
바로 감기이다 : 당신은을 ListItem을 볼 수 있듯이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
:
Set oLI = lvwMap.ListItems.Add(lvwMap.ListItems.Count + 1, Key:=sKey)
oLI.SmallIcon = sIcon
oLI.Text = sCaption
내가 직접 실행 창에서 다음 여기에 디버거를 중단하고 thried. 텍스트가 비어서 96 픽셀로 점프 할 때까지 너비가 올바르게 다시 계산됩니다.
누구든지이 동작을 보완 할 방법을 알고 있습니까? 기본 빈 wdith 구성에 사용할 수있는 일부 창 메시지? ListView 동작 변경에 대한 정보도 도움이 될 수 있습니다.
레이블을 불투명하게하는 것이 문제의 원인입니다. 텍스트를 캡슐화하기 위해 검은 색 경계 사각형에 노랑색 텍스트를 정확하게 표시합니다. ListView 자체에 배경 이미지가 있기 때문에 필요합니다. 그러나 이제 텍스트가없는 아이콘에는 큰 (거의 100 픽셀) 크고 빈 막대가 그 옆에 떠있었습니다. 가장 중요한 아이콘과 위치입니다. 텍스트는 선택 사항입니다. 또한 텍스트를 클릭하여 편집하지 않으므로 중요하지 않습니다. side-by-side/local 구성에서이 ocx 버전을 수동으로 배포 할 수 있는지 궁금합니다. – tcarvin
물론 지금까지 제공해 주신 정보에 감사드립니다! – tcarvin
@tcarvin 미안하지만, TextViewground 속성의 효과를 충분히 이해하지 못했습니다. ListView에서 배경 그림이 없었기 때문에 - 지금 무슨 뜻인지 알고 있습니다. 이전 버전의 ocx와 나란히 시도하고 실행하는 흥미로운 아이디어. 나는 작은 휴대용 응용 프로그램을 만들기 위해 한 번 비슷한 것을 시도했지만 그것이 가치 있다고 생각했던 것보다 더 어려웠다는 것을 증명했을 때 나는 포기했다. :-). 그러니 그걸로 행운을 빈다. – Antagony