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

📄 wwrich.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 4 页
字号:
{
//
// Components : TwwRichEditForm
//
// Copyright (c) 1998-2001 by Woll2Woll Software
//
// 9/15/98 - Only show InsertObject if not readonly
// 12/23/98 - Include Redo hint for Delphi 4
// 2/24/99 - No messagedlg if readonly - In case of resize which would set modified flag
// 2/15/00 - Remove loop for printing
// 6/8/00 - Save as plain text when user selects text type
// 9/5/2001- If no font size in dropdown still set text to current size. Just like wordpad.
// 10/02/2001 - More accurate way of determining if background color is highlighted.
}

unit wwrich;

interface

{$i wwIfDef.pas}
{$R-}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Mask, DBCtrls, ExtCtrls, Db, DBTables, Wwtable, Wwdatsrc, StdCtrls,
  ComCtrls, Grids, DBGrids, wwdbedit, Wwdotdot, Wwdbcomb, Buttons, richedit,
  Menus, wwrchdlg, wwriched, wwintl, wwrichtb, printers, commdlg, winspool,
  wwTrackIcon, ImgList;

type

  TwwRichEditForm = class(TForm)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Print1: TMenuItem;
    PageSetup1: TMenuItem;
    SaveExit1: TMenuItem;
    Exit1: TMenuItem;
    Edit1: TMenuItem;
    Undo1: TMenuItem;
    EditSep1: TMenuItem;
    Cut1: TMenuItem;
    Copy1: TMenuItem;
    Paste1: TMenuItem;
    Clear1: TMenuItem;
    SelectAll1: TMenuItem;
    EditSep2: TMenuItem;
    Find1: TMenuItem;
    FindNext1: TMenuItem;
    Replace1: TMenuItem;
    View1: TMenuItem;
    Toolbar1: TMenuItem;
    FormatBar1: TMenuItem;
    StatusBar: TStatusBar;
    OptionsSep: TMenuItem;
    Options1: TMenuItem;
    Insert1: TMenuItem;
    DateandTime1: TMenuItem;
    Format1: TMenuItem;
    Font1: TMenuItem;
    BulletStyle1: TMenuItem;
    Paragraph1: TMenuItem;
    Tabs1: TMenuItem;
    Help1: TMenuItem;
    FormatBar: TPanel;
    FontNameCombo: TwwDBComboBox;
    FontSizeCombo: TwwDBComboBox;
    BoldButton: TSpeedButton;
    UnderlineButton: TSpeedButton;
    ItalicButton: TSpeedButton;
    LeftButton: TSpeedButton;
    CenterButton: TSpeedButton;
    RightButton: TSpeedButton;
    BulletButton: TSpeedButton;
    StatusBar1: TMenuItem;
    PrintDialog1: TPrintDialog;
    FileSep2: TMenuItem;
    FileSep1: TMenuItem;
    Load1: TMenuItem;
    SaveAs1: TMenuItem;
    OpenDialog1: TOpenDialog;
    Toolbar: TPanel;
    NewButton: TSpeedButton;
    ToolBarBevel: TBevel;
    FormatBarBevel: TBevel;
    LoadButton1: TSpeedButton;
    SaveAsButton: TSpeedButton;
    PrintButton: TSpeedButton;
    FindButton: TSpeedButton;
    CutButton: TSpeedButton;
    CopyButton: TSpeedButton;
    UndoButton: TSpeedButton;
    PasteButton: TSpeedButton;
    SaveDialog1: TSaveDialog;
    RulerBevel: TBevel;
    Ruler1: TMenuItem;
    InsertObject1: TMenuItem;
    RedoButton: TSpeedButton;
    Redo1: TMenuItem;
    ToolbarBevel1: TBevel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    UserButtonBevel: TBevel;
    Bevel4: TBevel;
    PopupMenu1: TPopupMenu;
    Black1: TMenuItem;
    Green1: TMenuItem;
    Red1: TMenuItem;
    Blue1: TMenuItem;
    Yellow1: TMenuItem;
    Purple1: TMenuItem;
    Teal1: TMenuItem;
    Gray1: TMenuItem;
    Silver1: TMenuItem;
    Red2: TMenuItem;
    Lime1: TMenuItem;
    Yellow2: TMenuItem;
    Blue2: TMenuItem;
    Fuchsia1: TMenuItem;
    Aqua1: TMenuItem;
    White1: TMenuItem;
    Automatic1: TMenuItem;
    ColorButton: TSpeedButton;
    Tools1: TMenuItem;
    Spelling1: TMenuItem;
    SpellButton: TSpeedButton;
    ImageList1: TImageList;
    HighlightButton: TSpeedButton;
    JustifyButton: TSpeedButton;
    PrintPreviewButton: TSpeedButton;
    PrintPreview1: TMenuItem;
    Bevel5: TBevel;
    procedure BoldButtonClick(Sender: TObject);
    procedure UnderlineButtonClick(Sender: TObject);
    procedure ItalicButtonClick(Sender: TObject);
    procedure RightButtonClick(Sender: TObject);
    procedure CenterButtonClick(Sender: TObject);
    procedure LeftButtonClick(Sender: TObject);
    procedure BulletButtonClick(Sender: TObject);
    procedure RichEdit1SelectionChange(Sender: TObject);
    procedure Undo1Click(Sender: TObject);
    procedure Cut1Click(Sender: TObject);
    procedure Copy1Click(Sender: TObject);
    procedure Paste1Click(Sender: TObject);
    procedure SelectAll1Click(Sender: TObject);
    procedure Clear1Click(Sender: TObject);
    procedure Find1Click(Sender: TObject);
    procedure FindNext1Click(Sender: TObject);
    procedure Replace1Click(Sender: TObject);
    procedure Font1Click(Sender: TObject);
    procedure FontNameComboCloseUp(Sender: TwwDBComboBox; Select: Boolean);
    procedure FontSizeComboCloseUp(Sender: TwwDBComboBox; Select: Boolean);
    procedure BulletStyle1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Paragraph1Click(Sender: TObject);
    procedure Edit1Click(Sender: TObject);
    procedure Print1Click(Sender: TObject);
    procedure FormatBar1Click(Sender: TObject);
    procedure StatusBar1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure SaveExit1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Tabs1Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure PageSetup1Click(Sender: TObject);
    procedure Load1Click(Sender: TObject);
    procedure SaveAs1Click(Sender: TObject);
    procedure Toolbar1Click(Sender: TObject);
    procedure NewButtonClick(Sender: TObject);
    procedure LoadButton1Click(Sender: TObject);
    procedure SaveAsButtonClick(Sender: TObject);
    procedure PrintButtonClick(Sender: TObject);
    procedure FindButtonClick(Sender: TObject);
    procedure CutButtonClick(Sender: TObject);
    procedure CopyButtonClick(Sender: TObject);
    procedure PasteButtonClick(Sender: TObject);
    procedure UndoButtonClick(Sender: TObject);
    procedure FontNameComboDropDown(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Ruler1Click(Sender: TObject);
    procedure InsertObject1Click(Sender: TObject);
    procedure RedoButtonClick(Sender: TObject);
    procedure Redo1Click(Sender: TObject);
    procedure ColorButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Spelling1Click(Sender: TObject);
    procedure SpellButtonClick(Sender: TObject);
    procedure HighlightButtonClick(Sender: TObject);
    procedure BoldButtonMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure JustifyButtonClick(Sender: TObject);
    procedure PrintPreviewButtonClick(Sender: TObject);
  private
    tempDown: boolean;
    OrigOnHint: TNotifyEvent;
    FCanvas: TCanvas;
    OldParent1, OldParent2: TWinControl;
    Procedure RefreshControls;
    Procedure SetRichEditFontName(Value: string);  { Bypass VCL bug as it doesn't set the CharSet}
    Procedure UpdateStatusBar;
    procedure UpdateFormatToolBar(ShowToolBar, ShowFormatBar: boolean);
    Procedure FormChangeHint(Sender: TObject);
    Procedure ApplyIntl;
    procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;
    procedure WMMeasureItem(var Message: TWMMeasureItem); message WM_MEASUREITEM;
    procedure WMDrawItem(var Message: TWMDrawItem); message WM_DRAWITEM;
    procedure ColorClick(Sender: TObject);
    procedure InitColorMenu;
  public
    OrigRichEdit: TwwCustomRichEdit;
    RichEdit1: TwwDBRichEdit;
    RulerPanel: TwwRulerPanel;
  end;

const wwCentimetersPerInch = 2.537;
//const wwCentimetersPerInch = 2.54;
var
  wwRichEditForm: TwwRichEditForm;

implementation

{$R *.DFM}
uses wwcommon;

const ColorBoxWidth = 40;

type TwwPageSetupDialog = class(TCommonDialog)
public
   RichEdit1: TwwCustomRichEdit;
   {$ifdef wwDelphi3Up}
   function Execute: Boolean; override;
   {$else}
   function Execute: Boolean;
   {$endif}

end;

procedure TwwRichEditForm.BoldButtonClick(Sender: TObject);
begin
  RichEdit1.SetStyleAttribute(fsBold, not TempDown);
{  if (TempDown) then
     richedit1.SelAttributes.Style:=
        richedit1.SelAttributes.Style -[fsBold]
  else
     richedit1.SelAttributes.Style:=
        richedit1.SelAttributes.Style +[fsBold];}
  RefreshControls;
end;

procedure TwwRichEditForm.UnderlineButtonClick(Sender: TObject);
begin
  RichEdit1.SetStyleAttribute(fsUnderline, not TempDown);
{  if (TempDown) then
    richedit1.SelAttributes.Style:=
        richedit1.SelAttributes.Style -[fsUnderline]
  else
    richedit1.SelAttributes.Style:=
        richedit1.SelAttributes.Style +[fsUnderline];}
  RefreshControls;
end;

procedure TwwRichEditForm.ItalicButtonClick(Sender: TObject);
begin
  RichEdit1.SetStyleAttribute(fsItalic, not TempDown);
{  if (TempDown) then
    richedit1.SelAttributes.Style:=
        richedit1.SelAttributes.Style -[fsItalic]
  else
    richedit1.SelAttributes.Style:=
        richedit1.SelAttributes.Style +[fsItalic];}
  RefreshControls;
end;

procedure TwwRichEditForm.RightButtonClick(Sender: TObject);
begin
  richedit1.Paragraph.Alignment:= taRightJustify;
  RefreshControls;
end;

procedure TwwRichEditForm.CenterButtonClick(Sender: TObject);
begin
  richedit1.Paragraph.Alignment:= taCenter;
  RefreshControls;
end;

procedure TwwRichEditForm.LeftButtonClick(Sender: TObject);
begin
  richedit1.Paragraph.Alignment:= taLeftJustify;
  RefreshControls;
end;

procedure TwwRichEditForm.BulletButtonClick(Sender: TObject);
begin
  RichEdit1.SetBullet(not TempDown);
  RefreshControls;
end;

procedure TwwRichEditForm.RichEdit1SelectionChange(Sender: TObject);
begin
  if richedit1.visible then
     RefreshControls;
end;

Procedure TwwRichEditForm.RefreshControls;
var haveSelection, haveText: boolean;
begin
  BoldButton.down:= fsBold in richedit1.SelAttributes.Style;
  UnderlineButton.down:= fsUnderline in richedit1.SelAttributes.Style;
  ItalicButton.down:= fsItalic in richedit1.SelAttributes.Style;
  FontNameCombo.itemIndex:= FontNameCombo.items.indexOf(RichEdit1.SelAttributes.Name);
  if FontNameCombo.itemIndex<0 then begin
     FontNameCombo.text:= RichEdit1.SelAttributes.Name;
     FontNameCombo.font.color:=clRed;
  end
  else FontNameCombo.font.color:=clWindowText;
  FontSizeCombo.itemIndex:= FontSizeCombo.items.indexOf(inttostr(RichEdit1.SelAttributes.Size));
  //9/5/2001- If no font size in dropdown still set text to current size. Just like wordpad.
  if FontSizeCombo.itemindex = -1 then
     FontSizeCombo.Text :=inttostr(RichEdit1.SelAttributes.Size);

  BulletButton.down:= richedit1.Paragraph.Numbering = nsBullet;

  //10/02/2001 - More accurate way of determining if background color is highlighted.
  HighlightButton.Down:= (ColorToRGB(richedit1.GetTextBackgroundColor)=ColorToRGB(RichEdit1.HighlightColor));
//  HighlightButton.Down:= (richedit1.GetTextBackgroundColor<>0) and
//                         (richedit1.GetTextBackgroundColor<>ColorToRGB(clWindow));

  BulletStyle1.checked:= BulletButton.down;
  if ord(richedit1.Paragraph.Alignment) = PFA_FULLJUSTIFY-1 then
     JustifyButton.Down:= True
  else begin
    case richedit1.Paragraph.Alignment of
      taLeftJustify: LeftButton.Down:= True;
      taCenter: CenterButton.Down:= True;
      taRightJustify: RightButton.Down:= True;
    end;
  end;


    Paste1.enabled:= RichEdit1.CanPaste and (not RichEdit1.readonly);
    PasteButton.enabled:= Paste1.enabled and (not RichEdit1.readonly);
    Undo1.enabled:= RichEdit1.CanUndo;
    Redo1.enabled:= RichEdit1.CanRedo;
    UndoButton.enabled:= Undo1.enabled;
    RedoButton.enabled:= Redo1.enabled;

    haveSelection:= RichEdit1.CanCut;
//    haveText:= RichEdit1.text<>''; { This line was very slow for larger buffers }
    haveText:= (RichEdit1.Lines.Count>1) or
               (RichEdit1.Lines.Count=1) and (RichEdit1.Lines[0]<>'');
    Cut1.enabled:= haveSelection and (not RichEdit1.readonly);
    CutButton.enabled:= haveSelection and (not RichEdit1.readonly);
    Copy1.enabled:= haveSelection;
    CopyButton.enabled:= haveSelection;
    Clear1.enabled:= haveSelection and (not RichEdit1.readOnly);
    SelectAll1.enabled:= haveText;
    Find1.enabled:= haveText;
    FindButton.enabled:= haveText;
    FindNext1.enabled:= RichEdit1.CanFindNext;
    Replace1.enabled:= haveText and (not RichEdit1.readOnly);

    TwwRulerPanel(RulerPanel).UpdateDragIcons;

end;


procedure TwwRichEditForm.Undo1Click(Sender: TObject);
begin
    SendMessage(RichEdit1.Handle, EM_UNDO, 0, 0);
    RefreshControls;
{    SendMessage(RichEdit1.Handle, EM_SETOPTIONS,
                ECOOP_XOR, ECO_AUTOWORDSELECTION);}
end;



procedure TwwRichEditForm.Cut1Click(Sender: TObject);
begin
   Richedit1.CutToClipboard;
end;

procedure TwwRichEditForm.Copy1Click(Sender: TObject);
begin
   Richedit1.CopyToClipboard;
end;

procedure TwwRichEditForm.Paste1Click(Sender: TObject);
begin
   Richedit1.PasteFromClipboard;
end;

procedure TwwRichEditForm.SelectAll1Click(Sender: TObject);
begin
   Richedit1.SelectAll;
end;

procedure TwwRichEditForm.Clear1Click(Sender: TObject);
begin
   Richedit1.ClearSelection;
end;

procedure TwwRichEditForm.Find1Click(Sender: TObject);
begin
   richedit1.ExecuteFindDialog;
end;

procedure TwwRichEditForm.FindNext1Click(Sender: TObject);
begin
   RichEdit1.FindNextMatch;
end;

procedure TwwRichEditForm.Replace1Click(Sender: TObject);
begin

⌨️ 快捷键说明

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