NO HAY CÓDIGO FUENTE git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.TRichView@1 b34d35ef-135b-4489-b9d1-9916e9c25524
181 lines
5.6 KiB
ObjectPascal
181 lines
5.6 KiB
ObjectPascal
unit Demo2Frm;
|
|
|
|
interface
|
|
{$I RV_Defs.inc}
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
RVScroll, RichView, RVStyle,
|
|
ImgList, Menus;
|
|
|
|
type
|
|
TfrmDemo2 = class(TForm)
|
|
rv: TRichView;
|
|
rvs: TRVStyle;
|
|
fdlg: TFontDialog;
|
|
cdlg: TColorDialog;
|
|
pm: TPopupMenu;
|
|
mitBack: TMenuItem;
|
|
mitBreak: TMenuItem;
|
|
mitText: TMenuItem;
|
|
mitHighlight: TMenuItem;
|
|
il: TImageList;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure rvRVMouseDown(Sender: TCustomRichView; Button: TMouseButton;
|
|
Shift: TShiftState; ItemNo, X, Y: Integer);
|
|
procedure mitBackClick(Sender: TObject);
|
|
procedure mitBreakClick(Sender: TObject);
|
|
procedure mitTextClick(Sender: TObject);
|
|
procedure rvRVMouseUp(Sender: TCustomRichView; Button: TMouseButton;
|
|
Shift: TShiftState; ItemNo, X, Y: Integer);
|
|
procedure mitHighlightClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure ChangeBackgroundColor;
|
|
procedure ChangeTextStyle(StyleNo: Integer);
|
|
procedure ChangeBreakColor(ItemNo: Integer);
|
|
procedure ChangeHighlightColor(StyleNo: Integer);
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.ChangeBackgroundColor;
|
|
begin
|
|
cdlg.Color := rvs.Color;
|
|
if cdlg.Execute then begin
|
|
rvs.Color := cdlg.Color;
|
|
rv.Invalidate;
|
|
end;
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.ChangeBreakColor(ItemNo: Integer);
|
|
var BreakWidth,BreakWidth2: Byte;
|
|
BreakTag, i: Integer;
|
|
BreakColor: TColor;
|
|
BreakStyle: TRVBreakStyle;
|
|
begin
|
|
rv.GetBreakInfo(ItemNo, BreakWidth, BreakStyle, BreakColor, BreakTag);
|
|
cdlg.Color := BreakColor;
|
|
// RichView has no styles of "breaks", each "break" is individual
|
|
// So for changing color of all "breaks" with the specified width we need
|
|
// to check the whole document
|
|
if cdlg.Execute then begin
|
|
for i := 0 to rv.ItemCount-1 do
|
|
if rv.GetItemStyle(i)=rvsBreak then begin
|
|
rv.GetBreakInfo(i, BreakWidth2, BreakStyle, BreakColor, BreakTag);
|
|
if BreakWidth2=BreakWidth then
|
|
rv.SetBreakInfo(i, BreakWidth2, BreakStyle, cdlg.Color, BreakTag);
|
|
end;
|
|
rv.Invalidate;
|
|
end;
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.ChangeHighlightColor(StyleNo: Integer);
|
|
begin
|
|
cdlg.Color := rvs.TextStyles[StyleNo].HoverColor;
|
|
if cdlg.Execute then
|
|
rvs.TextStyles[StyleNo].HoverColor := cdlg.Color;
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.ChangeTextStyle(StyleNo: Integer);
|
|
begin
|
|
fdlg.Font.Assign(rvs.TextStyles[StyleNo]);
|
|
if fdlg.Execute then begin
|
|
rvs.TextStyles[StyleNo].Assign(fdlg.Font);
|
|
rv.Format;
|
|
end;
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.FormCreate(Sender: TObject);
|
|
begin
|
|
rv.AddNL('Click on text, line or background to customize',1,1);
|
|
rv.AddNL('Right click for menu',1,1);
|
|
rv.AddBreakEx(1,rvbsLine,clGreen);
|
|
rv.AddBulletEx('', 0, il, 0);
|
|
rv.Add(' - thin line', 0);
|
|
rv.AddBulletEx('', 1, il, 0);
|
|
rv.Add(' - thick line', 0);
|
|
rv.AddBreakEx(2,rvbsLine,clSilver);
|
|
rv.AddNL('', 0,0);
|
|
rv.AddNL('This is a normal text with ', 0,0);
|
|
rv.Add('hypertext link',2);
|
|
rv.Add('.',0);
|
|
rv.AddNL('', 0,0);
|
|
rv.AddNL('This is a bottom text ', 3,0);
|
|
rv.AddBreakEx(1,rvbsLine,clGreen);
|
|
rv.AddNL('ESC closes window',1,1);
|
|
rv.Format;
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
if Key=VK_ESCAPE then Close;
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.rvRVMouseDown(Sender: TCustomRichView; Button: TMouseButton;
|
|
Shift: TShiftState; ItemNo, X, Y: Integer);
|
|
var StyleNo: Integer;
|
|
begin
|
|
if Button<>mbLeft then exit;
|
|
if ItemNo=-1 then begin
|
|
ChangeBackgroundColor;
|
|
exit;
|
|
end;
|
|
StyleNo := rv.GetItemStyle(ItemNo);
|
|
case StyleNo of
|
|
rvsBullet:
|
|
Application.MessageBox('This is just a pointer to "break"', 'Bullet',
|
|
MB_OK or MB_ICONINFORMATION);
|
|
rvsBreak:
|
|
ChangeBreakColor(ItemNo);
|
|
else
|
|
ChangeTextStyle(StyleNo);
|
|
end;
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.rvRVMouseUp(Sender: TCustomRichView; Button: TMouseButton;
|
|
Shift: TShiftState; ItemNo, X, Y: Integer);
|
|
var StyleNo: Integer;
|
|
p: TPoint;
|
|
begin
|
|
if Button<>mbRight then exit;
|
|
pm.Tag := ItemNo;
|
|
StyleNo := 0;// avoiding warning
|
|
if ItemNo<>-1 then
|
|
StyleNo := rv.GetItemStyle(ItemNo);
|
|
|
|
mitBack.Visible := ItemNo=-1;
|
|
mitBreak.Visible := (ItemNo>=0) and (StyleNo=rvsBreak);
|
|
mitText.Visible := (ItemNo>=0) and (StyleNo>=0);
|
|
mitHighlight.Visible := mitText.Visible and rvs.TextStyles[StyleNo].Jump;
|
|
p := rv.ClientToScreen(Point(X,Y));
|
|
pm.Popup(p.X,p.Y);
|
|
end;
|
|
{-----------------------------------------------------------}
|
|
procedure TfrmDemo2.mitBackClick(Sender: TObject);
|
|
begin
|
|
ChangeBackgroundColor;
|
|
end;
|
|
|
|
procedure TfrmDemo2.mitBreakClick(Sender: TObject);
|
|
begin
|
|
ChangeBreakColor(pm.Tag);
|
|
end;
|
|
|
|
procedure TfrmDemo2.mitTextClick(Sender: TObject);
|
|
begin
|
|
ChangeTextStyle(rv.GetItemStyle(pm.Tag));
|
|
end;
|
|
|
|
procedure TfrmDemo2.mitHighlightClick(Sender: TObject);
|
|
begin
|
|
ChangeHighlightColor(rv.GetItemStyle(pm.Tag));
|
|
end;
|
|
|
|
end. |