2011-03-05 3 views
0

나는 델파이 7을 사용하고 있습니다.글씨로 글자체 변경하기

탭과 관련된 페이지에 내용이 있음을 나타냅니다. 페이지의 dbgrid에 내용이있는 경우 캡션 뒤에 권자가오고 n은 상자로 표시되는 문자로 표시됩니다. 이제 'Paient History'라는 캡션 대신 'Patient History'+ 조금 꽉 찬 상자를 읽게됩니다.

글꼴 유형이 wingding 인 기호 'n'이므로 캡션 중간에서 글꼴 유형을 변경하고 캡션 끝에 작은 문자로 채워진 문자 n을 추가하려고합니다.

Tabsheet.caption := 'Patient History ' + changefonttypetowinding + 'n'. 

Doable?

+1

이 항목은 Unicode (Delphi 2009 이상)에서 유용합니다. –

+1

권장 사항 : 유니 코드로 이동할 준비가되어 있지 않다면 Andreas의 * 사용에 대한 간단한 제안을 사용하십시오. 이것이 계약직 일 경우 델파이로 이전하기 위해 돈을 내면 검은 사각형이 잘 보이도록 할 수 있습니다 (예상). 소유자가 그리는 솔루션으로 "재밌다"는 생각이 들지 않으면 그들은 가질 수 있습니다. 또는 그들은 추가 비용없이 바로 지금 당장 *을 가질 수 있습니다. –

답변

6

당신이 여기에 영토를 그려 넣으려는 사람은 테마를 고려해 보면 잘하는 것이 쉽지 않습니다. 당신이 그 길로 간다면 Wingdings에 귀찮게하지 않을 것입니다. 상자를 칠하면 TCanvas.FillRect이됩니다.

저는 개인적으로 유니 코드 델피를 살펴보고 U + 2587 (▇) 또는 그 친구 중 한 명을 사용합니다.

+0

여기에는 완전히 다른 해결책이 두 가지 있기 때문에 두 가지 대답이되어야합니다. 그리고 나는 각각을 upvoted 것입니다 ... ;-> –

+0

@Chris 그렇게 말할 당신의 아주 좋은! 사실 저는 U + 2587 이외의 것을 고려하지 않았습니다! –

3

유니 코드 사용 버전의 델파이를 사용하지 않으므로 David가 지적한대로 소유자 드로잉 또는 "ANSI"문자 세트로 제한됩니다. (제 제안은 델파이 2009+로 업그레이드하는 것입니다. 유니 코드는 디지털 세상에서 가장 좋은 일입니다. 유니 코드를 사용하면 127 또는 255 대신에 수만개의 문자 (이론적으로, 글꼴 당)를 얻을 수 있습니다. U-232C 벤젠 링 : ⌬)

이제 업그레이드가 불가능하다고 가정 해 봅시다. 그런 다음, 내가 너라면, 나는이 목적을 위해 역사적인 "표준 문자", 즉 별표 (*)를 사용할 것이다. 나는 당신의 경우에 이것을 매우 강력하게 추천한다.

검은 색 사각형을 원할 경우, 소유자 도면을 사용해야합니다. 다음과 같이 할 수 있습니다.

// Please don't do this -- see comments below 
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; 
    TabIndex: Integer; const Rect: TRect; Active: Boolean); 
const 
    Padding = 8; 
    SqSize = 6; 
var 
    capt: string; 
    r: TRect; 
begin 
    capt := TTabControl(Control).Tabs[TabIndex]; 
    r := Rect; 
    r.Left := r.Left + Padding; 
    DrawText(Control.Canvas.Handle, capt, length(capt), r, DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS); 
    r.Left := r.Right - Padding - SqSize; 
    r.Right := r.Left + SqSize; 
    r.Top := (r.Bottom - r.Top - SqSize) div 2; 
    r.Bottom := r.Top + SqSize; 
    FillRect(Control.Canvas.Handle, r, GetStockObject(BLACK_BRUSH)); 
end; 

그러나 시각적 테마가 사용 중지됩니다. 그것은 두려운 것입니다! 제발 하지마!

+2

+1 당신이 드로잉 코드를 작성하는 것에 저항 할 수 없다는 것을 알고있었습니다! 코드의 경우 –

+0

+1. 그래도 대답의 마지막 줄에 추가 투표를 할 수 있다면 2 점을 추가 할 것입니다. 소유자가하는 일은 자신이하는 일을 알지 못하는 한 테마가 활성화 된 * 추악한 행동입니다. –

+0

@ David, 당신은 저를 압니다! 그러나 이번에는 왜 소유자가 그것을 그리려하지 말아야하는지 설명하는 것이 더 많습니다. –