trichview.com

trichview.support




Re: Textstyle of Hyperlinks


Return to index


Author

Message

Sergey Tkachenko

Posted: 09/22/2004 19:05:43


Hello,


TRichView treats hyperlinks like normal text. They are not underlined by

default, they do not have special colors. It's up to you to define

attributes for distinguishing hyperlinks from normal text.

Hyperlink attributes can be changed exactly like attributes of normal text

(note: there are some attributes present for all text styles, but used only

for hyperlinks -HoverColor and HoverBackColor).


Some ideas:

1) Yes, you can use different text styles to insert different links. But

user can apply different style (or style conversion procedure), so

hyperlink's style will be changed.

Do you use RichViewActions? If not, you have full control over operations

performed in OnStyleConversion event. You can block modification of

ununderlining or color changing for hyperlinks.


1) You can use OnApplyStyle and OnDrawStyleText to modify hyperlink

attributes.

Only in OnDrawStyleText you can get link's target, so, if you want

target-depending drawing, you are limited with color changing and

underlining.


Example:

- all hyperlinks are underlined regardless of their character attributes

- hyperlinks with empty target has light gray background

- links to e-mails are blue, to urls are green, others are gray.


procedure TForm3.RVStyle1DrawStyleText(Sender: TRVStyle; const s: String;

  Canvas: TCanvas; StyleNo, SpaceBefore, Left, Top, Width, Height: Integer;

  DrawState: TRVTextDrawStates; var DoDefault: Boolean);

var target: String;

begin

  if Sender.TextStyles[StyleNo].Jump then begin

    Canvas.Font.Style := Canvas.Font.Style+[fsUnderline];

    if rvtsSelected in DrawState then

      exit;

    target := PChar(TCustomRVData(Sender.RVData).GetItemTag(Sender.ItemNo));

    if target='' then begin

      Canvas.Brush.Color := clSilver;

      exit;

    end;

    if RVIsEmail(target) then

      Canvas.Font.Color := clBlue

    else if RVIsURL(target) then

      Canvas.Font.Color := clGreen

    else

      Canvas.Font.Color := clGray;

  end;

end;


The only problem with this method - these color/underline changes will not

be saved in HTML/RTF.



> Hello,

> I have a question about how to influence the text style of a hyperlink.

Usually,

> when inserting a hyperlink, the text will be blue and underlined.

> If I would like to change this style, how would I do this?

>

> Second question: If I would like to have a different style depending on,

> for example, if the hyperlink target is a URL or an Email address, is this

> also possible?

>

> Thanks for your help!

>  Holger





Powered by ABC Amber Outlook Express Converter