📄 unit1.pas
字号:
end
else
r := RichViewEdit1.LoadText(OpenDialog1.FileName,CurTextStyleNo,CurParaStyleNo,False);
4: // ANSI text
r := RichViewEdit1.LoadText(OpenDialog1.FileName,CurTextStyleNo,CurParaStyleNo,False);
5: // Unicode text
begin
DisplayUnicodeWarning;
r := RichViewEdit1.LoadTextW(OpenDialog1.FileName,CurTextStyleNo,CurParaStyleNo,False)
end;
else
r := False;
end;
Screen.Cursor := crDefault;
if not r then begin
ErrorMessage := 'Error during loading';
if OpenDialog1.FilterIndex=1 then
ErrorMessage := ErrorMessage + GetRVFErrors;
Application.MessageBox(PChar(ErrorMessage), 'Error', 0);
end;
FillStyleCombo(RVStyle1.ParaStyles, cmbPara);
FillStyleCombo(RVStyle1.TextStyles, cmbText);
RichViewEdit1.Format;
cmbPara.ItemIndex := RichViewEdit1.CurParaStyleNo;
cmbText.ItemIndex := RichViewEdit1.CurTextStyleNo;
UpdateUndoMenu;
end;
end;
{ Event: picture needed while reading from RVF ------------------------}
procedure TForm1.RichViewEdit1RVFPictureNeeded(Sender: TCustomRichView; Name: String;
Tag: Integer; var gr: TGraphic);
begin
gr := TBitmap.Create;
gr.LoadFromFile(ExtractFilePath(Application.ExeName)+'default.bmp');
end;
{ Event: control needed while reading from RVF ------------------------}
procedure TForm1.RichViewEdit1RVFControlNeeded(Sender: TCustomRichView; Name: String;
Tag: Integer; var ctrl: TControl);
begin
ctrl := TButton.Create(RichViewEdit1);
TButton(ctrl).Caption := 'from file';
end;
{ Event: imagelist needed while reading from RVF ----------------------}
procedure TForm1.RichViewEdit1RVFImageListNeeded(Sender: TCustomRichView;
ImageListTag: Integer;
var il: TCustomImageList);
begin
il := Self.il;
end;
{---------------------------------------------------------------------}
function TForm1.GetRVFErrors: String;
begin
Result := '';
if rvfwUnknownPicFmt in RichViewEdit1.RVFWarnings then
Result := Result+'unknown picture format;';
if rvfwUnknownCtrls in RichViewEdit1.RVFWarnings then
Result := Result+'unknown control class;';
if rvfwConvUnknownStyles in RichViewEdit1.RVFWarnings then
Result := Result+'text, paragraph or list style is not present;';
if rvfwConvLargeImageIdx in RichViewEdit1.RVFWarnings then
Result := Result+'invalid image-list index;';
if Result<>'' then
Result := #13'('+Result+')';
end;
{ File|Save... --------------------------------------------------------}
procedure TForm1.mitSaveClick(Sender: TObject);
var r: Boolean;
begin
SaveDialog1.Title := 'Save & Export';
SaveDialog1.Filter := 'RichView Format files(*.rvf)|*.rvf|'+
'RTF Files (*.rtf)|*.rtf|'+
'Text (*.txt)|*.txt|'+
'Unicode Text (*.txt)|*.txt|'+
'HTML - with CSS (*.htm;*.html)|*.htm;*.html|'+
'HTML - Simplified (*.htm;*.html)|*.htm;*.html';
SaveDialog1.DefaultExt := 'rvf';
if SaveDialog1.Execute then begin
Screen.Cursor := crHourglass;
case SaveDialog1.FilterIndex of
1: // RVF
r := RichViewEdit1.SaveRVF(SaveDialog1.FileName, False);
2: // RTF
r := RichViewEdit1.SaveRTF(SaveDialog1.FileName, False);
3: // ANSI Text (byte per character)
r := RichViewEdit1.SaveText(SaveDialog1.FileName, 80);
4: // Unicode Text (2 bytes per character)
r := RichViewEdit1.SaveTextW(SaveDialog1.FileName, 80);
5: // HTML with CSS
r := RichViewEdit1.SaveHTMLEx(SaveDialog1.FileName, HTMLTitle,'img', '',
'', '', HTMLSaveOptions);
6: // HTML
r := RichViewEdit1.SaveHTML(SaveDialog1.FileName, HTMLTitle,'img',
HTMLSaveOptions);
else
r := False;
end;
Screen.Cursor := crDefault;
if not r then
Application.MessageBox('Error during saving', 'Error', 0);
end;
end;
{ File|Options... --------------------------------------------------------}
procedure TForm1.mitOptionsClick(Sender: TObject);
var RVFOptions : TRVFOptions;
begin
frmOptions.SetOptions(RichViewEdit1.RVFOptions, HTMLSaveOptions, HTMLTitle);
if frmOptions.ShowModal=mrOk then begin
frmOptions.GetOptions(RVFOptions, HTMLSaveOptions, HTMLTitle);
RichViewEdit1.RVFOptions := RVFOptions;
end;
end;
{ Event: saving controls in HTML --------------------------------------}
// Note: code below works normally in Internet Explorer
// Netscape 3 and 4 does not support <INPUT> tags outside <FORM></FORM> tags
// (Netscape 6 does)
procedure TForm1.RichViewEdit1SaveComponentToFile(Sender: TCustomRichView;
Path: String; SaveMe: TPersistent; SaveFormat: TRVSaveFormat;
var OutStr: String);
begin
case SaveFormat of
rvsfText:
begin
OutStr := '('+SaveMe.ClassName+')';
end;
rvsfHTML:
begin
if SaveMe is TButton then begin
OutStr := '<INPUT type="button" value="'+TButton(SaveMe).Caption+'" '+
'onClick="alert(''Just a demo'')">';
exit;
end;
if SaveMe is TEdit then begin
OutStr := '<INPUT type="text" value="'+TEdit(SaveMe).Text+'">';
exit;
end;
end;
rvsfRTF:
begin
OutStr := '\plain\b ('+SaveMe.ClassName+')';
end;
end;
end;
{ Event: saving URLs in HTML and RTF ---------------------------------}
procedure TForm1.RichViewEdit1WriteHyperlink(Sender: TCustomRichView;
id: Integer; RVData: TCustomRVData; ItemNo: Integer;
SaveFormat: TRVSaveFormat; var Target, Extras: string);
begin
if not (rvoTagsArePChars in Sender.Options) then
exit;
Target := PChar(RVData.GetItemTag(ItemNo));
end;
{ File|Clear ----------------------------------------------------------}
procedure TForm1.mitClearClick(Sender: TObject);
begin
CloseOleContainer;
RichViewEdit1.Clear;
RichViewEdit1.Format;
cmbPara.ItemIndex := RichViewEdit1.CurParaStyleNo;
cmbText.ItemIndex := RichViewEdit1.CurTextStyleNo;
UpdateUndoMenu;
end;
{ File|Print Preview --------------------------------------------------}
procedure TForm1.mitPreviewClick(Sender: TObject);
begin
RVPrint1.AssignSource(RichViewEdit1);
RVPrint1.FormatPages(rvdoALL);
if RVPrint1.PagesCount>0 then begin
frmPreview.rvpp.RVPrint := RVPrint1;
frmPreview.Button1Click(nil); // Show First Page
frmPreview.ShowModal;
end;
end;
{ File|Print on Default Printer ---------------------------------------}
procedure TForm1.mitPrintClick(Sender: TObject);
var PrintIt: Boolean;
begin
{$IFDEF RICHVIEWDEF3}
PrintIt := psd.Execute;
{$ELSE}
PrintIt := True;
{$ENDIF}
if PrintIt then begin
RVPrint1.AssignSource(RichViewEdit1);
RVPrint1.FormatPages(rvdoALL);
if RVPrint1.PagesCount>0 then
RVPrint1.Print('RichView Edit Demo',1,False);
end;
end;
{ File|Exit -----------------------------------------------------------}
procedure TForm1.mitExitClick(Sender: TObject);
begin
Close;
end;
{======================================================================}
{ Main menu: "Insert" }
{======================================================================}
{ Insert|File... ------------------------------------------------------}
procedure TForm1.mitInsertFileClick(Sender: TObject);
var r: Boolean;
begin
OpenDialog1.Title := 'Inserting File';
OpenDialog1.Filter := 'RichView Format Files(*.rvf)|*.rvf|'+
'RTF Files(*.rtf)|*.rtf|'+
'Text Files - autodetect (*.txt)|*.txt|'+
'ANSI Text Files (*.txt)|*.txt|'+
'Unicode Text Files (*.txt)|*.txt|'+
'OEM Text Files (*.txt)|*.txt';
if OpenDialog1.Execute then begin
Screen.Cursor := crHourglass;
case OpenDialog1.FilterIndex of
1: // RVF
r := RichViewEdit1.InsertRVFFromFileEd(OpenDialog1.FileName);
2: // RTF
r := RichViewEdit1.InsertRTFFromFileEd(OpenDialog1.FileName);
3: // Text
begin
if RV_TestFileUnicode(OpenDialog1.FileName)=rvutYes then
r := RichViewEdit1.InsertTextFromFileW(OpenDialog1.FileName)
else
r := RichViewEdit1.InsertTextFromFile(OpenDialog1.FileName);
end;
4: // ANSI Text
r := RichViewEdit1.InsertTextFromFile(OpenDialog1.FileName);
5: // Unicode Text
r := RichViewEdit1.InsertTextFromFileW(OpenDialog1.FileName);
6: // OEM Text
r := RichViewEdit1.InsertOEMTextFromFile(OpenDialog1.FileName);
else
r := False;
end;
Screen.Cursor := crDefault;
if not r then
Application.MessageBox('Error reading file', 'Error',
MB_OK or MB_ICONSTOP);
end;
end;
{ Insert|Picture... ---------------------------------------------------}
procedure TForm1.mitPictureClick(Sender: TObject);
var gr: TGraphic;
pic: TPicture;
begin
OpenDialog1.Title := 'Inserting Image';
{$IFDEF RICHVIEWDEF3}
OpenDialog1.Filter := 'Graphics(*.bmp;*.wmf;*.emf;*.ico;*.jpg)|*.bmp;*.wmf;*.emf;*.ico;*.jpg|All(*.*)|*.*';
{$ELSE}
OpenDialog1.Filter := 'Graphics(*.bmp;*.wmf;*.emf;*.ico)|*.bmp;*.wmf;*.emf;*.ico|All(*.*)|*.*';
{$ENDIF}
if OpenDialog1.Execute then
try
pic := TPicture.Create;
try
pic.LoadFromFile(OpenDialog1.FileName);
gr := RV_CreateGraphics(TGraphicClass(pic.Graphic.ClassType));
gr.Assign(pic.Graphic);
finally
pic.Free;
end;
if gr<>nil then
RichViewEdit1.InsertPicture('',gr,rvvaBaseLine);
except
Application.MessageBox(PChar('Cannot read picture from file '+OpenDialog1.FileName), 'Error',
MB_OK or MB_ICONSTOP);
end;
end;
{ Event: clicking inserted control ------------------------------------}
procedure TForm1.OnControlClick(Sender: TObject);
begin
RichViewEdit1.SelectControl(TControl(Sender));
end;
{ Insert|Component|Button ---------------------------------------------}
procedure TForm1.mitButtonCompClick(Sender: TObject);
var btn: TButton;
const Captions: array[0..9] of String =
(
'Help','Exit','Cancel','Ok','Close','Run','Options...','Minimize',
'Hide','Show'
);
begin
btn := TButton.Create(Self);
btn.Caption := Captions[Random(10)];
btn.OnClick := OnControlClick;
RichViewEdit1.InsertControl('',btn,rvvaBaseline);
if RichViewEdit1.CurItemStyle=rvsComponent then
RichViewEdit1.SetCurrentItemExtraIntProperty(rvepResizable, 1, True);
end;
{ Insert|Component|Edit Box -------------------------------------------}
procedure TForm1.mitEditBoxCompClick(Sender: TObject);
var edt: TEdit;
const Captions: array[0..9] of String =
(
'0','Hello','1','$0','2x2=4','enter text here','x<y','to be or not to be?',
'(empty)','(full)'
);
begin
edt := TEdit.Create(Self);
edt.Text := Captions[Random(10)];
edt.OnClick := OnControlClick;
RichViewEdit1.InsertControl('',edt,rvvaBaseline);
if RichViewEdit1.CurItemStyle=rvsComponent then
RichViewEdit1.SetCurrentItemExtraIntProperty(rvepResizable, 1, True);
end;
{ Insert|Bullet|"XXX" -------------------------------------------------}
procedure TForm1.mitInsertBulletClick(Sender: TObject);
begin
RichViewEdit1.InsertBullet(TMenuItem(Sender).Tag, il);
end;
{ Insert|Hot Spot|"XXX" -----------------------------------------------}
procedure TForm1.mitAddHSClick(Sender: TObject);
begin
RichViewEdit1.InsertHotSpot(TMenuItem(Sender).Tag, TMenuItem(Sender).Tag+2, il);
end;
{ Insert|Break --------------------------------------------------------}
procedure TForm1.mitBreakClick(Sender: TObject);
begin
RichViewEdit1.InsertBreak(1, rvbsLine, clNone);
end;
{======================================================================}
{ Main menu : "Edit" }
{======================================================================}
{ Edit ----------------------------------------------------------------}
procedure TForm1.mpdEditClick(Sender: TObject);
begin
mitPasteAsRTF.Enabled := RichViewEdit1.CanPasteRTF;
mitPasteAsText.Enabled := Clipboard.HasFormat(CF_TEXT);
mitPasteAsUnicodeText.Enabled := Clipboard.HasFormat(CF_UNICODETEXT);
mitPasteAsMetafile.Enabled := Clipboard.HasFormat(CF_METAFILEPICT);
mitPasteAsBitmap.Enabled := Clipboard.HasFormat(CF_BITMAP);
mitPasteAsRVF.Enabled := RichViewEdit1.CanPasteRVF;
mitPaste.Enabled := RichViewEdit1.CanPaste;
mitInsertPageBreak.Enabled := (RichViewEdit1.InplaceEditor=nil);
mitRemovePageBreak.Enabled :=
(RichViewEdit1.InplaceEditor=nil) and
RichViewEdit1.PageBreaksBeforeItems[RichViewEdit1.CurItemNo];
// You can edit properties only for item with caret.
// We disable this item because otherwise user can think what he will
// edit properties of all selected items.
// More smart programs can determine if there is only one item is selected
// and do not disable this item in this case
mitEditProps.Enabled := not RichViewEdit1.SelectionExists;
end;
{ Edit|Undo------------------------------------------------------------}
procedure TForm1.mitUndoClick(Sender: TObject);
begin
RichViewEdit1.Undo;
end;
{ Edit|Redo -----------------------------------------------------------}
procedure TForm1.mitRedoClick(Sender: TObject);
begin
RichViewEdit1.Redo;
end;
{ Edit|Cut ------------------------------------------------------------}
procedure TForm1.mitCutClick(Sender: TObject);
begin
RichViewEdit1.CutDef;
end;
{ Edit|Copy -----------------------------------------------------------}
procedure TForm1.mitCopyClick(Sender: TObject);
begin
RichViewEdit1.CopyDef;
end;
{ Edit|Paste ----------------------------------------------------------}
procedure TForm1.mitPasteClick(Sender: TObject);
begin
RichViewEdit1.Paste;
end;
{ Edit|Paste As|RTF ---------------------------------------------------}
procedure TForm1.mitPasteAsRTFClick(Sender: TObject);
begin
RichViewEdit1.PasteRTF;
end;
{ Edit|Paste As|Text --------------------------------------------------}
procedure TForm1.mitPasteAsTextClick(Sender: TObject);
begin
RichViewEdit1.PasteText;
end;
{ Edit|Paste As|Unicode Text ------------------------------------------}
procedure TForm1.mitPasteAsUnicodeTextClick(Sender: TObject);
begin
RichViewEdit1.PasteTextW;
end;
{ Edit|Paste As|Bitmap ------------------------------------------------}
procedure TForm1.mitPasteAsBitmapClick(Sender: TObject);
begin
RichViewEdit1.PasteBitmap(False);
end;
{ Edit|Paste As|Metafile ----------------------------------------------}
procedure TForm1.mitPasteAsMetafileClick(Sender: TObject);
begin
RichViewEdit1.PasteMetafile(False);
end;
{ Edit|Paste As|RichView Format ---------------------------------------}
procedure TForm1.mitPasteAsRVFClick(Sender: TObject);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -