|
- Overview
- Handling the Word Processing control by programming
- Opening and creating a docx document in a Word Processing control
- Saving a docx document
- Performing a search in a document and modifying the search result
- Handling the selection
- Adding text into a document
- Adding a page break into a document
- Management of bookmarks
- Sequencing reports and Word Processing documents
- Properties associated with the Word Processing control
Handling a Word Processing control by programming
A Word Processing control can be handled by programming. To handle the Word Processing control, WLanguage proposes: This help page explains how to handle a Word Processing control by programming.
Caution: This documentation presents the last features of the Word Processing control. Make sure that all the necessary modules are updated. Handling the Word Processing control by programming Opening and creating a docx document in a Word Processing control To open an existing docx document by programming in a Word Processing control, you can: - assign the docx file to the Word Processing control. For example:
// Select a .docx file in the current directory sFileName is string sFileName = fSelect("", "presentation.docx", ... "Selecting DocX files", ... "Docx file (*.docx)" + TAB + "*.docx", "*.docx", fselOpen) IF sFileName ~= "" THEN // No selected file RETURN END // Load the docx file WP_MyDocument = sFileName
- use DocOpen.
For example:
WP_MyDocument = DocOpen("C:\Users\test\Documents\file.docx") IF ErrorOccurred() THEN Error(ErrorInfo()) RETURN
- use a Document variable and assign it to the Word Processing control.
For example:
MyDocument is Document MyDocument = "C:\temp\presentation.docx" WP_MyDocument = MyDocument
or:
MyDocument is Document MyDocument = DocOpen("C:\Users\test\Documents\file.docx") IF ErrorOccurred() THEN Error(ErrorInfo()) ELSE WP_MyDocument = MyDocument END
Caution: only the files in docx format can be handled by the Word Processing control. Tip: To display an empty document in a Word Processing control, all you have to do is assign an empty string to the Word Processing control. Example:
// Create a blank document WP_MyDocument = ""
Saving a docx document To save a docx document, all you have to do is use DocSave. Example:
// Choose the directory and the backup name sFileName is string = fSelect(CompleteDir(fExeDir()),"presentation.docx", ... "Selecting DocX files","Docx file (*.docx)" + TAB + "*.docx" , "*.docx", fselCreate) // Save the file DocSave(WP_NoName1, sFileName) IF ErrorOccurred THEN Error(StringBuild("The %1 file was not saved.", sFileName), ErrorInfo()) RETURN END
Notes: - The content of Word Processing control can also be:
- DocToText is used to retrieve the document text.
- DocToImage is used to convert a document page into image.
Performing a search in a document and modifying the search result To perform a search in a Word Processing document, all you have to do is use DocSeek. Example:
// Seeks "BEAUTIFUL" in the text // Selects the first one found to change its color arrFragments is array of docFragments = DocSeek(WP_NoName1, "BEAUTIFUL") IF arrFragments..Count >= 1 THEN // Position the cursor at the beginning of the first word found WP_NoName1..Cursor = arrFragments[1]..StartPosition // Calculate the selection length WP_NoName1..SelectionLength = ... arrFragments[1]..EndPosition - arrFragments[1]..StartPosition+1 // Modify the text color arrFragments[1]..Formatting..TextColor = PastelRed BREAK END
In this code, the docFragment variable corresponds to the text section containing the searched word, as well as its position in the entire text. Then, you have the ability to handle the fragment found. Handling the selection To handle the selection currently performed in a Word Processing control, you have the ability to retrieve this selection in a docFragment variable. The following code is used to change the color of selected text. Example:
// Change the selection color // Get the current selection MySelection is docFragment(WP_MyDocument, WP_MyDocument..Cursor, ... WP_MyDocument..SelectionLength) // Change the color MySelection..Style..TextColor = PastelRed
// Change the selection color // Get the current selection MySelection is docFragment(WP_MyDocument, WP_MyDocument..Cursor, ... WP_MyDocument..SelectionLength) // Change the color MySelection..Formatting..TextColor = PastelRed
The docFragment variable owns a specific constructor used to easily retrieve the selection. Adding text into a document Several methods can be used to add text into an existing document: - Inserting a fragment at the desired position. Example:
// Insert a text at the end of document frag2 is docFragment(WP_MyDoc, -1 , 0) frag..Text += "End text"
- Inserting a text from a given position with DocInsert.
DocInsert(WP_Document, WP_Document..Cursor, "My inserted text")
- Adding a text at the end of document with DocAdd.
To add text into an empty document, you can: - use the direct assignment of control:
<Word Processing control> = "Text to insert"
Example:
WP_MyDocument = "I am the first sentence of this document."
- add the text with DocAdd.
- insert a fragment in first position. Example:
// sInitialText contains the text to insert frag is docFragment(WP_MyDoc, WP_MyDoc..Cursor, 0) frag..Text += sInitialText
- insert a text from position 1 with DocInsert.
DocInsert(WP_Document, 1, "My inserted text")
Adding a page break into a document The following code is used to add a page break into a document:
// Add a page break DocAdd(WP_NoName, Charact(12))
Versions 24 and laterYou can also use the following constants to add the desired type of break to a document or fragment: - docColumnBreak: Adds a column break in a multicolumn section. If the section is not multicolumn, a page break is added.
- docLineBreak: Adds a line break.
- docPageBreak: Adds a page break.
- docParagraphBreak: Adds a paragraph break.
Example:
// Add a page break DocAdd(WP_NoName1, docPageBreak + "Text on next page")
New in version 24You can also use the following constants to add the desired type of break to a document or fragment: - docColumnBreak: Adds a column break in a multicolumn section. If the section is not multicolumn, a page break is added.
- docLineBreak: Adds a line break.
- docPageBreak: Adds a page break.
- docParagraphBreak: Adds a paragraph break.
Example:
// Add a page break DocAdd(WP_NoName1, docPageBreak + "Text on next page")
You can also use the following constants to add the desired type of break to a document or fragment: - docColumnBreak: Adds a column break in a multicolumn section. If the section is not multicolumn, a page break is added.
- docLineBreak: Adds a line break.
- docPageBreak: Adds a page break.
- docParagraphBreak: Adds a paragraph break.
Example:
// Add a page break DocAdd(WP_NoName1, docPageBreak + "Text on next page")
Versions 23 and laterManagement of bookmarks You have the ability to manage bookmarks in a Word Processing document. Some examples: - Adding a bookmark: Adds a bookmark named MyBookmark with the selected text.
doc is Document doc <- WP_MyDocument fragSelection is docFragment = WP_MyDocument..Selection..Fragment doc..Bookmark["MyBookmark"] = fragSelection
- Deleting a bookmark: Deletes the bookmark named Bookmark1:
doc is Document doc <- WP_MyDocument Delete(doc.Bookmark, "Bookmark1")
- Listing the bookmarks: Lists the document bookmarks:
doc is Document doc <- WP_MyDocument FOR EACH uABookmark,BookmarkName of doc..Bookmark Trace(BookmarkName) // Bookmark name Trace(uABookmark..Text) // Bookmark text END
- Inserting a text at the end of bookmark:
doc is Document <- WP_MyDocument..Value // Find the bookmark position fragmentBookmark is docFragment = doc..Bookmark["Bookmark 1"] IF fragmentBookmark <> Null THEN // Insert text at the end of bookmark let nInsertionPosition = fragmentBookmark..EndPosition // Actual insertion DocInsert(WP_MyDocument, nInsertionPosition, "Text to insert at bookmark position") ELSE Erreur("'Bookmark 1' bookmark not found in the document") END
New in version 23Management of bookmarks You have the ability to manage bookmarks in a Word Processing document. Some examples: - Adding a bookmark: Adds a bookmark named MyBookmark with the selected text.
doc is Document doc <- WP_MyDocument fragSelection is docFragment = WP_MyDocument..Selection..Fragment doc..Bookmark["MyBookmark"] = fragSelection
- Deleting a bookmark: Deletes the bookmark named Bookmark1:
doc is Document doc <- WP_MyDocument Delete(doc.Bookmark, "Bookmark1")
- Listing the bookmarks: Lists the document bookmarks:
doc is Document doc <- WP_MyDocument FOR EACH uABookmark,BookmarkName of doc..Bookmark Trace(BookmarkName) // Bookmark name Trace(uABookmark..Text) // Bookmark text END
- Inserting a text at the end of bookmark:
doc is Document <- WP_MyDocument..Value // Find the bookmark position fragmentBookmark is docFragment = doc..Bookmark["Bookmark 1"] IF fragmentBookmark <> Null THEN // Insert text at the end of bookmark let nInsertionPosition = fragmentBookmark..EndPosition // Actual insertion DocInsert(WP_MyDocument, nInsertionPosition, "Text to insert at bookmark position") ELSE Erreur("'Bookmark 1' bookmark not found in the document") END
Management of bookmarks You have the ability to manage bookmarks in a Word Processing document. Some examples: - Adding a bookmark: Adds a bookmark named MyBookmark with the selected text.
doc is Document doc <- WP_MyDocument fragSelection is docFragment = WP_MyDocument..Selection..Fragment doc..Bookmark["MyBookmark"] = fragSelection
- Deleting a bookmark: Deletes the bookmark named Bookmark1:
doc is Document doc <- WP_MyDocument Delete(doc.Bookmark, "Bookmark1")
- Listing the bookmarks: Lists the document bookmarks:
doc is Document doc <- WP_MyDocument FOR EACH uABookmark,BookmarkName of doc..Bookmark Trace(BookmarkName) // Bookmark name Trace(uABookmark..Text) // Bookmark text END
- Inserting a text at the end of bookmark:
doc is Document <- WP_MyDocument..Value // Find the bookmark position fragmentBookmark is docFragment = doc..Bookmark["Bookmark 1"] IF fragmentBookmark <> Null THEN // Insert text at the end of bookmark let nInsertionPosition = fragmentBookmark..EndPosition // Actual insertion DocInsert(WP_MyDocument, nInsertionPosition, "Text to insert at bookmark position") ELSE Erreur("'Bookmark 1' bookmark not found in the document") END
Sequencing reports and Word Processing documents You now have the ability to sequence reports and Word Processing documents. To do so, iSequencingAddDoc must be used in addition to the standard functions for creating sequences of reports. For example:
MyDocument is Document = "c:\temp\generalconditions.docx" // Print in the report viewer iDestination(iViewer) // Add reports into the sequence iSequencingAdd(RPT_Report1) iSequencingAdd(RPT_Report2, 3) // Add the general conditions in document format iSequencingAddDoc(MyDocument) iSequencingPrint()
For more details, see Sequencing reports. Properties associated with the Word Processing control The following properties are specific to the Word Processing control. They are mainly used to handle the control characteristics:
| | DisplayBookmarks | ..DisplayBookmarks is used to: - identify the display mode of bookmarks in a Word Processing control.
- show or hide bookmarks in a Word Processing control.
| DisplayControlCharacters | The Property DisplayCharactersControl allows to: - Find out whether the display of control characters is enabled in a Word Processing control.
- Enable (or not) the display of control characters in a Word Processing control.
| DisplayMode | ..DisplayMode is used to find out and modify the display mode in a Word Processing control or PDF Reader control. | FilePath | ..FilePath is used to find out: - the name of xlsx file associated with a Spreadsheet control. This name is initialized by SpreadsheetLoad and SpreadsheetSave.
- the name of file associated with an Image Editor control. This name is initialized by PicOpen and PicSave.
- the name of PDF file associated with a PDF Reader control. This name is initialized by PDFReaderOpen.
- the name of DOCX file associated with a Word Processing control. This name is initialized by DocOpen and DocSave.
| FormattingMarksColor | ..FormattingMarksColor allows you to: - find out the color of formatting marks in a Word Processing control.
- change the color of formatting marks in a Word Processing control.
| HTMLEdit | ..HTMLEdit is used to: - find out whether a Word Processing control is displayed in optimized mode for the HTML edit,
- modify a Word Processing control to display it (or not) in optimized mode for the HTML edit.
| NumberAccessiblePages | The Property AccessiblePageNumber shows the number of pages currently loaded in the champ PDF Reader or Word Processing control. | NumberDisplayedPage | ..NumberDisplayedPage is used to find out and modify the number of the page currently displayed in the PDF Reader control or in the Word Processing control. | NumberPage | ..NumberPage is used to find out: - the number of pages in a "multi-page" image file. This image is displayed in an Image control or in the background of a Chart control.
- the number of pages in a PDF file displayed in an Image control.
- the number of pages found in a PDF file displayed in a PDF Reader control.
- the number of pages found in a DOCX file displayed in a Word Processing control.
| RuleVisible | The Property RuleVisible allows to: - Find out whether the rulers are visible or invisible in a Word Processing control.
- Make the rulers visible or invisible in a Word Processing control.
| Selection | ..Selection is used to find out the characteristics of the selection (or cursor): - in the Word Processing control.
Remark: This selection is located in the section currently edited in the control (body, header or footer). - in the Spreadsheet control.
| SelectionLength | ..SelectionLength is used to find out and modify the length of the selection performed in a Word Processing control. | ToolbarVisible | ..ToolbarVisible is used to: - Find out whether the control ribbon is displayed.
- Display (or not) a ribbon for the control.
|
Related Examples:
|
Unit examples (WINDEV): The Word Processing control
[ + ] This example explains how to handle a Word Processing control by programming. You have the ability to add text and to format it by programming.
|
|
|
|
| |
| Click [Add] to post a comment |
|
| |
|
| |
| |
| |
| |
| |
| |
| | |
| |