由於您沒有使用支持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;
但是,請注意,這將禁用視覺主題!它看起來很可怕!請不要這樣做!
像這樣的工作如此偉大與Unicode(Delphi 2009+)。 – 2011-03-05 19:30:29
建議:除非您準備轉向Unicode,否則請使用Andreas簡單的使用*的建議。如果這是一份合同工作,告訴他們如果他們支付您遷移到DelphiXE(給出估計),他們可以讓黑色方塊看起來不錯。他們也可以擁有它,如果他們不介意它「看起來很有趣」,與業主汲取解決方案。或者他們現在可以擁有*,無需額外費用。 – 2011-03-05 19:59:59