Я попытался применить VCLStyle для TLinkLabel.Как мне применить к VCLStyle для TLinkLabel
К сожалению, я не могу показать подчеркнуть (sentece тега)
TLinkLabel.Caption := 'Sma<a>pl</a>e';
Как решить это?
Чтобы решить эту проблему, но тег не появился, вероятно, этот «образец»
procedure TgLinkLabelHook.Paint(Canvas: TCanvas);
var
LDetails: TThemedElementDetails;
ParseStr: String;
DrawRect: TRect;
DC: HDC;
TextSize: TSize;
SaveFont: HFont;
ThemeTextColor: TColor;
begin
ParseStr := ParseLinks;
LDetails := StyleServices.GetElementDetails(tbPushButtonPressed);
DC := GetDC(0);
try
SaveFont := SelectObject(DC, TLinkLabel(Control).Font.Handle);
try
GetTextExtentPoint32(DC, PWideChar(ParseStr), Length(ParseStr), TextSize);
finally
SelectObject(DC, SaveFont);
end;
finally
ReleaseDC(0, DC);
end;
Canvas.Font := TLinkLabel(Control).Font;
Canvas.Font.Style := Canvas.Font.Style + [fsUnderline];
Canvas.Font.Size := TLinkLabel(Control).Font.Size;
if StyleServices.GetElementColor(LDetails, ecBodyTextColor, ThemeTextColor) then
Canvas.Font.Color := ThemeTextColor;
// DrawRect := Rect(0, 0, TextSize.cx, TextSize.cy);
DrawRect := Control.ClientRect;
DrawControlText(Canvas, LDetails, ParseStr, DrawRect, DT_VCENTER or DT_CENTER);
end;
procedure TForm8.FormCreate(Sender: TObject);
begin
TStyleManager.Engine.RegisterStyleHook(TLinkLabel, TgLinkLabelHook);
end;
Шрифт текста по умолчанию используется, потому что вы вызываете 'DrawControlText', который использует стандартный шрифт элемента управления для рендеринга. Вот что переопределяет ваши настройки шрифта холста. Другое дело, что вы не можете изменить цвета ссылок на что-то еще, кроме системных цветов (например, COLOR_HIGHLIGHT) или цвета шрифта по умолчанию на этикетке, поэтому ваша попытка кажется бесполезной, если я получу право, вы хотите использовать пользовательскую ссылку цвета. См. Например ['here'] (http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/bd54bd30-e21f-4dc7-a77f-88de02c63f72/). – TLama
Вы можете вызвать 'StyleServices.DrawText' вместо' DrawControlText', но ничего не меняется по факту ссылок из 'TLinkLabel' ([' SysLink'] (http://msdn.microsoft.com/en-us/library/ windows/desktop/bb760706 (v = vs.85) .aspx) отображаются системой с использованием системных цветов, и если вы хотите сделать их самостоятельно, вам придется снова разобрать текст и отобразить каждую часть собственный, что делает использование «TLinkLabel» бесполезным. – TLama
@TLama, вы правы, почему бы не опубликовать свой комментарий в качестве ответа? – RRUZ