⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editormainformu.pas

📁 jvcl driver development envionment
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  if FUpdating then
    Exit;
  CurrText.Disabled := not CurrText.Disabled;
  DisabledItem.Checked := CurrText.Disabled;
end;

procedure TEditorMainForm.DrawLine;
var
  P: TPoint;
begin
  FLineVisible := not FLineVisible;
  P := Point(0, 0);
  Inc(P.X, FLineOfs);
  with P, Editor do
  begin
    MoveToEx(FLineDC, X, Y, nil);
    LineTo(FLineDC, X, Y + ClientHeight);
  end;
end;

procedure TEditorMainForm.EditCopy(Sender: TObject);
begin
  Editor.CopyToClipboard;
end;

procedure TEditorMainForm.EditCut(Sender: TObject);
begin
  Editor.CutToClipboard;
end;

procedure TEditorMainForm.EditFindClick(Sender: TObject);
begin
  with Editor do
    FindDialog(SelText);
end;

procedure TEditorMainForm.EditFindDialogClose(Sender: TObject; Dialog: TFindDialog);
begin
  FocusEditor;
end;

procedure TEditorMainForm.EditFindNextItemClick(Sender: TObject);
begin
  if not Editor.FindNext then
    Beep;
  FocusEditor;
end;

procedure TEditorMainForm.EditObjPropsItemClick(Sender: TObject);
begin
  Editor.ObjectPropertiesDialog;
end;

procedure TEditorMainForm.EditorProtectChange(Sender: TObject; StartPos,
  EndPos: Integer; var AllowChange: Boolean);
begin
  AllowChange := FProtectChanging;
end;

procedure TEditorMainForm.EditorTextNotFound(Sender: TObject;
  const FindText: string);
begin
  MessageDlg(Format('Text "%s" not found.', [FindText]), mtWarning, [mbOK], 0);
end;

procedure TEditorMainForm.EditorURLClick(Sender: TObject; const URLText: string;
  Button: TMouseButton);
begin
  if Button = mbLeft then
    ShellExecute(Handle, nil, PChar(URLText), nil, nil, SW_SHOW);
end;

procedure TEditorMainForm.EditPaste(Sender: TObject);
begin
  Editor.PasteFromClipboard;
end;

procedure TEditorMainForm.EditPasteSpecialClick(Sender: TObject);
begin
  try
    Editor.PasteSpecialDialog;
  finally
    FocusEditor;
  end;
end;

procedure TEditorMainForm.EditPopupMenuGetImageIndex(Sender: TMenu;
  Item: TMenuItem; State: TMenuOwnerDrawState; var ImageIndex: Integer);
begin
  if (Item = CutItm) or (Item = CopyItm) or (Item = PasteItm) then
    ImageIndex := Item.Tag;
end;

procedure TEditorMainForm.EditRedo(Sender: TObject);
begin
  Editor.Redo;
  RichEditChange(nil);
  SelectionChange(nil);
end;

procedure TEditorMainForm.EditReplaceClick(Sender: TObject);
begin
  with Editor do
    ReplaceDialog(SelText, '');
end;

procedure TEditorMainForm.EditSelectAll(Sender: TObject);
begin
  Editor.SelectAll;
end;

procedure TEditorMainForm.EditUndo(Sender: TObject);
begin
  Editor.Undo;
  RichEditChange(nil);
  SelectionChange(nil);
end;

procedure TEditorMainForm.FileExit(Sender: TObject);
begin
  Close;
end;

procedure TEditorMainForm.FileNew(Sender: TObject);
begin
  CheckFileSave;
  SetFileName('Untitled');
  FProtectChanging := True;
  try
    Editor.Lines.Clear;
    Editor.Modified := False;
    Editor.ReadOnly := False;
    SetModified(False);
    with Editor do
    begin
      DefAttributes.Assign(Font);
      SelAttributes.Assign(Font);
    end;
    SelectionChange(nil);
  finally
    FProtectChanging := False;
  end;
end;

procedure TEditorMainForm.FileOpen(Sender: TObject);
begin
  CheckFileSave;
  if OpenDialog.Execute then
  begin
    Editor.Refresh;
    PerformFileOpen(OpenDialog.FileName);
    Editor.ReadOnly := ofReadOnly in OpenDialog.Options;
  end;
end;

procedure TEditorMainForm.FilePrint(Sender: TObject);
begin
  if PrintDialog.Execute then
    Editor.Print(FFileName);
end;

procedure TEditorMainForm.FileSave(Sender: TObject);
begin
  if FFileName = 'Untitled' then
    FileSaveAs(Sender)
  else
  begin
    Editor.Lines.SaveToFile(FFileName);
    Editor.Modified := False;
    SetModified(False);
    RichEditChange(nil);
  end;
end;

procedure TEditorMainForm.FileSaveAs(Sender: TObject);
begin
  if SaveDialog.Execute then
  begin
    Editor.Lines.SaveToFile(SaveDialog.FileName);
    SetFileName(SaveDialog.FileName);
    Editor.Modified := False;
    SetModified(False);
    RichEditChange(nil);
  end;
  FocusEditor;
end;

procedure TEditorMainForm.FileSaveSelected(Sender: TObject);
begin
  if SaveDialog.Execute then
  begin
    with Editor do
    try
      StreamMode := [smSelection];
      Lines.SaveToFile(SaveDialog.FileName);
    finally
      StreamMode := [];
    end;
    RichEditChange(nil);
  end;
  FocusEditor;
end;

procedure TEditorMainForm.FirstIndMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FDragging := False;
  Editor.Paragraph.FirstIndent := Max(0, RulerToIndent(FirstInd.Left + FDragOfs,
    False));
  LeftIndMouseUp(Sender, Button, Shift, X, Y);
end;

procedure TEditorMainForm.FocusEditor;
begin
  with Editor do
    if CanFocus then
      SetFocus;
end;

procedure TEditorMainForm.FontNameChange(Sender: TObject);
begin
  if FUpdating then
    Exit;
  CurrText.Name := FontName.FontName;
end;

procedure TEditorMainForm.FontSizeChange(Sender: TObject);
begin
  if FUpdating then
    Exit;
  if FontSize.AsInteger > 0 then
    CurrText.Size := FontSize.AsInteger;
end;

procedure TEditorMainForm.FormActivate(Sender: TObject);
begin
  FocusEditor;
end;

procedure TEditorMainForm.FormatParaAttributes(Sender: TObject);
begin
  FormatParagraph(Editor.Paragraph);
  FocusEditor;
end;

procedure TEditorMainForm.FormatParaTabs(Sender: TObject);
begin
  FormatTabs(Editor.Paragraph);
  FocusEditor;
end;

procedure TEditorMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  try
    CheckFileSave;
  except
    CanClose := False;
  end;
end;

procedure TEditorMainForm.FormCreate(Sender: TObject);
var
  I: Integer;
  Item: TMenuItem;
const
  SPictureFilter = '%s|%s|%s|%s';
begin
  // The TComponent destructor should handle the destruction of the
  // painters because we indicate the form (self) as the owner of
  // the objects. But we are extra careful and destroy them ourselves
  // in FormDestroy anyway.
  ColorMenu.ItemPainter := TJvXPColorMenuItemPainter.Create(Self);
  BackgroundMenu.ItemPainter := TJvXPColorMenuItemPainter.Create(Self);

  Editor.RegisterMSTextConverters;
  OpenDialog.InitialDir := ExtractFilePath(ParamStr(0));
  OpenDialog.Filter := Editor.Filter(ckImport);
  SaveDialog.InitialDir := OpenDialog.InitialDir;
  SaveDialog.Filter := Editor.Filter(ckExport);
  SetFileName('Untitled');
  SetupRuler;
  HandleNeeded;
  SelectionChange(Self);
  Editor.OnCloseFindDialog := EditFindDialogClose;
  FOpenPictureDialog := TOpenPictureDialog.Create(Self);
  with FOpenPictureDialog do
    Filter := Format(SPictureFilter, [
      GraphicFilter(TBitmap),
      GraphicFilter(TMetafile),
      GraphicFilter(TJPEGImage),
      GraphicFilter(TJvGIFImage)
      ]);
  with ColorMenu.Items do
  begin
    while Count > 0 do
      Items[Count - 1].Free;
    for I := 0 to 16 do
    begin
      Item := NewItem(ColorName(ColorValues[I]), scNone,
        False, True, ColorItemClick, 0, '');
      Item.RadioItem := True;
      Item.Tag := ColorValues[I];
      Add(Item);
    end;
  end;
  with BackgroundMenu.Items do
  begin
    while Count > 0 do
      Items[Count - 1].Free;
    for I := 0 to 16 do
    begin
      Item := NewItem(ColorName(BackValues[I]), scNone,
        False, True, BackgroundItemClick, 0, '');
      Item.RadioItem := True;
      Item.Tag := BackValues[I];
      Add(Item);
    end;
  end;
  FClipboardMonitor := TJvClipboardMonitor.Create(Self);
  FClipboardMonitor.OnChange := ClipboardChanged;
  SuperscriptBtn.Enabled := RichEditVersion >= 2;
  SubscriptBtn.Enabled := RichEditVersion >= 2;
  BackgroundBtn.Enabled := RichEditVersion >= 2;
  DisabledItem.Enabled := RichEditVersion >= 2;
  HiddenItem.Enabled := RichEditVersion >= 2;
  JustifyBtn.Enabled := RichEditVersion >= 3;
end;

procedure TEditorMainForm.FormDestroy(Sender: TObject);
begin
  ColorMenu.ItemPainter.Free;
  ColorMenu.ItemPainter := nil;
  BackgroundMenu.ItemPainter.Free;
  BackgroundMenu.ItemPainter := nil;
  { remove ourselves from the viewer chain }
  FClipboardMonitor.Free;
end;

procedure TEditorMainForm.FormPaint(Sender: TObject);
begin
  SetEditRect;
end;

procedure TEditorMainForm.FormResize(Sender: TObject);
begin
  SetEditRect;
  SelectionChange(Sender);
end;

procedure TEditorMainForm.FormShow(Sender: TObject);
var
  Res: TResourceStream;
begin
  UpdateCursorPos;
  DragAcceptFiles(Handle, True);
  RichEditChange(nil);
  FocusEditor;
  ClipboardChanged(nil);
  { check if we should load a file from the command line }
  if (ParamCount > 0) and FileExists(ParamStr(1)) then
    PerformFileOpen(ParamStr(1))
  else
  begin
    StartWait;
    try
      Res := TResourceStream.Create(HInstance, 'OVERVIEWRTF', 'RTF');
      try
        Editor.Lines.LoadFromStream(Res);
        SetFileName('Untitled');
        Editor.Modified := False;
        SetModified(False);
      finally
        Res.Free;
      end;
    except

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -