TWPDefAct Object
Properties Methods Events

Unit
wpDefActions

Declaration
TWPDefAct = class(TDataModule)

Hierarchy
TDataModule <--TWPDefAct

Subclasses
None

Description
This data module contains actions which are useful in combination with the TWPRichText control. To use this actions you can use an instance of the component TWPDefaultActions or create the data module in code.

The WPTools default editor (unit wpDefEditor) also uses this data module - but creates it in code. It also contains some code to show the power of the WPReporter. Please see the example code. The component TWPDefaultActions makes it easy to attach event handlers for unused menu items, such as 'Export'.

List of objects created by the data module:
// The menu ---
  MainMenu: TMainMenu
    File1: TMenuItem
      New1: TMenuItem
      Open1: TMenuItem  // use the XA_Actions !
      CloseFile1: TMenuItem
      N1: TMenuItem // = seperator
      Save1: TMenuItem
      SaveAs1: TMenuItem
      Export1: TMenuItem
      N2: TMenuItem
      PageLayout1: TMenuItem
      PrintPreview1: TMenuItem
      Print1: TMenuItem
      Print2: TMenuItem
      N3: TMenuItem
      MailTo1: TMenuItem
      Properties1: TMenuItem
      N4: TMenuItem
      CloseApp1: TMenuItem
    Edit1: TMenuItem
      Redo1: TMenuItem
      Undo1: TMenuItem
      N5: TMenuItem
      Cut1: TMenuItem
      Copy1: TMenuItem
      Paste1: TMenuItem
      N6: TMenuItem
      Delete1: TMenuItem
        ParagraphFormat1: TMenuItem
        CharacterFormat1: TMenuItem
        ext1: TMenuItem
      SelectAll1: TMenuItem
        All1: TMenuItem
        able1: TMenuItem
      N7: TMenuItem
      Search1: TMenuItem
      Replace1: TMenuItem
    View1: TMenuItem
      Normal1: TMenuItem
      PageLayout2: TMenuItem
      Zoom1: TMenuItem // The Zoom Menu
        PageWidth1: TMenuItem
        FullPage1: TMenuItem
        DoublePage1: TMenuItem
        N10: TMenuItem
        N4001: TMenuItem
        N2001: TMenuItem
        N1001: TMenuItem
        N751: TMenuItem
        N501: TMenuItem
        N251: TMenuItem
        N11: TMenuItem
        humbNails1: TMenuItem
      N9: TMenuItem
      ManageHeaderFooter1: TMenuItem
      N8: TMenuItem
	  ShowMailMergeFields : TMenuItem
	  ShowSpecialChars : TMenuItem
	  // used to enable additional GUI elements
      ShowHorzRuler1: TMenuItem  
      ShowVertRuler1: TMenuItem
      ShowThumbNails1: TMenuItem
	  ShowGutter1: TMenuItem
    Insert1: TMenuItem
      PageBreak1: TMenuItem
      ColumnBreak1: TMenuItem // only for WPTools Premium!
      SectionBreak1: TMenuItem
      N12: TMenuItem
      Graphic1: TMenuItem
	  InsTextBox : TMenuItem // only for WPTools Premium!
      Symbol1: TMenuItem
      PageNumbers1: TMenuItem
        Page: TMenuItem
        NextPage1: TMenuItem
        PriorPage1: TMenuItem
        NumPages1: TMenuItem
      Fields1: TMenuItem
        Date1: TMenuItem
        ime1: TMenuItem
        Named1: TMenuItem
      N22: TMenuItem
      Bookmark1: TMenuItem
      Hyperlink1: TMenuItem
      N19: TMenuItem
      MailmergeField1: TMenuItem
    Format1: TMenuItem
      Font1: TMenuItem
      Paragraph1: TMenuItem
      Border1: TMenuItem
      abstops1: TMenuItem
      Numbers1: TMenuItem
      N21: TMenuItem
      ColumnsMenu1: TMenuItem // only for WPTools Premium!
        ColumnsOff: TMenuItem
        Col21: TMenuItem
        Col31: TMenuItem
        Col41: TMenuItem
      GraphicOptions1: TMenuItem
        ascharacter2: TMenuItem
        reltoparautowrapleftorright1: TMenuItem
        reltoparwrapleftandright2: TMenuItem
        reltopagenowrappng2: TMenuItem
        reltopagewrapleftandright2: TMenuItem
        TMenuItem
      N14: TMenuItem
      Capitalisation1: TMenuItem
        Lowercase: TMenuItem
        Uppercase: TMenuItem
    ExtrasMenu: TMenuItem
      Spellcheck1: TMenuItem
      SpellAsYouGo1: TMenuItem
      hesaurus1: TMenuItem
    ReportingMenu: TMenuItem
      InsertField1: TMenuItem
      PropertyDialog1: TMenuItem
      CreateReport1: TMenuItem
    able2: TMenuItem
      NewTable1: TMenuItem
      Insert2: TMenuItem
        Rows1: TMenuItem
        Columns2: TMenuItem
      Delete2: TMenuItem
        Row1: TMenuItem
        Column1: TMenuItem
      Select1: TMenuItem
        able4: TMenuItem
        Row2: TMenuItem
        Column2: TMenuItem
      N15: TMenuItem
      SplitCell1: TMenuItem
      SplitTable1: TMenuItem
    N17: TMenuItem
	  SelectLanguage1 : TMenuItem // Visible=FALSE
      Info1: TMenuItem
      Info2: TMenuItem
	  
// The popup menu for graphic objects
  GraphicPopupMenu: TPopupMenu
    ascharacter1: TMenuItem
    reltoparautowrap1: TMenuItem
    reltoparwrapleftandright1: TMenuItem
    reltopagenowrappng1: TMenuItem
    reltopagewrapleftandright1: TMenuItem
	  
// three image lists ---
  InsNumberIcons: TImageList
  StdIcons: TImageList
  DemoIcons: TImageList
    
// The actions ---
  StdActions: TActionList
    WPABBottom1: TWPABBottom
    WPAInsertField1: TWPAInsertField
    WPAEditHyperlink1: TWPAEditHyperlink
    WPAInsertNextPage: TWPAInsertNumber
    WPADelRow1: TWPADelRow
    WPABInner1: TWPABInner
    WPABOuter1: TWPABOuter
    XA_View200: TAction
    WPABAllOff1: TWPABAllOff
    WPACreateTable1: TWPACreateTable
    WPACombineCell1: TWPACombineCell
    WPASplitCells1: TWPASplitCells
    WPAInsRow1: TWPAInsRow
    WPASelectColumn1: TWPASelectColumn
    WPASelectRow1: TWPASelectRow
    WPAZoomOut1: TWPAZoomOut
    WPAZoomIn1: TWPAZoomIn
    WPAFitHeight1: TWPAFitHeight
    WPAFitWidth1: TWPAFitWidth
    WPAPrint1: TWPAPrint
    WPAPrinterSetup1: TWPAPrinterSetup
    WPAPriorPage1: TWPAPriorPage
    WPANextPage1: TWPANextPage
    WPALeft1: TWPALeft
    WPACenter1: TWPACenter
    WPARight1: TWPARight
    WPAJustified1: TWPAJustified
    WPABullets1: TWPABullets
    WPANumbers1: TWPANumbers
    WPADecIndent1: TWPADecIndent
    WPAIncIndent1: TWPAIncIndent
    WPAOpen1: TWPAOpen
    WPASave1: TWPASave
    WPAExit1: TWPAExit
    WPAClose1: TWPAClose
    WPANew1: TWPANew
    WPAUndo1: TWPAUndo
    WPACopy1: TWPACopy
    WPACut1: TWPACut
    WPAPaste1: TWPAPaste
    WPASearch1: TWPASearch
    WPAReplace1: TWPAReplace
    WPASellAll1: TWPASellAll
    WPAHideSelection1: TWPAHideSelection
    WPASpellcheck1: TWPASpellcheck
    WPACancel1: TWPACancel
    WPADelete1: TWPADelete
    WPAAdd1: TWPAAdd
    WPAEdit1: TWPAEdit
    WPANext1: TWPANext
    WPABack1: TWPABack
    WPAOK1: TWPAOK
    WPAToEnd1: TWPAToEnd
    WPAToStart1: TWPAToStart
    WPANorm1: TWPANorm
    WPABold1: TWPABold
    WPAItalic1: TWPAItalic
    WPAProtected1: TWPAProtected
    WPAHidden1: TWPAHidden
    WPARTFCode1: TWPARTFCode
    WPAUnderline1: TWPAUnderline
    WPAStrikeout1: TWPAStrikeout
    WPASubscript1: TWPASubscript
    WPASuperscript1: TWPASuperscript
    WPAInsCol1: TWPAInsCol
    WPADelCol1: TWPADelCol
    WPARedo1: TWPARedo
    WPADeleteText1: TWPADeleteText
    WPAInsertPagNo: TWPAInsertNumber
    WPAIsOutlineMode1: TWPAIsOutlineMode
    WPAInOutlineUp1: TWPAInOutlineUp
    WPAInOutlineDown1: TWPAInOutlineDown
    WPAInsertPriorPage: TWPAInsertNumber
    WPAInsertPageCount: TWPAInsertNumber
    WPAInsertDate: TWPAInsertNumber
    WPASpellAsYouGo1: TWPASpellAsYouGo
    WPAStartThesaurus1: TWPAStartThesaurus
    XA_Close: TAction
    XA_DocProp: TAction
	
	XA_Load: TAction  // File Menu!
	XA_Save: TAction
	XA_SaveAs: TAction
	XA_CloseFile: TAction	

    XA_MailTo: TAction
    XA_Print: TAction
    XA_PrintDialog: TAction
    XA_DiaPreview: TAction
    XA_DiaPageSetup: TAction
    XA_ExportFile: TAction
    XA_New: TAction
    XA_DelParFormat: TAction
    XA_DelCharFormat: TAction
    XA_SelectTable: TAction
    XA_ViewNormal: TAction
    WPABLeft1: TWPABLeft
    WPABTop1: TWPABTop
    XA_ViewPageLayout: TAction
    XA_ViewPageWidth: TAction
    XA_ViewFullPage: TAction
    XA_ViewDoublePage: TAction
    XA_View500: TAction
    XA_View100: TAction
    XA_View75: TAction
    XA_View50: TAction
    XA_View25: TAction
    XA_ViewThumbnails: TAction
    XA_ManageHeaderFooter: TAction
    XA_ShowHorzRuler: TAction
    XA_ShowVertRuler: TAction
    XA_ShowThumbnails: TAction
    XA_InsPageBreak: TAction
    XA_InsColumnBreak: TAction
    XA_InsSectionBreak: TAction
    XA_InsGraphic: TAction
    XA_InsSymbol: TAction
    XA_FInsPage: TAction
    XA_FInsNextPage: TAction
    XA_FInsPriorPage: TAction
    XA_FInsNumPages: TAction
    XA_FInsDate: TAction
    XA_FInsTime: TAction
    XA_InsNamedField: TAction
    XA_InsMailmergeField: TAction
    XA_FrmFontDialog: TAction
    XA_FrmIndentSpacing: TAction
    XA_FrmBorder: TAction
    XA_FrmTabStops: TAction
    XA_FrmNumbers: TAction
    XA_Col_Off: TAction
    XA_Col_2: TAction
    XA_Col_3: TAction
    XA_Col_4: TAction
    XA_FrmCap_Lowercase: TAction
    XA_FrmCap_Uppercase: TAction
    XA_FrmCap_Off: TAction
    XA_SpellCheck: TAction
    XA_SpellAsYouGo: TAction
    XA_SpellThesaurus: TAction
    XA_CreateTable: TAction
    XA_SplitTable: TAction
    XA_InsHyperlink: TAction
    XA_InsBookmark: TAction
    XA_Info: TAction
    XA_ShowRepBand: TAction
    XA_CreateReport: TAction
	
// The WPTools dialogs ---
  WPSymbolDlg1: TWPSymbolDlg
  WPTableDlg1: TWPTableDlg
  WPParagraphPropDlg1: TWPParagraphPropDlg
  WPParagraphBorderDlg1: TWPParagraphBorderDlg
  WPBulletDlg1: TWPBulletDlg
  WPTabDlg1: TWPTabDlg
  WPStyleDlg1: TWPStyleDlg
  WPOneStyleDlg1: TWPOneStyleDlg
  WPStyleCollection1: TWPStyleCollection
  WPPagePropDlg1: TWPPagePropDlg
  
// Preview Dialog ---
  WPPreviewDlg1: TWPPreviewDlg

// Preview Dialog used for report output only ---
  WPPreviewDlg2: TWPPreviewDlg
  


Introduced Properties
OnInfo 
 WPRichText1 

Introduced Methods
LoadStrings 
SaveStrings 

Introduced Events
OnGetWPRichText 


TWPDefAct Example
(please also see
TWPDefaultActions)
procedure TWPToolsEditor.FormCreate(Sender: TObject);
begin
  WPDefAct:= TWPDefAct.Create(Self);
{$IFDEF WPREPORTER}
  FWPSuperMerge := TWPSuperMerge.Create(nil);
  FWPSuperMerge.DataBases := 'DATA,LOOP10,LOOP100';
  FWPSuperMerge.OnMailMergeGetText := WPSuperMergeMailMergeGetText;
  FWPSuperMerge.BeforeProcessGroup := WPSuperMergeBeforeProcessGroup;
  FWPReportDest := TWPRichText.CreateDynamic;
  FWPReportDest.InsertPointAttr.Hidden := TRUE;
  FWPSuperMerge.SetSourceDest(WPRichText1.Memo.RTFData, FWPReportDest.Memo.RTFData);
{$ENDIF}
  Menu := WPDefAct.MainMenu;
  WPRichText1.GraphicPopupMenu := WPDefAct.GraphicPopupMenu;
end;

procedure TWPToolsEditor.FormDestroy(Sender: TObject);
begin
{$IFDEF WPREPORTER}
  FWPSuperMerge.Free;
  FWPReportDest.Free;
{$ENDIF}
  WPDefAct.Free;
end;

procedure TWPToolsEditor.FormShow(Sender: TObject);
begin
  WPDefAct.OnGetWPRichText := GetToolsEditor;
  WPRichText1.ActionList := WPDefAct.StdActions;
  WPRichText1.SetFocus;
{$IFDEF WPREPORTER}
  WPDefAct.SuperMerge := FWPSuperMerge;
  WPDefAct.ReportDest := FWPReportDest;
{$ENDIF}
end;

procedure TWPToolsEditor.GetToolsEditor(Sender: TObject; var wp: TWPCustomRichText);
begin
  wp := WPRichText1;
end;

// This functions are used when this editor is used as property editor
procedure TWPToolsEditor.GetFromRTFText( Source : TWPRTFBlobContents);
begin
  WPRichText1.RTFText.Assign(Source);
  WPRichText1.RTFText.Apply;
  if Source.OwnerEngine<>nil then
    WPRichText1.Header.Assign(Source.OwnerEngine.RTFData.Header);
  WPRichText1.CPPosition := 0;
  WPRichText1.DelayedReformat;
end;

procedure TWPToolsEditor.SetToRTFText( Dest : TWPRTFBlobContents);
begin
  WPRichText1.RTFText.Update;
  Dest.Assign(WPRichText1.RTFText);
  Dest.Apply;
  if Dest.OwnerEngine<>nil then
    Dest.OwnerEngine.RTFData.Header.Assign(WPRichText1.Header);
end;

procedure TWPToolsEditor.BorderButtonSwitchClick(Sender: TObject);
begin
  BorderParent.Top := WPToolPanel1.Height;
  BorderParent.Left := Width - BorderParent.Width - 20;
  BorderParent.Visible := BorderButtonSwitch.Down;
end;

procedure TWPToolsEditor.FormResize(Sender: TObject);
begin
  if BorderParent.Visible then
  begin
    BorderParent.Top := WPToolPanel1.Height;
    BorderParent.Left := Width - BorderParent.Width - 20;
  end;
end;

procedure TWPToolsEditor.WPRichText1OpenDialog(Sender: TObject;
  DiaType: TWPCustomRtfEditDialog; var ResultValue: Boolean);
begin
  // Utility procedure to show style dialogs from unit WP1Style
  WPStyleOpenDialog(Self, Sender, DiaType, ResultValue);
end;

{$IFDEF WPREPORTER}
// two event handlers to demonstrate WPReporter

procedure TWPToolsEditor.WPSuperMergeMailMergeGetText(Sender: TObject;
  const inspname: string; Contents: TWPMMInsertTextContents);
begin
  // Contents.StringValue := DataBase.FieldByName(inspname)
  Contents.StringValue := inspname + IntToStr(Random(100000));
end;

procedure TWPToolsEditor.WPSuperMergeBeforeProcessGroup(
  Sender: TWPSuperMerge; Band: TWPBand; Count: Integer;
  var CustomData: TObject; var ProcessGroup, IsLastRun: Boolean);
begin
  if Band.Alias = 'LOOP10' then
  begin
    IsLastRun := Count = 9;
    ProcessGroup := Count <= 9;
  end else
    if Band.Alias = 'LOOP100' then
    begin
      IsLastRun := Count = 99;
      ProcessGroup := Count <= 99;
    end;
end;
{$ENDIF}


Copyright (C) by WPCUBED GmbH - Munich
http://www.wpcubed.com