2011-03-05 186 views
0

我正在使用德爾福7.更改字體標籤中間標題

我想在選項卡標題上指出與選項卡相關的頁面有內容。如果在頁面上的dbgrid中有內容,我想按照帶有蜿蜒的字幕來表示,字母n表示爲一個框。所以現在,而不是閱讀「病人歷史」的標題,它會閱讀「病史」+一個小填充框。

由於符號是帶有字體類型翼形的字母'n',我想要在字幕中間更改字體類型並添加字母n,從而在字幕結尾處產生一個小填充框。

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

可以嗎?

+1

像這樣的工作如此偉大與Unicode(Delphi 2009+)。 – 2011-03-05 19:30:29

+1

建議:除非您準備轉向Unicode,否則請使用Andreas簡單的使用*的建議。如果這是一份合同工作,告訴他們如果他們支付您遷移到DelphiXE(給出估計),他們可以讓黑色方塊看起來不錯。他們也可以擁有它,如果他們不介意它「看起來很有趣」,與業主汲取解決方案。或者他們現在可以擁有*,無需額外費用。 – 2011-03-05 19:59:59

回答

6

你在這裏進入了自主繪製的領域,一旦考慮到主題,這並不是完全無足輕重的。如果你確實走了那條路線,那麼我不會打擾Wingdings,我只是畫一個TCanvas.FillRect

就我個人而言,我會考慮一個Unicode Delphi,並使用U + 2587(▇)或其朋友之一。

+0

應該是兩個答案,因爲這裏有兩個完全不同的解決方案。我會把每一個都提高...; - > – 2011-03-05 17:48:18

+0

@Chris非常好的你這麼說!其實我不會考慮U + 2587以外的任何東西! – 2011-03-05 17:52:16

3

由於您沒有使用支持Unicode的Delphi版本,因此您被限制爲擁有者繪圖或「ANSI」字符集,正如David所指出的那樣。 (我的建議是,你升級到Delphi 2009+,Unicode是數字世界發生的最好的事情,使用Unicode,你可以得到數以萬計的字符(理論上,每種字體!)而不是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我知道你不能抵制寫一些所有者繪製代碼的嘗試! – 2011-03-05 19:56:24

+0

代碼+1。不過,如果我可以爲你的答案的最後一行添加一個或兩個額外的投票。除非你知道你在做什麼,否則所有者繪製是*醜陋的,並且啓用了主題。 – 2011-03-05 19:56:44

+0

@大衛,你認識我!但是這次更多的是說明爲什麼你不應該試圖自己畫它。 – 2011-03-05 19:57:44