display pdf winform c# : Rotate pages in pdf online Library application class asp.net html windows ajax 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200731-part657

ACancel button has been added to the UserForm so that any changes made to the controls while the
UserForm is being shown can be discarded if the user wishes, rather than being automatically applied
to the worksheet. The module behind frmPersonal now contains the following code:
Option Explicit
Public Cancelled As Boolean
Private Sub cmdCancel_Click()
Cancelled = True
Me.Hide
End Sub
Private Sub cmdOK_Click()
Cancelled = False
Me.Hide
End Sub
The Public variable Cancelledwill provide a way to detect that the Cancel button has been clicked.
If the OK button is clicked, Cancelled is assigned the value False. If the Cancel button is clicked,
Cancelledis assigned a value of True. Both buttons hide frmPersonalso it remains in memory.
The following event procedure has also been added to the module behind frmPersonal:
Private Sub UserForm_Initialize()
Dim vDepartment As Variant
Dim vDeptCode As Variant
Dim saDeptList() As String
Dim i As Integer
‘Department name array
vDepartment = VBA.Array(“Administration”, _
“Computer Resources”, _
“Distribution”, _
“Human Resources”, _
“Manufacturing”, _
“Marketing”, _
“R&D”, _
“Sales”)
‘Department code array
vDeptCode = VBA.Array(“AD”, _
“CR”, _
“DS”, _
“HR”, _
“MF”, _
“MK”, _
“RD”, _
“SL”)
‘Assign array values to string array
ReDim saDeptList(0 To UBound(vDepartment), 0 To 1)
For i = 0 To UBound(vDepartment)
saDeptList(i, 0) = vDeptCode(i)
saDeptList(i, 1) = vDepartment(i)
278
Chapter 13: UserForms
Rotate pages in pdf online - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
rotate individual pdf pages reader; how to rotate one pdf page
Rotate pages in pdf online - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
rotate one page in pdf reader; save pdf rotated pages
Next i
‘Assign string array to list box
lstDepartment.List = saDeptList
End Sub
The UserForm_Initialize event is triggered when the UserForm is loaded into memory. It does not
occur when the form has been hidden and is shown again. It is used here to load lstDepartment with
two columns of data. The first column contains the department codes, and the second contains the
department names to be displayed.
vDepartmentand vDeptCodeare assigned arrays in the usual way using the Arrayfunction, except
that VBA.Arrayhas been used to ensure that the arrays are zero-based. saDeptList is a dynamic array,
and ReDim is used to dimension it to the same number of rows as in vDepartment and two columns,
once again zero-based.
The For...Nextloop assigns the department codes and names to the two columns of saDeptList.
saDeptListis then assigned directly to the Listproperty of lstDepartment. If you prefer, you can
maintain a table of departments and codes in a worksheet range and set the ListBox control’s
RowSourceproperty equal to the range you saw in the first example in this chapter.
When you have a multi-column ListBox, you need to specify which column contains the data that will
appear in a link cell and be returned in the control’s Value property. This column is referred to as the
bound column. The BoundColumn property of lstDepartment has been set to 1. This property is 
one-based, so the bound column is the department code. The ColumnCountproperty has been set to 2,
because there are two columns of data in the list.
However, you only want to see the department names in the ListBox, so you want to hide the first col-
umn. You can do that by setting the column width of the first column to 0. To do this, you only need to
enter a single 0 in the ColumnWidths property, rather than, for example, 0;40. Entering a single 0 sets the
first column to a width of 0 and leaves the second column to fill the ListBoxwidth.
The following code has been placed in the module behind Sheet1:
Private Sub cmdShowUserForm_Click()
Dim rngData As Range
Dim vData As Variant
‘First block of code
‘Get current data values
Set rngData = Range(“Database”).Rows(2)
vData = rngData.Value
With frmPersonal
‘Load data into controls
.txtName.Value = vData(1, 1)
.txtAge.Value = vData(1, 2)
Select Case vData(1, 3)
Case “F”
.optFemale.Value = True
279
Chapter 13: UserForms
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Enable specified pages deleting from PDF in Visual Basic .NET class. Free trial SDK library download for Visual Studio .NET program. Online source codes for
how to rotate a pdf page in reader; rotate all pages in pdf and save
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
add and insert one or multiple pages to existing adobe PDF document in VB.NET. Ability to create a blank PDF page with related by using following online VB.NET
pdf rotate one page; pdf page order reverse
Case “M”
.optMale.Value = True
End Select
.chkMarried.Value = vData(1, 4)
.lstDepartment.Value = vData(1, 5)
‘Second block of code
‘Display UserForm
.Show
‘Third block of code
‘Continue if Cancel not clicked
If Not .Cancelled Then
‘Assemble data in vData
vData(1, 1) = .txtName
vData(1, 2) = .txtAge
Select Case True
Case .optFemale.Value
vData(1, 3) = “F”
Case .optMale.Value
vData(1, 3) = “M”
End Select
vData(1, 4) = .chkMarried.Value
vData(1, 5) = .lstDepartment.Value
‘Transfer data to worksheet
rngData.Value = vData
End If
End With
Unload frmPersonal
End Sub
The code is in three blocks after the initial declaration statements. The first block loads the data from the
worksheet into frmPersonal. The second block (only two lines) displays frmPersonal, then checks to
see if the Cancel button is clicked. The third block copies the data in frmPersonal back to the worksheet.
At the start of the first block, rngData is assigned a reference to cells A2:E2. The range A1:E2 has been
given the name Database, so Range(“Database”).Rows(2) refers to the required data range. The values
in rngDataare then assigned directly to the variant vData. This creates a two-dimensional, one-based
array of values having one row and five columns. It is much more efficient to access the worksheet data
in this way, rather than to access each cell individually.
Most of the remaining code is within the With...EndWith structure, which makes it possible to
use shorter and more efficient references to the controls, properties, and methods associated with
frmPersonal. The first reference to frmPersonalalso causes frmPersonalto be loaded into memory,
although it remains hidden at this point.
280
Chapter 13: UserForms
C# PDF Page Insert Library: insert pages into PDF file in C#.net
to merge PDF document files by C# code, how to rotate PDF document page to delete PDF page using C# .NET, how to reorganize PDF document pages and how
pdf rotate all pages; how to rotate page in pdf and save
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
pdf reverse page order; how to rotate just one page in pdf
The Valueproperties of the controls on frmPersonal are then assigned the values in vData. The option
buttons are an exception, because the M and F code values need to be translated to True values as appro-
priate. It is only necessary to set one of the option buttons to True, because the other will automatically
be set to False. You can group option buttons by assigning them the same value in their GroupName
property, or by placing them in the same frame. The option buttons here do not have a value in their
GroupNameproperty. They are considered to be in the same group because they are in the same frame.
The Show method displays frmPersonal. Control then passes to frmPersonal until it is hidden, which
occurs when the user clicks OK or Cancel, or the x at the top of the UserForm. The user can also press
Esc to activate the Cancel button because it has had its Cancel property set to True. The user can also
press Enter to activate the OK button, as long as the Cancel button does not have the focus, because the
OK button’s Default property has been set to True.
When frmPersonal is hidden, the cmdShowUserForm_Click event procedure regains control, and
checks to see if the Cancel button was clicked. It does this by examining the value of the Public variable
Cancelledon frmPersonal.
If Cancelled is False, the procedure loads the values of the controls back into vData, translating the
option button settings back into an F or M value, and the values in vData are directly assigned back to
the worksheet. The final step is to unload frmPersonal from memory.
Stopping t he Close But ton
One problem with the previous code is that, if the user clicks the x, which is the Close button at the top
of frmPersonal, the event procedure does not exit. Instead, it transfers any changes back to the work-
sheet. This is because the default value for Cancelled is False. Normally, clicking the x would also
unload the form and the code would fail when it tries to access the controls on the form. However, in
this case the With...EndWith structure keeps frmPersonal in scope, and frmPersonal is not
unloaded until after the EndWith statement.
There are a number of simple ways in which the preceding problem could be corrected, but the follow-
ing method gives you total control over that little x. You can use the QueryClose event of the UserForm
object to discover what is closing the UserForm and cancel the event if necessary. Adding the following
code to the frmPersonal module blocks the Close button exit:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox “Please use only the OK or Cancel buttons”, vbCritical
Cancel = True
End If
End Sub
The code modules behind UserForms (as well as those behind sheets and workbooks)
are class modules. When you define a Public variable in a class module, the variable
behaves as a property of the object associated with the class module. See Chapter 16
for more details.
281
Chapter 13: UserForms
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Free online C# class source code for deleting specified PDF pages in .NET console application. Able to remove a single page from PDF document.
how to rotate pdf pages and save permanently; rotate all pages in pdf
VB.NET PDF - WPF PDF Viewer for VB.NET Program
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
pdf reverse page order preview; pdf rotate single page reader
The QueryCloseevent can be triggered in four ways. You can determine what caused the event by
using the following intrinsic constants to test the CloseMode parameter.
Constant
Value Reason for the Event
vbFormControlMenu
0
The user clicked the x in the Control menu on the UserForm.
vbFormCode
1
The Unload statement was used to remove the UserForm from
memory.
vbAppWindows
2
Windows is shutting down.
vbAppTaskManager
3
The application is being closed by the Windows Task Manager.
Maintaining a Dat a Lis t
The code you have developed can now be extended to maintain a data list without too much extra
effort. However, the last example takes a different approach. This time you will build all the code into
frmPersonal, apart from the code behind the command button in the worksheet that shows the
UserForm. The code behind this button now becomes the following:
Private Sub cmdShowUserForm_Click()
frmPersonal.Show
End Sub
It is really much easier to maintain a data list in a proper database application, such as Microsoft
Access, but it can be done in Excel without too much trouble if your requirements are fairly simple.
If you are going to manage more than one row of data, you need to be able to add new rows, delete
existing rows, and navigate through the rows. frmPersonal needs some extra controls, as shown in
Figure 13-4.
Figure 13-4
282
Chapter 13: UserForms
VB.NET PDF - Create PDF Online with VB.NET HTML5 PDF Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
rotate individual pages in pdf; rotate single page in pdf reader
C# HTML5 PDF Viewer SDK to create PDF document from other file
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
rotate all pages in pdf preview; pdf reverse page order online
The scrollbar is a handy way to navigate through many records quickly. It also makes it easy to get to the
last or first record. It can also be used to go to the next or previous record. For variety, buttons to go to
the next and previous records are included as well. The New Record button adds a record to the end of
the data list and initializes some of the values in the new record. The Delete button deletes the record
that is currently showing in frmPersonal.
The code in frmPersonal is discussed next. It is important to note first that the following module-level
variables have been declared in the (declarations) section at the top of the frmPersonalcode module:
Dim mrngData As Range
Dim mvData As Variant
These variables are used in exactly the same way as they were used in the previous example, except that
the row referred to can vary. The object variable mrngData is always set to the current row of data in the
named range Database, which currently refers to A1:E18 in the worksheet shown in Figure 13-4.
mvDataalways holds the values from mrngDataas a VBAarray.
The code from the command button event procedure in the previous example has been converted to two
utility procedures that reside in frmPersonal’s code module:
Private Sub LoadRecord()
‘Copy values in mrngData from worksheet to mvData array
mvData = mrngData.Value
‘Assign array values to frmPersonal controls
txtName.Value = mvData(1, 1)
txtAge.Value = mvData(1, 2)
Select Case mvData(1, 3)
Case “F”
optFemale.Value = True
Case “M”
optMale.Value = True
End Select
chkMarried.Value = mvData(1, 4)
lstDepartment.Value = mvData(1, 5)
End Sub
Private Sub SaveRecord()
‘Copy values from frmPersonal controls to Data array
mvData(1, 1) = txtName.Value
mvData(1, 2) = txtAge.Value
Select Case True
Case optFemale.Value
mvData(1, 3) = “F”
Case optMale.Value
mvData(1, 3) = “M”
283
Chapter 13: UserForms
End Select
mvData(1, 4) = chkMarried.Value
mvData(1, 5) = lstDepartment.Value
‘Assign Data array values to current record in Database
mrngData.Value = mvData
End Sub
Because the code is in the frmPersonal module, there is no need to refer to frmPersonal when refer-
ring to a control, so all controls are directly addressed in the code.
LoadRecordand SaveRecordare the only procedures tailored to the data list structure and the controls.
As long as the data list has the name Database, none of the other code in frmPersonal needs to change
if you decide to add more fields to the data list or remove fields. It also means that you can readily apply
the same code to a completely different data list. All you have to do is redesign the UserForm controls
and update LoadRecord and SaveRecord.
The key navigation device in frmPersonalis the scrollbar, which has been named scbNavigator. It is
used by the other buttons when a change of record is required, as well as being available to the user
directly. The Value property of scbNavigator corresponds to the row number in the range named
Database.
The minimum value of scbNavigator is fixed permanently at 2, because the first record is the second
row in Database, so you need to set the Min property of the scrollbar in the Properties window. The max-
imum value is altered as needed by the other event procedures in frmPersonal so it always corresponds
to the last row in Database:
Private Sub scbNavigator_Change()
‘When Scrollbar value changes, save current record and load
‘record number corresponding to scrollbar value
Call SaveRecord
Set mrngData = Range(“Database”).Rows(scbNavigator.Value)
Call LoadRecord
End Sub
When the user changes the scbNavigator.Value property (or when it is changed by other event proce-
dures), the Change event fires and saves the current record in frmPersonal, redefines mrngData to be
the row in Database corresponding to the new value of scbNavigator.Value, and loads the data from
that row into frmPersonal.
The UserForm_Initialize event procedure has been updated from the previous exercise to set the
correct starting values for scbNavigator:
284
Chapter 13: UserForms
Private Sub UserForm_Initialize()
Dim vDepartment As Variant
Dim vDeptCode As Variant
Dim saDeptList() As String
Dim i As Integer
vDepartment = VBA.Array(“Administration”, _
“Computer Resources”, _
“Distribution”, _
“Human Resources”, _
“Manufacturing”, _
“Marketing”, _
“R&D”, _
“Sales”, _
“None”)
vDeptCode = VBA.Array(“AD”, _
“CR”, _
“DS”, _
“HR”, _
“MF”, _
“MK”, _
“RD”, _
“SL”, _
“NA”)
ReDim saDeptList(0 To UBound(vDepartment), 0 To 1)
For i = 0 To UBound(vDepartment)
saDeptList(i, 0) = vDeptCode(i)
saDeptList(i, 1) = vDepartment(i)
Next i
lstDepartment.List = saDeptList
‘Load 1st record in Database and initialize scrollbar
With Range(“Database”)
Set mrngData = .Rows(2)
Call LoadRecord
scbNavigator.Value = 2
scbNavigator.Max = .Rows.Count
End With
End Sub
After initializing the lstDepartment.List property, the code initializes mrngData to refer to the sec-
ond row of Database, row two being the first row of data under the field names on row one, and loads
the data from that row into frmPersonal. It then initializes the Value property of scbNavigator to 2
and sets the Max property of scbNavigator to the number of rows in Database. If the user changes the
scrollbar, he can navigate to any row from row two through the last row in Database.
285
Chapter 13: UserForms
The buttons captioned Next Record and Previous Record have been named cmdNext and cmdPrevious.
The Clickevent procedure for cmdNext is as follows:
Private Sub cmdNext_Click()
With Range(“Database”)
If mrngData.Row < .Rows(.Rows.Count).Row Then
‘Load next record only if not on last record
scbNavigator.Value = scbNavigator.Value + 1
‘Note: Setting sbNavigator.Value runs its Change event procedure
End If
End With
End Sub
The If test checks that the current row number in Database is less than the last row number in Database,
to ensure that you don’t try to go beyond the data. If there is room to move, the value of scbNavigator
is increased by one. This change triggers the Change event procedure for scbNavigator, which saves
the current data, resets mrngData, and loads the next row’s data.
The code for cmdPrevious is similar to cmdNext, except that there is no need for the With...EndWith
because you don’t need to keep repeating the reference to Range(“Database”):
Private Sub cmdPrevious_Click()
If mrngData.Row > Range(“Database”).Rows(2).Row Then
‘Load previous record if not on first record
scbNavigator.Value = scbNavigator.Value - 1
‘Note: Setting scbNavigator.Value runs its Change event procedure
End If
End Sub
The check ensures that you don’t try to move to row numbers lower than the second row in Database.
This, and the cmdNext check, could have also been carried out using the ValueMax, and Min properties
of scbNavigator, but the method used in cmdNext_Click shows you how to determine the row num-
ber of the last row in a named range, which is a technique that it is very useful to know. It is important to
carry out these checks, because trying to set the scbNavigator.Value property outside the Minto Max
range causes a run-time error.
The code for cmdDelete is as follows:
Private Sub cmdDelete_Click()
‘Deletes current record in frmPersonal
If Range(“Database”).Rows.Count = 2 Then
‘Don’t delete if only one record left
MsgBox “You cannot delete every record”, vbCritical
Exit Sub
ElseIf mrngData.Row = Range(“Database”).Rows(2).Row Then
‘If on 1st record, move down one record and delete 1st record
Set mrngData = mrngData.Offset(1)
mrngData.Offset(-1).Delete shift:=xlUp
286
Chapter 13: UserForms
Call LoadRecord
Else
‘If on other than 1st record, move to previous record before delete
scbNavigator.Value = scbNavigator.Value - 1
‘Note: Setting scbNavigator.Value runs its Change event procedure
mrngData.Offset(1).Delete shift:=xlUp
End If
scbNavigator.Max = scbNavigator.Max - 1
End Sub
This procedure carries out the following actions:
1.
It aborts if you try to delete the last remaining record in Database.
2.
If you delete the first record, mrngData is assigned a reference to the second record.
ScbNavigator.Valueis not reset, because row 2 becomes row 1, once the original 
row 1 is deleted. LoadRecord is called to load the data in mrngData into the UserForm.
3.
If you delete a record that is not the first one, scbNavigator.Value is reduced by 1.
This causes the previous record to be loaded into the UserForm.
4.
At the end, the count of the number of rows in Database, held in scbNavigator.Max, is
decreased by 1.
The code for cmdNew is as follows:
Private Sub cmdNew_Click()
‘Add new record at bottom of database
Dim iRowCount As Integer
With Range(“Database”)
‘Add extra row to name Database
iRowCount = .Rows.Count + 1
.Resize(iRowCount).Name = “Database”
scbNavigator.Max = iRowCount
scbNavigator.Value = iRowCount
‘Note: Setting scbNavigator.Value runs its Change event procedure
End With
‘Set default values
optMale.Value = True
chkMarried = False
lstDepartment.Value = “NA”
End Sub
This event procedure defines iRowCount to be one higher than the current number of rows in Database.
It then generates a reference to a range with one more row than Database and redefines the name
Databaseto refer to the larger range. It then assigns iRowCountto both the Maxproperty of
scbNavigatorand the Valueproperty of scbNavigator. Setting the Valueproperty fires the Change
event procedure for scbNavigator, which makes the new empty row the current row and loads the
empty values into frmPersonal. Default values are then applied to some of the frmPersonal controls.
287
Chapter 13: UserForms
Documents you may be interested
Documents you may be interested