2014-09-03 6 views
-2

&을 더블 클릭하여 단축키로 등록하지 않도록 할 수있는 방법이 있습니까? 우리는 우리가 목록 상자에 채워 약물 이름의 목록을 가지고 tlistbox에서 앰퍼샌드를 두 배로 늘려야하는 이유는 무엇입니까?

, 약물 중 일부는 "A & D 연고"와 같은 그들 & 년대가, 잘가 "A _D 연고를"가지고 가지 바보입니다 우리가 & &의 "A & D 연고"로 만드는 것이 유일한 문제입니다. 우리가 그렇게 할 때, 텍스트를 다시 변환하지 않고도 유용한 목록 상자의 텍스트를 우리가 볼 수는 없습니다.

IDE로 할 수있는 방법을 찾지 못하는 단축키를 모두 끄는 것이 더 편리 할 것입니다. 그러나이 문제를 해결할 멋진 Windows 메시지가 있습니다. 당신은 아마 이런 일 경우 TListBox 기능을 그릴 기본값을 사용하지 않는

DrawText(List.Canvas.Handle, PChar(List.Items.Strings[Index]), -1, Rect, DT_VCENTER); 
+3

이것은 단순히 발생하지 않습니다. 'TListBox'를 실제로 다루고 있습니까? –

+0

@Andreas와 동의; 예 : 델파이 7이나 델파이 XE3에서'TListBox' 항목 텍스트는 ['DT_NOPREFIX'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd162498 (v = vs. 85) .aspx # DT_NOPREFIX) 플래그가 포함되어 있습니다 ('&'문자에서 밑줄을 렌더링하지 못하게합니다). – TLama

+0

@AndreasRejbrand 오하이오 바보, 코드를 작성한 사람이 직접 코드를 작성하고 있습니다 ... –

답변

3

: 잘하면 우리가 사용하는 DrawItem 기능을 무시하고)


를 기본 클래스를 오버라이드 (override) 할 필요는 없습니다 기본적으로 DT_NOPREFIX를 사용하여 사물을 그립니다.

DT_NOPREFIX없이 DrawText를 사용하는지 확인하려면 DrawItem 함수를 재정의하지 않았는지 확인하십시오. DT_NOPREFIX를 사용하면 텍스트는 그대로 유지됩니다.

+1

-1 질문에 'DrawText'는 관련이 없습니다. 목록 상자는 질문에 설명 된 것을 수행하지 않습니다. 아마도이 답변이 적용되는 시나리오를 설명하기 위해 질문을 편집하려는 경우 미래에 누군가에게 유용 할 수 있습니다. 그러나 이것이 그대로 서술하는 것은 매우 잘못된 것입니다. –

+0

OK, downvote가 제거되었습니다. 목록 상자에 관한 모든 이야기를 제거하고'DrawText'에 대한 호출 만 포함하면 훨씬 더 좋을 것입니다. –

+0

이 문제는'DrawText' DT 플래그와 목록 상자가 수동 그리기에 있다는 사실의 조합입니다. 이런 의미에서 누군가에게 도움이 될 수 있습니다. – serge