Tôi đã cố gắng áp dụng VCLStyle cho TLinkLabel.Làm cách nào để đăng ký VCLStyle cho TLinkLabel
Đáng buồn thay, tôi không thể hiển thị dấu gạch dưới (sentece của A Tag)
TLinkLabel.Caption := 'Sma<a>pl</a>e';
Làm thế nào để giải quyết này?
Để giải quyết vấn đề này, nhưng một thẻ không được xuất hiện khả năng này "Mẫu"
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;
Phông chữ văn bản mặc định được sử dụng vì bạn gọi 'DrawControlText' sử dụng phông chữ mặc định của điều khiển để hiển thị. Đó là những gì ghi đè cài đặt phông chữ canvas của bạn. Một điều nữa là bạn không thể thay đổi màu của liên kết thành một thứ gì đó khác với màu hệ thống (như COLOR_HIGHLIGHT) hoặc màu phông chữ mặc định của nhãn, vì vậy nỗ lực của bạn dường như vô dụng, nếu tôi nhận được quyền bạn muốn sử dụng liên kết tùy chỉnh màu sắc. Xem ví dụ ['here'] (http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/bd54bd30-e21f-4dc7-a77f-88de02c63f72/). – TLama
Bạn có thể gọi 'StyleServices.DrawText' thay vì' DrawControlText' nhưng không có gì thay đổi trên thực tế các liên kết từ 'TLinkLabel' ([' SysLink'] (http://msdn.microsoft.com/en-us/library/ điều khiển windows/desktop/bb760706 (v = vs.85) .aspx) được hệ thống sử dụng bằng các màu hệ thống và nếu bạn muốn tự vẽ chúng, bạn sẽ phải phân tích cú pháp văn bản một lần nữa và hiển thị từng phần bằng của riêng mình, điều làm cho việc sử dụng 'TLinkLabel' vô ích. – TLama
@TLama, bạn nói đúng, tại sao không đăng nhận xét của bạn làm câu trả lời? – RRUZ