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

📄 upadmain.pas

📁 是一个delphi的流程制作软件
💻 PAS
字号:

unit UPadMain;

interface

uses
  Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, ActiveX,
  StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, OleDlg, OleErrors,
  ActnList, ToolWin, ImgList, RichEdit, OleDlgs, OleCtnrs, OleConsts, OleHelpers,
  StdActns;

type
  TMainForm = class(TForm)
    MainMenu: TMainMenu;
    File1: TMenuItem;
    FileNewItem: TMenuItem;
    FileOpenItem: TMenuItem;
    FileCloseItem: TMenuItem;
    Window1: TMenuItem;
    Help1: TMenuItem;
    N1: TMenuItem;
    FileExitItem: TMenuItem;
    WindowCascadeItem: TMenuItem;
    WindowTileItem: TMenuItem;
    WindowArrangeItem: TMenuItem;
    HelpAboutItem: TMenuItem;
    OpenDialog: TOpenDialog;
    FileSaveItem: TMenuItem;
    FileSaveAsItem: TMenuItem;
    Edit1: TMenuItem;
    CutItem: TMenuItem;
    CopyItem: TMenuItem;
    PasteItem: TMenuItem;
    WindowMinimizeItem: TMenuItem;
    StatusBar: TStatusBar;
    ActionList: TActionList;
    EditCut1: TEditCut;
    EditCopy1: TEditCopy;
    FileNew1: TAction;
    FileSave1: TAction;
    FileExit1: TAction;
    FileOpen1: TAction;
    FileSaveAs1: TAction;
    WindowCascade1: TWindowCascade;
    WindowTileHorizontal1: TWindowTileHorizontal;
    WindowArrangeAll1: TWindowArrange;
    WindowMinimizeAll1: TWindowMinimizeAll;
    HelpAbout1: TAction;
    FileClose1: TWindowClose;
    WindowTileVertical1: TWindowTileVertical;
    WindowTileItem2: TMenuItem;
    ToolBar2: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton9: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ImageList: TImageList;
    SaveDialog: TSaveDialog;
    N2: TMenuItem;
    FileRevert1: TAction;
    Revert2: TMenuItem;
    N3: TMenuItem;
    EditUndo1: TAction;
    EditPasteSpecial1: TAction;
    EditDelete1: TAction;
    EditSelectAll: TAction;
    EditInsertObject: TAction;
    EditInsertFromFile: TAction;
    EditSaveSelection: TAction;
    N4: TMenuItem;
    EditUndo11: TMenuItem;
    PasteSpecial1: TMenuItem;
    Delete1: TMenuItem;
    SelectAll1: TMenuItem;
    N7: TMenuItem;
    Object1: TMenuItem;
    InsertObject1: TMenuItem;
    N8: TMenuItem;
    InsertFromFile1: TMenuItem;
    SaveSelectionAs1: TMenuItem;
    OleInsertObjectDialog: TOleInsertObjectDialog;
    OleObjectPropsDialog: TOleObjectPropsDialog;
    ObjectSubMenu: TMenuItem;
    ObjectProps: TAction;
    ObjectIcon: TAction;
    ChangeIcon1: TMenuItem;
    OleEditLinksDialog: TOleEditLinksDialog;
    OleUpdateLinksDialog: TOleUpdateLinksDialog;
    OlePromptUserDialog: TOlePromptUserDialog;
    OlePasteSpecialDialog: TOlePasteSpecialDialog;
    OleChangeIconDialog: TOleChangeIconDialog;
    OleChangeSourceDialog: TOleChangeSourceDialog;
    OleConvertDialog: TOleConvertDialog;
    ObjectSource: TAction;
    Changesource1: TMenuItem;
    FileLinks: TAction;
    FileEditLinks: TAction;
    Updatealllinks1: TMenuItem;
    Editlinks1: TMenuItem;
    ObjectEdit: TAction;
    ObjectUpdate: TAction;
    Editlink1: TMenuItem;
    Updatelink1: TMenuItem;
    ObjectConvert: TAction;
    Convert1: TMenuItem;
    N10: TMenuItem;
    EditPaste1: TAction;
    procedure FileOpen1Execute(Sender: TObject);
    procedure HelpAbout1Execute(Sender: TObject);
    procedure FileExit1Execute(Sender: TObject);
    procedure FileSaveAs1Execute(Sender: TObject);
    procedure FileNew1Execute(Sender: TObject);
    procedure EditInsertFromFileExecute(Sender: TObject);
    procedure FileClose1Execute(Sender: TObject);
    procedure FileRevert1Execute(Sender: TObject);
    procedure FileSave1Execute(Sender: TObject);
    procedure EditSaveSelectionExecute(Sender: TObject);
    procedure EditInsertObjectExecute(Sender: TObject);
    procedure Edit1Click(Sender: TObject);
    procedure ObjectPropsExecute(Sender: TObject);
    procedure EditPasteSpecial1Execute(Sender: TObject);
    procedure ObjectIconExecute(Sender: TObject);
    procedure ObjectSourceExecute(Sender: TObject);
    procedure FileLinksExecute(Sender: TObject);
    procedure FileEditLinksExecute(Sender: TObject);
    procedure ObjectEditExecute(Sender: TObject);
    procedure ObjectUpdateExecute(Sender: TObject);
    procedure EditSelectAllExecute(Sender: TObject);
    procedure EditUndo1Execute(Sender: TObject);
    procedure EditCut1Execute(Sender: TObject);
    procedure EditCopy1Execute(Sender: TObject);
    procedure EditPaste1Execute(Sender: TObject);
    procedure EditDelete1Execute(Sender: TObject);
    procedure ObjectConvertExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure File1Click(Sender: TObject);
  private
    FNextHandle : THandle;
    procedure ObjectVerbClick (Sender: TObject);
    procedure WMDrawClipboard (var Msg : TWMDrawClipboard); message WM_DrawClipboard;
    procedure WMChangeCBChain (var Msg : TWMChangeCBChain); message WM_ChangeCBChain;
    procedure ShowHint (Sender : TObject);
    procedure UpdateEnables;
  public
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

uses
  UPadChild, UPadAbout;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FNextHandle := SetClipboardViewer (Handle);
  Application.OnHint := ShowHint;
  UpdateEnables
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  ChangeClipboardChain (Handle, FNextHandle)
end;

procedure TMainForm.UpdateEnables;
begin
  File1Click (Self);
  Edit1Click (Self)
end;

//=== File menu ================================================================

procedure TMainForm.FileNew1Execute(Sender: TObject);
begin
  TUPadForm.Create (Application);
    UpdateEnables
end;

procedure TMainForm.FileOpen1Execute(Sender: TObject);
var
  Child : TUPadForm;
begin
  OpenDialog.Title := '';
  if OpenDialog.Execute then
  begin
    Child := TUPadForm.Create (Application);
    Child.OleRE.Open (OpenDialog.Filename, 0, false);
    Child.OleRE.UpdateAllLinks
  end;
  UpdateEnables
end;

procedure TMainForm.FileRevert1Execute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
  begin
    OleRE.Revert;
    OleRE.UpdateAllLinks
  end
end;

procedure TMainForm.FileSave1Execute(Sender: TObject);
var
  Child : TUPadForm;
begin
  Child := TUPadForm(ActiveMDIChild);
  if Child.OleRE.Filename = '' then
    FileSaveAs1.Execute
  else
    Child.OleRE.Save
end;

procedure TMainForm.FileSaveAs1Execute(Sender: TObject);
var
  Child : TUPadForm;
begin
  Child := TUPadForm(ActiveMDIChild);
  SaveDialog.Title := '';
  SaveDialog.Filename := Child.OleRE.Filename;
  SaveDialog.FilterIndex := Child.OleRE.FilterIndex;
  if SaveDialog.Execute then
    Child.OleRE.SaveAs (SaveDialog.Filename, false)
end;

procedure TMainForm.FileClose1Execute(Sender: TObject);
begin
  TUPadForm(ActiveMDIChild).Close;
  UpdateEnables
end;

procedure TMainForm.FileExit1Execute(Sender: TObject);
begin
  Close
end;

procedure TMainForm.File1Click(Sender: TObject);
var
  B : boolean;
begin
  B := (MDIChildCount > 0) and Assigned (ActiveMDIChild);
  FileRevert1.Enabled := B and TUPadForm(ActiveMDIChild).OleRE.CanRevert;
  FileClose1.Enabled := B;
  FileSave1.Enabled := B;
  FileSaveAs1.Enabled := B;
  FileLinks.Enabled := B and (TUPadForm(ActiveMDIChild).OleRE.Links > 0);
  FileEditLinks.Enabled := FileLinks.Enabled
end;

//=== EDIT MENU ================================================================

procedure TMainForm.EditInsertObjectExecute(Sender: TObject);
begin
  TUPadForm(ActiveMDIChild).OleRE.InsertObjectDialog
end;

procedure TMainForm.EditInsertFromFileExecute(Sender: TObject);
var
  Child : TUPadForm;
begin
  Child := TUPadForm(ActiveMDIChild);
  OpenDialog.Title := 'Insert from file:';
  if OpenDialog.Execute then
    Child.OleRE.Open (OpenDialog.Filename, 0, true)
end;

procedure TMainForm.EditSaveSelectionExecute(Sender: TObject);
var
  Child : TUPadForm;
begin
  Child := TUPadForm(ActiveMDIChild);
  SaveDialog.Title := 'Save selection as';
  SaveDialog.Filename := Child.OleRE.Filename;
  SaveDialog.FilterIndex := Child.OleRE.FilterIndex;
  if SaveDialog.Execute then
    Child.OleRE.SaveAs (SaveDialog.Filename, false)
end;

procedure TMainForm.HelpAbout1Execute(Sender: TObject);
begin
  AboutBox.ShowModal
end;

// Edit Menu Item clicked on so set up edit menu items
procedure TMainForm.Edit1Click(Sender: TObject);
const
  ObjectFixEnd = 7;
var
  Verbs : TStringList;
  ObjectName : string;
  Available : boolean;
  Item : TMenuItem;
  Loop : integer;
begin
  EditUndo1.Enabled := false;
  EditCut1.Enabled := false;
  EditCopy1.Enabled := false;
  EditPaste1.Enabled := false;
  EditPasteSpecial1.Enabled := false;
  EditDelete1.Enabled := false;
  EditSelectAll.Enabled := false;
  EditInsertObject.Enabled := false;
  EditInsertFromFile.Enabled := false;
  EditSaveSelection.Enabled := false;
  Object1.Enabled := false;
  ObjectProps.Enabled := false;

  if MDIChildCount > 0 then
  with TUPadForm (ActiveMDIChild) do
  begin

// Set up Object sub-item stuff
    Available := Assigned (OleRE.Selected);
    if Available then
    begin
      ObjectName := OleRE.ShortName;

      Verbs := OleRE.Verbs;
      try
        with Object1 do
          while Count > ObjectFixEnd do
            Delete (ObjectFixEnd);

        if Verbs.Count > 0 then
        begin
          Item := TMenuItem.Create (Self);
          Item.Caption := '-';
          Object1.Add(Item);

          for Loop := 0 to Verbs.Count - 1 do
          begin
            Item := TMenuItem.Create (Self);
            Item.Caption := Verbs [Loop];
            Item.Tag := Loop;
            Item.OnClick := ObjectVerbClick;
            Object1.Add(Item)
          end
        end
      finally
        Verbs.Free
      end
    end;

    Object1.Enabled := Available;
    ObjectProps.Enabled := Available;
    if Available then
      if OleRE.Linked then
        Object1.Caption := 'Linked ' + ObjectName + ' &Object'
      else
        Object1.Caption := ObjectName + ' &Object'
    else
      Object1.Caption := '&Object';

    ObjectIcon.Enabled := Available and OleRE.Iconic;
    ObjectEdit.Enabled := Available and OleRE.Linked;
    ObjectSource.Enabled := ObjectEdit.Enabled;
    ObjectUpdate.Enabled := ObjectEdit.Enabled;
    ObjectConvert.Enabled := Available and OleRE.CanConvertOrActivateAs;

// and now the rest
    EditUndo1.Enabled := RichEdit.CanUndo;
    EditCut1.Enabled := RichEdit.SelLength > 0;
    EditCopy1.Enabled := RichEdit.SelLength > 0;
    EditPasteSpecial1.Enabled := OleRE.CanPaste;
    EditPaste1.Enabled := EditPasteSpecial1.Enabled;
    EditDelete1.Enabled := RichEdit.SelLength > 0;
    EditSelectAll.Enabled := true;
    EditInsertObject.Enabled := true;
    EditInsertFromFile.Enabled := true;
    EditSaveSelection.Enabled := RichEdit.SelLength > 0
  end
end;

procedure TMainForm.ObjectVerbClick(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.DoVerb ((Sender as TMenuItem).Tag)
end;

procedure TMainForm.ObjectPropsExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.ObjectPropertiesDialog
end;

procedure TMainForm.ObjectIconExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.ChangeIconDialog
end;

procedure TMainForm.ObjectSourceExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.ChangeSourceDialog
end;

procedure TMainForm.FileLinksExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.UpdateAllLinks
end;

procedure TMainForm.FileEditLinksExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.EditLinksDialog
end;

procedure TMainForm.ObjectEditExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.EditLinkDialog
end;

procedure TMainForm.ObjectUpdateExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.UpdateLink
end;

procedure TMainForm.ObjectConvertExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.ConvertDialog
end;

procedure TMainForm.EditSelectAllExecute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    RichEdit.SelectAll
end;

procedure TMainForm.EditUndo1Execute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    RichEdit.Undo
end;

procedure TMainForm.EditCut1Execute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    RichEdit.CutToClipboard
end;

procedure TMainForm.EditCopy1Execute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    RichEdit.CopyToClipboard
end;

procedure TMainForm.EditPaste1Execute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    RichEdit.PasteFromClipboard
end;

procedure TMainForm.EditPasteSpecial1Execute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    OleRE.PasteSpecialDialog
end;

procedure TMainForm.EditDelete1Execute(Sender: TObject);
begin
  with TUPadForm(ActiveMDIChild) do
    RichEdit.ClearSelection
end;

procedure TMainForm.ShowHint (Sender : TObject);
begin
  Statusbar.Panels[2].Text := Application.Hint
end;

//=== handle draw clipboard message ============================================
// These procedures (see also the OnFormCreate and Destroy events) put the
// application into the clipboard view chain.  This allows paste special to
// be automatically updated without the application being active.

procedure TMainForm.WMDrawClipboard (var Msg : TWMDrawClipboard);
begin
  EditPasteSpecial1.Enabled := (MDIChildCount > 0) and Assigned (ActiveMDIChild) and
    TUPadForm(ActiveMDIChild).OleRE.CanPaste;
  EditPaste1.Enabled := EditPasteSpecial1.Enabled;

// pass message on in the chain, if we're not the last
  if FNextHandle <> 0 then
    SendMessage (FNextHandle, WM_DrawClipboard, 0, 0)
end;

//--- handle change to clipboard chain

procedure TMainForm.WMChangeCBChain (var Msg : TWMChangeCBChain);
begin
  with Msg do
// is it an instruction to remove ourselves from the chain?
    if FNextHandle = Remove then
      FNextHandle := Next
    else
// otherwise pass message on in the chain, if we're not the last
      if FNextHandle <> 0 then
        SendMessage (FNextHandle, WM_ChangeCBChain, Remove, Next)
end;

end.

⌨️ 快捷键说明

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