2012-05-21 3 views
4

잠시 후에 변경되지 않은 이전 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 동작 변경에 대한 정보도 도움이 될 수 있습니다.

답변

2

IE의 보안 취약점을 해결하기 위해 Mscomctl.ocx가 updated in April이었습니다. 동작하지 않는 이전 버전의 (2004 년 이후) VM 컴퓨터를 가지고 있기 때문에 동작이 변경되었을 때입니다. 이 방법과 나는 그것이 최근의 것 앞에 last release이었다라고 꽤 확신한다.

무엇에 관해서 : 글쎄, 나는 그것이 당신에게 문제를 일으키는 원인이 무엇인지에 달려 있다고 생각합니다. 항목의 너비 속성을 사용 중이기 때문에 다음과 같이 부울 값을 쉽게 곱할 수 있습니다 : iWidth = oLi.Width * Abs(oLi.Text <> ""). 그러나 당신이 좋아하지 않는 모양이라면, 내가 생각할 수있는 유일한 것은 사용자가 빈 공간으로 설정할 때/때 하나의 공간을 추가하여 효과를 완화하는 것입니다. 사용법의 관점에서 볼 때 넓은 영역을 제공하기 때문에 레이블 편집 기능이 활성화 된 경우 새로운 동작이 더 효과적 일 수 있습니다.

+0

레이블을 불투명하게하는 것이 문제의 원인입니다. 텍스트를 캡슐화하기 위해 검은 색 경계 사각형에 노랑색 텍스트를 정확하게 표시합니다. ListView 자체에 배경 이미지가 있기 때문에 필요합니다. 그러나 이제 텍스트가없는 아이콘에는 큰 (거의 100 픽셀) 크고 빈 막대가 그 옆에 떠있었습니다. 가장 중요한 아이콘과 위치입니다. 텍스트는 선택 사항입니다. 또한 텍스트를 클릭하여 편집하지 않으므로 중요하지 않습니다. side-by-side/local 구성에서이 ocx 버전을 수동으로 배포 할 수 있는지 궁금합니다. – tcarvin

+0

물론 지금까지 제공해 주신 정보에 감사드립니다! – tcarvin

+0

@tcarvin 미안하지만, TextViewground 속성의 효과를 충분히 이해하지 못했습니다. ListView에서 배경 그림이 없었기 때문에 - 지금 무슨 뜻인지 알고 있습니다. 이전 버전의 ocx와 나란히 시도하고 실행하는 흥미로운 아이디어. 나는 작은 휴대용 응용 프로그램을 만들기 위해 한 번 비슷한 것을 시도했지만 그것이 가치 있다고 생각했던 것보다 더 어려웠다는 것을 증명했을 때 나는 포기했다. :-). 그러니 그걸로 행운을 빈다. – Antagony