Изменить шрифт на вкладке с надписью - PullRequest
0 голосов
/ 05 марта 2011

Я использую Delphi 7.

Я хочу указать на заголовке вкладки, что страница, связанная с вкладкой, имеет содержимое.Если в dbgrid на странице есть содержимое, я хочу подписать заголовок, обозначенный буквой n, которая отображается в виде прямоугольника.Так что теперь вместо заголовка «История пациента» будет написано «История пациента» + небольшая заполненная рамка.

Поскольку символом является буква «n» с типом шрифта «крыло», я хочу изменитьвведите шрифт в середине заголовка и добавьте букву n, в результате чего в конце заголовка появится небольшой заполненный прямоугольник.

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

выполнимо?

Ответы [ 2 ]

6 голосов
/ 05 марта 2011

Вы попадаете на территорию, привлекаемую владельцем, и это не совсем тривиально, если вы принимаете во внимание темы. Если вы пойдете по этому пути, то я не буду беспокоиться о Wingdings, я просто нарисую коробку будет TCanvas.FillRect.

Лично я бы заглянул в Unicode Delphi и использовал бы U + 2587 (▇) или одного из его друзей.

3 голосов
/ 05 марта 2011

Поскольку вы не используете версию Delphi с поддержкой Юникода, вы ограничены рисованием владельца или набором символов «ANSI», как указал Дэвид. (Я предлагаю вам перейти на Delphi 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;

Обратите внимание, однако, что это отключит визуальные темы! Это будет выглядеть ужасно! Пожалуйста, не делайте этого!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...