ID: Q115782
- Standard and Professional Editions of Microsoft Visual Basic for
Windows version 3.0
- Microsoft Word, version 6.0
The stretch setting of the SizeMode property re-sizes an OLE server's image to best fit the dimensions of the MSOLE2.VBX control. OLE servers, such as Word for Windows, are responsible for the display of the image inside an OLE container. OLE servers will create a display based on a unit defined by the server. For example, the display of a Word for Windows version 6.0 document is based on the Page Layout dimensions of the document and the amount of vertical text being displayed. This article gives two techniques you can use to alter the appearance of a Word object in the OLE control.
The ChangePageSize Sub procedure defined in the following example is a generic routine that accepts three parameters (the OLE control, a string for page height, and a string for page width). The ChangePageSize Sub procedure redefines the page height and width based on the parameters passed to it. Both strings (page height and page width) must include a unit of measure. The following example uses inches as the unit of measure. The ChangePageSize Sub procedure expects the second and third parameters to represent the page height and page width.
1. Start a new project in Visual Basic. Form1 is created by default.
2. Add a command button (Command1) to Form1.
3. Create a control array of three Command1 buttons. From the Edit
menu, choose Copy. Then from the Edit menu, choose Paste. You will be
asked if you want to create a control array of Command1 buttons. Choose
the Yes button. Continue this process for a total of three Command1
buttons. Change the caption on the first button to 100%, the caption on
the second button to 75%, and the caption on the third button to 50%.
4. Add the following code to Command1_Click (Index As Integer) event
procedure:
Sub Command1_Click (Index As Integer)
' OLE1 is the name of the OLE control.
Select Case Index
Case 0 '100%
Call ChangePageSize(OLE1, "", "")
Case 1 '75%
' Enter the following two lines as one, single line:
Call ChangePageSize(OLE1, CStr(11 * .75) & """",
CStr(8.5 * .75) & """")
Case 2 '50%
' Enter the following two lines as one, single line:
Call ChangePageSize(OLE1, CStr(11 * .5) & """",
CStr(8.5 * .5) & """")
End Select
End Sub
5. Add the following Sub procedure to the General Declarations
section of Form1:
' Enter the following two lines as one, single line:
Sub ChangePageSize (cOLE As OLE, strPageHeight As String,
strPageWidth As String)
' Declare the variables to be used:
Dim WB As Object
' Initialize Page Definition variables for default:
If strPageHeight = "" Then strPageHeight = "11.0"""
If strPageWidth = "" Then strPageWidth = "8.5"""
' Activate OLE container:
cOLE.Action = 7
' Use WB as an Alias for the WordBasic Object:
Set WB = CreateObject("Word.Basic")
' Use OLE Automation to define the embedded documents page def.
' Change width and height, ,, will leave settings as is.
WB.FilePageSetup , , , , , , , strPageWidth, strPageHeight
' If object is linked, save, close, and activate Form:
If cOLE.SourceDoc <> "" Then
WB.FileSave
WB.FileClose
AppActivate Me.Caption
End If
End Sub
6. Add an MSOLE2.VBX control to Form1 and select the Create from
File option. Then choose the Browse button and find the desired
document to load. Next select the Display as Icon option, and
choose the OK button.
7. Run the sample. Click the 50% button to see the document displayed
at 50% of the page size. Then click the 75% button to see the document
displayed at 75% of the page size. Finally, click the 100% button to
see the document displayed at 100% of the page size.
The ChangeMargins Sub procedure listed in the following example is a generic routine that excepts five parameters (the OLE control and four string type parameters for the four margin settings).
The ChangeMargins Sub procedure redefines the page margins (top, bottom, left, and right) based on the parameters passed to it. All four of the margin strings must include a unit of measure, which for the following example is inches. In the ChangeMargins Sub procedure, the second, third, fourth and fifth parameters set the margins. The second parameter represents the value for the top margin, the third represents the value for the bottom margin, the fourth represents the value for the left margin, and the fifth represents the value for the right margin.
1. Add a command button (Command2) to Form1.
2. Create a control array of four Command2 buttons. From the Edit menu,
choose Copy. Then from the edit menu, choose Paste. When asked if
you want to create a control array of Command1 buttons, choose the
Yes button. Continue this process for a total of four Command2 buttons.
Change the first button's caption to Default, the second button's
caption to No Margins, the third button's caption to 1/2 Inch, and the
fourth button's caption to 1 Inch.
3. Add the following code to the Command2_Click (Index As Integer) event
procedure:
Sub Command2_Click (Index As Integer)
Dim strTop As String, sBottom As String
Dim sRight As String, sLeft As String
Select Case Index
Case 0 'Default Settings:
' Do nothing
Case 1 ' No Margins:
strTop = "0.00" & """"
sBottom = "0.00" & """"
sRight = "0.00" & """"
sLeft = "0.00" & """"
Case 2 ' 1/2 Inch all the way around:
strTop = "0.5" & """"
sBottom = "0.5" & """"
sRight = "0.5" & """"
sLeft = "0.5" & """"
Case 3 ' 1 Inch all the way around:
strTop = "1.00" & """"
sBottom = "1.00" & """"
sRight = "1.00" & """"
sLeft = "1.00" & """"
End Select
Call ChangeMargins(OLE1, strTop, sBottom, sRight, sLeft)
End Sub
4. Add the following Sub procedure to the General Declarations
section of Form1:
' Enter the following three lines as one, single line:
Sub ChangeMargins (cOLE As OLE, strTopMargin As String,
strBottomMargin As String, strLeftMargin As String,
strRightMargin As String)
' Declare the variables to be used:
Dim WB As Object
' Initialize Page Definition variables and defaults:
If strTopMargin = "" Then strTopMargin = "1.0"""
If strBottomMargin = "" Then strBottomMargin = "1.0"""
If strLefMargin = "" Then strLefMargin = "0.5"""
If strRightMargin = "" Then strRightMargin = "0.5"""
cOLE.Action = 7 ' Activate OLE container.
' Use WB as an Alias for the WordBasic Object:
Set WB = CreateObject("Word.Basic")
' Use OLE Automation to define the embedded documents page def.
' Enter the following two lines as one, single line:
WB.FilePageSetup , , strTopMargin, strBottomMargin,
strLefMargin, strRightMargin
If cOLE.SourceDoc <> "" Then
WB.FileSave
WB.FileClose
AppActivate Me.Caption
End If
End Sub
5. Press the F5 key to run the application. Click the 1 Inch button
to see the document displayed with a one-inch margin. Click the
1/2 Inch button to see the document displayed with a one-half-inch
margin. Click the No Margins button to see the document displayed
with no margin. Click the Default button to use the Microsoft Word
default margin setting.
You can use these techniques to produce a zoom or PagePreview effect and
control the effect within your Visual Basic program.
Additional query words: OLE Automation OA OLE2 Kbmacro
Keywords : kbprg IAPOLE vbwin
Version : WINDOWS:3.0
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: September 30, 1997