Componentes.Terceros.TRichView/12.0.4/Demos/DelphiUnicode/OfficeConverters/MainFrm.pas
david fddb8c1dff Importación inicial con versión 12.0.4
NO HAY CÓDIGO FUENTE

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.TRichView@1 b34d35ef-135b-4489-b9d1-9916e9c25524
2010-01-11 12:26:42 +00:00

145 lines
4.6 KiB
ObjectPascal

unit MainFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ShellApi,
Dialogs, StdCtrls, ComCtrls, RVStyle, RVScroll,
RichView, RVFuncs, ExtCtrls, RVEdit, CRVData, CRVFData, RVOfficeCnv, RVTypes,
GifImg, PngImage;
type
TfrmMain = class(TForm)
od: TOpenDialog;
rvs: TRVStyle;
rve: TRichViewEdit;
Panel1: TPanel;
btnOpen: TButton;
rvc: TRVOfficeConverter;
btnSave: TButton;
sd: TSaveDialog;
pb: TProgressBar;
procedure btnOpenClick(Sender: TObject);
procedure rvcConverting(Sender: TObject; Percent: Integer);
procedure btnSaveClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure rveJump(Sender: TObject; id: Integer);
procedure rveWriteHyperlink(Sender: TCustomRichView; id: Integer;
RVData: TCustomRVData; ItemNo: Integer; SaveFormat: TRVSaveFormat;
var Target, Extras: string);
procedure rveReadHyperlink(Sender: TCustomRichView; const Target,
Extras: string; DocFormat: TRVLoadFormat; var StyleNo, ItemTag: Integer;
var ItemName: TRVRawByteString);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
{====================== Import and export =====================================}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
od.Filter := 'RTF (Built-In RichView Import)|*.rtf|'+rvc.GetImportFilter;
od.InitialDir := ExtractFilePath(Application.ExeName)+'test\';
sd.Filter := 'RTF (Built-In RichView Export)|*.rtf|'+rvc.GetExportFilter;
rve.Clear;
rve.AddNL('This demo shows how to use Microsoft® Office text converters.',0,0);
rve.AddNL(
'First items in filters (file masks) of the file-selection dialogs are RTF import/export '+
'by the component itself. Others use converters.',0,0);
rve.AddNL('For HTML import testing, look at test/test.htm.',0,0);
rve.AddNL('After loading, Ctrl+click any hypertext link to view its target.',0,0);
rve.AddNL(
'You''ll see option for HTML export via converters. You can use it, but native RichView HTML'+
' export gives much better results.',0,0);
rve.Format;
end;
{------------------------------------------------------------------------------}
procedure TfrmMain.btnOpenClick(Sender: TObject);
var r: Boolean;
begin
if not od.Execute then
exit;
rve.Clear;
rve.Format;
rve.Update;
rve.Clear;
if od.FilterIndex=1 then
r := rve.LoadRTF(od.FileName)
else begin
pb.Visible := True;
r:= rvc.ImportRV(od.FileName, rve, od.FilterIndex-2);
end;
if not r then
Application.MessageBox('Error','Error',0);
pb.Visible := False;
rve.Format;
rve.SetFocus;
end;
{------------------------------------------------------------------------------}
procedure TfrmMain.btnSaveClick(Sender: TObject);
var r: Boolean;
begin
if not sd.Execute then
exit;
pb.Visible := True;
if sd.FilterIndex=1 then
r := rve.SaveRTF(sd.FileName,False)
else begin
pb.Visible := True;
r:= rvc.ExportRV(sd.FileName, rve, sd.FilterIndex-2);
end;
if not r then
Application.MessageBox('Error','Error',0);
pb.Visible := False;
rve.SetFocus;
end;
{------------------------------------------------------------------------------}
procedure TfrmMain.rvcConverting(Sender: TObject; Percent: Integer);
begin
pb.Position := Percent;
end;
{============================ Hypertext =======================================}
// We store URLs in tags
procedure TfrmMain.rveReadHyperlink(Sender: TCustomRichView; const Target,
Extras: string; DocFormat: TRVLoadFormat; var StyleNo, ItemTag: Integer;
var ItemName: TRVRawByteString);
begin
ItemTag := Integer(StrNew(PChar(Target)));
end;
{------------------------------------------------------------------------------}
procedure TfrmMain.rveWriteHyperlink(Sender: TCustomRichView; id: Integer;
RVData: TCustomRVData; ItemNo: Integer; SaveFormat: TRVSaveFormat; var Target,
Extras: string);
begin
Target := PChar(RVData.GetItemTag(ItemNo));
end;
{------------------------------------------------------------------------------}
procedure TfrmMain.rveJump(Sender: TObject; id: Integer);
var ItemNo: Integer;
RVData: TCustomRVFormattedData;
s: String;
begin
rve.GetJumpPointLocation(id, RVData, ItemNo);
s := PChar(RVData.GetItemTag(ItemNo));
ShellExecute(0, 'open', PChar(s), nil, nil, SW_SHOW);
end;
{==============================================================================}
initialization
RegisterClass(TGifImage);
RegisterClass(TPngImage);
end.