📄 unit1te.pas
字号:
Form1: TForm1;
implementation
uses dmActions;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// Almost all these assignments could be done at design time in the Object Inspector
// But in this demo we do not want to modify rvActionsResource
// (and we recommend to use a copy of it in your applications)
rvActionsResource.rvActionSave1.OnDocumentFileChange := rvActionSave1DocumentFileChange;
// Code for making color-picking buttons stay pressed while a
// color-picker window is visible.
rvActionsResource.rvActionColor1.OnShowColorPicker := ColorPickerShow;
rvActionsResource.rvActionColor1.OnHideColorPicker := ColorPickerHide;
rvActionsResource.rvActionParaColor1.OnShowColorPicker := ColorPickerShow;
rvActionsResource.rvActionParaColor1.OnHideColorPicker := ColorPickerHide;
rvActionsResource.rvActionFontColor1.OnShowColorPicker := ColorPickerShow;
rvActionsResource.rvActionFontColor1.OnHideColorPicker := ColorPickerHide;
rvActionsResource.rvActionFontBackColor1.OnShowColorPicker := ColorPickerShow;
rvActionsResource.rvActionFontBackColor1.OnHideColorPicker := ColorPickerHide;
// Delphi 4 and 5 do not have ActionComponent property for actions.
// Coloring actions have a substitution - CallerControl property
// It is ignored in Delphi 6 and 7
rvActionsResource.rvActionParaColor1.CallerControl := ToolButton39;
rvActionsResource.rvActionFontBackColor1.CallerControl := ToolButton38;
rvActionsResource.rvActionFontColor1.CallerControl := ToolButton36;
{$IFDEF RICHVIEWDEF6}
// AutoComplete feature causes OnClick generation when editing combo-box's text.
// Since in OnClick we move input focus in RichViewEdit1, this effect is
// undesirable
cmbFont.AutoComplete := False;
{$ENDIF}
Localize;
// Loading initial file via ActionOpen (allowing to update user interface)
rvActionsResource.rvActionOpen1.LoadFile(RichViewEdit1,
ExtractFilePath(Application.ExeName) + 'readme.rvf', ffiRVF);
{
// alternative way to start
rvActionsResource.rvActionNew1.ExecuteTarget(RichViewEdit1);
}
Application.OnHint := DoApplicationHint;
end;
{------------------- Working with document ------------------------------------}
// When document is created, saved, loaded...
procedure TForm1.rvActionSave1DocumentFileChange(Sender: TObject;
Editor: TCustomRichViewEdit; const FileName: String;
FileFormat: TrvFileSaveFilter; IsNew: Boolean);
var s: String;
begin
s := ExtractFileName(FileName);
rvActionsResource.rvActionPrint1.Title := s;
rvActionsResource.rvActionQuickPrint1.Title := s;
if IsNew then
s := s+' (*)';
TeForm1.Caption := s + ' - RichViewActionsTest';
end;
// Prompt for saving...
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := rvActionsResource.rvActionSave1.CanCloseDoc(RichViewEdit1);
end;
procedure TForm1.mitExit_oldClick(Sender: TObject);
begin
Close;
end;
{--------------- Working with color-picking buttons ---------------------------}
// Code for making color-picking buttons pressed while
// a color-picker window is visible.
procedure TForm1.ColorPickerShow(Sender: TObject);
begin
{$IFDEF RICHVIEWDEF6}
if (Sender as TAction).ActionComponent is TToolButton then
TToolButton(TAction(Sender).ActionComponent).Down := True;
{$ELSE}
if TrvActionCustomColor(Sender).CallerControl<>nil then
TToolButton(TrvActionCustomColor(Sender).CallerControl).Down := True;
{$ENDIF};
end;
procedure TForm1.ColorPickerHide(Sender: TObject);
begin
{$IFDEF RICHVIEWDEF6}
if (Sender as TAction).ActionComponent is TToolButton then
TToolButton(TAction(Sender).ActionComponent).Down := False;
{$ELSE}
if TrvActionCustomColor(Sender).CallerControl<>nil then
TToolButton(TrvActionCustomColor(Sender).CallerControl).Down := False;
{$ENDIF}
end;
{-------------------------- Table size popup ----------------------------------}
procedure TForm1.ToolButton12ChevronClick(Sender: TObject);
begin
rvActionsResource.rvActionInsertTable1.ShowTableSizeDialog(RichViewEdit1,
ToolButton12);
end;
{-------------- Set of events for processing hypertext jumps ------------------}
// Hyperlink click
procedure TForm1.RichViewEdit1Jump(Sender: TObject; id: Integer);
begin
rvActionsResource.rvActionInsertHyperlink1.GoToLink(RichViewEdit1, id);
end;
// Importing hyperlink from RTF
procedure TForm1.RichViewEdit1ReadHyperlink(Sender: TCustomRichView;
const Target, Extras: String; DocFormat: TRVLoadFormat; var StyleNo,
ItemTag: Integer; var ItemName: String);
var URL: String;
begin
if DocFormat=rvlfURL then
StyleNo :=
rvActionsResource.rvActionInsertHyperlink1.GetHyperlinkStyleNo(RichViewEdit1);
URL := rvActionsResource.rvActionInsertHyperlink1.EncodeTarget(Target);
ItemTag := Integer(StrNew(PChar(URL)));
end;
// Exporting hyperlink to RTF and HTML
procedure TForm1.RichViewEdit1WriteHyperlink(Sender: TCustomRichView;
id: Integer; RVData: TCustomRVData; ItemNo: Integer;
SaveFormat: TRVSaveFormat; var Target, Extras: String);
begin
Target := PChar(RVData.GetItemTag(ItemNo));
end;
// URL detection, hyperlink closing
procedure TForm1.RichViewEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key in [VK_SPACE, VK_RETURN] then begin
rvActionsResource.rvActionInsertHyperlink1.DetectURL(RichViewEdit1);
rvActionsResource.rvActionInsertHyperlink1.TerminateHyperlink(RichViewEdit1);
end;
end;
{----------------------- Working with combo-boxes -----------------------------}
// Current font is changed. Updating the combo-boxes.
procedure TForm1.RichViewEdit1CurTextStyleChanged(Sender: TObject);
var CurStyle: TFontInfo;
begin
UpdatingCombos := True;
try
CurStyle := RVStyle1.TextStyles[RichViewEdit1.CurTextStyleNo];
cmbFont.FontValue.Name := CurStyle.FontName;
cmbFontSize.Text := IntToStr(CurStyle.Size);
finally
UpdatingCombos := False;
end;
end;
// Applying the font name
procedure TForm1.cmbFont1Click(Sender: TObject);
var FontName: String;
begin
if cmbFont.ItemIndex < 0 then
FontName := cmbFont.Text
else
FontName := cmbFont.Items[cmbFont.ItemIndex];
if UpdatingCombos then
exit;
if cmbFont.ItemIndex < 0 then
cmbFont.ItemIndex := cmbFont.Items.IndexOf(FontName);
if cmbFont.ItemIndex<0 then
begin
Beep
end
else
with rvActionsResource.rvActionFontEx1 do
begin
UserInterface := False;
ValidProperties := [rvfimFontName];
Font.Name := FontName;
Execute;
UserInterface := True;
end;
RichViewEdit1.SetFocus;
end;
// Changing the font size
procedure TForm1.cmbFontSize1Click(Sender: TObject);
var FontSize: Integer;
begin
if UpdatingCombos then
exit;
try
FontSize := StrToInt(cmbFontSize.Text);
with rvActionsResource.rvActionFontEx1 do begin
UserInterface := False;
ValidProperties := [rvfimSize];
Font.Size := FontSize;
Execute;
UserInterface := True;
end;
except
Beep;
end;
RichViewEdit1.SetFocus;
end;
procedure TForm1.cmbKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
Key := #0;
TComboBox(Sender).OnClick(Sender);
end;
end;
{---------------------------- Localization ------------------------------------}
// Converts String to WideString using CodePage of UI language
function _GetWideString(const s: String): WideString;
begin
Result := RVU_RawUnicodeToWideString(RVU_AnsiToUnicode(
RVU_Charset2CodePage(RVA_GetCharset), s));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if RVA_ChooseLanguage then
Localize;
end;
procedure TForm1.Localize;
begin
// Fonts
Font.Charset := RVA_GetCharset;
StatusBar1.Font.Charset := RVA_GetCharset;
{$IFDEF RICHVIEWDEF6}
Screen.HintFont.Charset := RVA_GetCharset;
{$ENDIF}
te_forms.CodePage := RVU_Charset2CodePage(RVA_GetCharset);
// Localizing all actions on rvActionsResource
RVA_LocalizeForm(rvActionsResource);
// Localizing all actions on this form
RVA_LocalizeForm(Self);
// Localizing menus (not all menus in this demo are translated)
mitFile.Caption := _GetWideString(RVA_GetS(rvam_menu_File));
mitEdit.Caption := _GetWideString(RVA_GetS(rvam_menu_Edit));
mitFont.Caption := _GetWideString(RVA_GetS(rvam_menu_Font));
mitPara.Caption := _GetWideString(RVA_GetS(rvam_menu_Para));
mitFormat.Caption := _GetWideString(RVA_GetS(rvam_menu_Format));
mitInsert.Caption := _GetWideString(RVA_GetS(rvam_menu_Insert));
mitTable.Caption := _GetWideString(RVA_GetS(rvam_menu_Table));
mitExit.Caption := _GetWideString(RVA_GetS(rvam_menu_Exit));
mitFontSize.Caption := _GetWideString(RVA_GetS(rvam_menu_FontSize));
mitFontStyle.Caption := _GetWideString(RVA_GetS(rvam_menu_FontStyle));
mitTableSelect.Caption := _GetWideString(RVA_GetS(rvam_menu_TableSelect));
mitTableCellBorders.Caption := _GetWideString(RVA_GetS(rvam_menu_TableCellBorders));
mitTableAlignCellContents.Caption := _GetWideString(RVA_GetS(rvam_menu_TableCellAlign));
// In your application, you can use either TrvActionFonts or TrvActionFontEx
rvActionsResource.rvActionFonts1.Caption := rvActionsResource.rvActionFonts1.Caption+' (Standard)';
rvActionsResource.rvActionFontEx1.Caption := rvActionsResource.rvActionFontEx1.Caption+' (Advanced)';
// RVAddictSpell31.UILanguage := GetAddictSpellLanguage(RVA_GetLanguageName);
// RVThesaurus31.UILanguage := GetAddictThesLanguage(RVA_GetLanguageName);
end;
procedure TForm1.DoApplicationHint(Sender: TObject);
begin
StatusBar1.Panels[1].Text := _GetWideString(GetLongHint(Application.Hint));
end;
procedure TForm1.RVAControlPanel1Download(Sender: TrvAction;
const Source: String);
begin
if Source='' then
Application.Hint := ''
else
Application.Hint := 'Downloading '+Source+'...';
end;
procedure TForm1.RVAControlPanel1CreateTeForm(Sender: TForm;
teForm: TTeForm);
begin
teForm.Shadow.Enabled := True;
end;
initialization
{$IFDEF USE_GIFIMAGE}
RegisterClasses([TGifImage]);
// uncomment the line below if Gif does not appear in Insert | Image
//TPicture.RegisterFileFormat('gif', 'Gif Image', TGifImage);
RV_RegisterHTMLGraphicFormat(TGifImage);
{$ENDIF}
{$IFDEF USE_PNGOBJECT}
RegisterClass(TPngObject);
RV_RegisterHTMLGraphicFormat(TPngObject);
{$ENDIF}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -