2012-08-14 2 views
1

공백에 관해서는 너무 혼란 스럽습니다. 나는 현수막을 쌓기 위해 노력하고 있으며 그것은 나와 협력하지 않을 것이다.공백에 폭이 있습니까?

DataGridview를 인쇄하려고하므로 열 머리글과 그 아래에 실제 행이 있습니다. 문자열을 채우기 위해 정확한 길이 나 너비를 결정하려고해도 아무리 짧거나 길어도 좋습니다. 따라서 프린터로 보내기 전에 값을 열 머리글과 맞출 수 없습니다.

난 그냥 할 경우 예를 들어 다음

thestring := '.NET is cool'; 
thestring := thestring.padright(100); //thestring = too short = '.NET is cool ' 

나는이 할 경우 :

var tmpstr := '='; 
tmpstr := tmpstr.PadRight(15); //total length of characters is 15 
var swidth := int32(ev.Graphics.Measurestring(tmpstr,new Font('Arial',9)).Width); 

thestring := '.NET is cool'; 
thestring := theString.padright(swidth); //thestring = too long = '.NET is cool 

       ' 

PadRight 또는 PadLeft 당신이 실제 문자 흰색없는 공간에서 통과 할 때 제대로 작동하는 것 같다하지만, 내가 틀렸을 수도있다.

모든 입력 사항이나 도움을 주시면 대단히 감사하겠습니다.

+0

셀 정렬을 사용하지 않을까요? Arial과 같은 가변 너비 글꼴을 사용하면 절대로 제대로 보이지 않습니다. 성취하려는 것을 설명하면 도움이 될 것입니다. 그것에 대해 갈 수있는 더 좋은 방법이있을 수 있습니다. – LarsTech

+0

@LarsTech DataGridview 테이블을 인쇄하려고하는데 PrintDocument를 사용하고 있습니다. 텍스트와 열 머리글을 정렬 할 수 없다는 점을 제외하면 작동합니다. – ThN

+0

'print a datagridview' - 그 행을 놓쳤습니다. 인쇄 코드를 추가 할 수도 있습니다. 인쇄 시트에서 각 열을 사각형으로 바꾼 다음 정렬 서식을 DrawString 함수에 적용 해 봅니다. – LarsTech

답변

1

비례 글꼴을 사용할 때 각 문자 너비에는 차이가 있습니다. Arial은 일반적으로 사용하는 대부분의 글꼴과 마찬가지로 비례 글꼴입니다. 모노 스페이스 (비 비례 또는 고정 폭) 서체 폰트의 모든 글리프 단일 표준 폭을 사용하면서

Wikipedia: Typeface

비례 서체, 다양한 폭의 글리프를 포함한다.

모든 문자는 다른 문자 일 수 있습니다. 공백에는 너비가 있지만 문자 "i"또는 "w"와 같을 필요는 없습니다.

  1. 당신은 택배 뉴과 같은 고정 폭 글꼴을 사용할 수 있습니다

    정말 두 가지 옵션이 있습니다. 이렇게하면 공백을 사용하여 문자 수에 따라 문자를 정렬 할 수 있습니다.

  2. 픽셀 정렬을 사용하십시오. 이 경우 텍스트 너비를 측정하고 텍스트 출력 명령의 시작 위치를 이동하여 항목이 서로 아래에 있도록 정렬해야합니다. 실제로 필요한 공백을 계산 한 다음 문자열을 패딩하는 대신 해당 위치로 이동합니다.
+0

마크, 당신의 제안이 효과가있었습니다. 나는 PadRight 또는 PadLeft를 사용하지 않았고 모노 스페이스 글꼴 Courier New를 사용하지 않았습니다. 문자열 끝 부분에 단순히 공백을 추가하여 모든 텍스트를 열 머리글에 정렬 할 수 있습니다. 고맙습니다. 내가 Stackoverflow 같은 사이트가 없다면 내가 어디 있을지 모르겠다. Stackoverflow는 .NET 프로그래밍 문제와 프로젝트를 이해하고 작업하는 데 매우 도움이되었습니다. 감사, – ThN