Componentes.Terceros.TRichView/12.0.4/Demos/DelphiUnicode/Assorted/Custom Hints/Unit1.pas

128 lines
4.4 KiB
ObjectPascal
Raw Permalink Normal View History

{*******************************************************}
{ }
{ RichView }
{ Custom hints demo }
{ For Delphi 2009+ }
{ }
{ Copyright (c) Sergey Tkachenko }
{ svt@trichview.com }
{ http://www.trichview.com }
{ }
{*******************************************************}
// Property settings:
// RichViewEdit1.ShowHints = True
// rvoShowItemHints in RichViewEdit1.Options
// RichViewEdit1.CustomHint = BalloonHint1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ImgList, RVStyle, RVScroll, RichView, RVEdit, CRVData, RVItem,
Jpeg, GifImg, PngImage, RVTypes, ExtCtrls;
type
TForm1 = class(TForm)
BalloonHint1: TBalloonHint;
ImageList1: TImageList;
RichViewEdit1: TRichViewEdit;
RVStyle1: TRVStyle;
Image1: TImage;
Image2: TImage;
procedure FormCreate(Sender: TObject);
procedure RichViewEdit1ItemHint(Sender: TCustomRichView;
RVData: TCustomRVData; ItemNo: Integer; var HintText: string);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var gr: TGraphic;
begin
RichViewEdit1.Clear;
RichViewEdit1.AddNL('Custom Hints', 1, 1);
RichViewEdit1.AddNL('Hyperlinks: ', 0, 0);
RichViewEdit1.AddNLTag('trichview.com', 2, -1, Integer(StrNew('http://www.trichview.com')));
RichViewEdit1.SetItemExtraStrProperty(RichViewEdit1.ItemCount-1, rvespHint, 'TRichView homepage');
RichViewEdit1.AddNL('Hypertext pictures: ', 0, 0);
gr := TBitmap.Create;
gr.Assign(Image2.Picture.Graphic);
RichViewEdit1.AddHotPictureTag('', gr, -1, rvvaAbsMiddle, Integer(StrNew('http://en.wikipedia.org/wiki/Greek_alphabet')));
RichViewEdit1.SetItemExtraStrProperty(RichViewEdit1.ItemCount-1, rvespHint, 'Αβγ');
RichViewEdit1.AddNL('Pictures: ', 0, 0);
gr := TIcon.Create;
gr.Assign(Image1.Picture.Graphic);
RichViewEdit1.AddPictureEx( '', gr, -1, rvvaAbsMiddle);
RichViewEdit1.SetItemExtraStrProperty(RichViewEdit1.ItemCount-1, rvespHint, 'Солнце'); // "Sun" in Russian
RichViewEdit1.Format;
end;
{------------------------------------------------------------------------------}
function GetGraphicFormatName(gr: TGraphic): String;
begin
if gr is TBitmap then
Result := 'Windows bitmap'
else if gr is TIcon then
Result := 'Icon'
else if gr is TMetafile then
Result := 'Windows metafile'
else if gr is TJpegImage then
Result := 'JPEG image'
else if gr is TGifImage then
Result := 'GIF image'
else if gr is TPngImage then
Result := 'PNG image'
else
Result := 'Unknown image format';
end;
{------------------------------------------------------------------------------}
{ OnItemHint event }
procedure TForm1.RichViewEdit1ItemHint(Sender: TCustomRichView;
RVData: TCustomRVData; ItemNo: Integer; var HintText: string);
var DefaultHint, Target, PicDetails: String;
i, Tag: Integer;
ItemName: TRVAnsiString;
Align: TRVVAlign;
Graphic: TGraphic;
begin
DefaultHint := HintText;
for i := 1 to Length(DefaultHint) do
if DefaultHint[i]='|' then
DefaultHint[i] := ' ';
if DefaultHint<>'' then
DefaultHint := ': '+DefaultHint;
if (RVData.GetItemStyle(ItemNo)=rvsPicture) or
(RVData.GetItemStyle(ItemNo)=rvsHotPicture) then begin
// image
RVData.GetPictureInfo(ItemNo, ItemName, Graphic, Align, Tag);
if RVData.GetItemStyle(ItemNo)=rvsHotPicture then
Target := '; Target: '+PChar(Tag)
else
Target := '';
PicDetails := Format('%s %d×%d', [GetGraphicFormatName(Graphic),
Graphic.Width, Graphic.Height]);
HintText := 'Image'+DefaultHint+'|'+PicDetails+Target+'|1';
end
else if RVData.GetItem(ItemNo).GetBoolValueEx(rvbpJump, RVStyle1) then begin
// hyperlink
Target := 'Target: '+PChar(RVData.GetItemTag(ItemNo));
HintText := 'Hyperlink'+DefaultHint+'|'+Target+'|0';
end;
end;
end.