Upload
oscar-flowers
View
271
Download
8
Embed Size (px)
Citation preview
Sep-05 Slide:1ActiveX Controls in VB
ActiveX Controls in VB6
Sep-05 Slide:2ActiveX Controls in VB
What are ActiveX Controls?
• Custom UI Controls• Which you can design and add to the
toolbox• And then use in applications
Sep-05 Slide:3ActiveX Controls in VB
Creating Simple ActiveX Controls
• Start with New Project.. ActiveX Control• Design/program as if a form• Add a project to Group – test it in that• Finally, produce a compiled OCX file• For example, a simple clock control..
Sep-05 Slide:4ActiveX Controls in VB
The Clock Control 1
Sep-05 Slide:5ActiveX Controls in VB
Clock Control 2
• It will work by having a Timer• Which ticks every second• And gets system time• And displays it in a label
Sep-05 Slide:6ActiveX Controls in VB
Clock Control 3
Sep-05 Slide:7ActiveX Controls in VB
Clcok Control 4 - Testing
Sep-05 Slide:8ActiveX Controls in VB
Clock Control 5 – Normal exe project added
Sep-05 Slide:9ActiveX Controls in VB
Clock Control 6 – Set Test as Startup
Or when you Run it it will start in a browser
Sep-05 Slide:10ActiveX Controls in VB
Clock Control 7 – The control in use
Sep-05 Slide:11ActiveX Controls in VB
Clock control 7 – Give it a name
Sep-05 Slide:12ActiveX Controls in VB
Clock Control 8 – Make .ocx file
Sep-05 Slide:13ActiveX Controls in VB
Clock Control 8 – Adding Control in a new project
Sep-05 Slide:14ActiveX Controls in VB
ActiveX Exercise 1
• Make a Clock control like this but..• Have 3 fields showing hour, minute and
second• Use hour() minute() and second() functions
Sep-05 Slide:15ActiveX Controls in VB
Controls with properties
• Most controls have properties used for design
• Example background colour of textbox• And properties for user input• Such as text in a text box• ActiveX usually need the same
Sep-05 Slide:16ActiveX Controls in VB
ActiveX Controls are like Classes (as are forms)
• They have methods• They have private data members• They have property let and get routines• Can set up events
Sep-05 Slide:17ActiveX Controls in VB
Two 'users' of custom controls• One user is the programmer who uses the
control in a form design• The other is the final end-user who uses
that form• You have to write code for both types of
user
Sep-05 Slide:18ActiveX Controls in VB
Properties modified at design-time
• Need public property Let and Get• and private data member for internal
representation• But• property values differ between control
instances• and must 'persist' when Form not in
memory• so must be written to disc somehow• actually stored in the .frm file• this persistence is not automated
Sep-05 Slide:19ActiveX Controls in VB
Example – a spinner control• Input integer values• Buttons to increase/decrease value• Need a StepSize property
Sep-05 Slide:20ActiveX Controls in VB
End-user code
Private Sub Command1_Click()Text1.Text = CInt(Text1.Text) + StepSizeEnd Sub
Private Sub Command2_Click()Text1.Text = CInt(Text1.Text) - StepSizeEnd Sub
Sep-05 Slide:21ActiveX Controls in VB
Dim ssize As Integer
Public Property Let StepSize(val As Integer)ssize = valPropertyChanged "StepSize"End Property
Public Property Get StepSize() As IntegerStepSize = ssizeEnd Property
Private Sub UserControl_WriteProperties(PropBag As PropertyBag) PropBag.WriteProperty "StepSize", StepSize, 0End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag) StepSize = PropBag.ReadProperty("StepSize", 0)End Sub
Private Sub UserControl_Initialize()Text1.Text = 0End Sub
Designer-user code
Sep-05 Slide:22ActiveX Controls in VB
Designer use
Sep-05 Slide:23ActiveX Controls in VB
.FRM contentsVERSION 5.00Object = "*\AspinnerProject.vbp"Begin VB.Form Form1 .. ScaleWidth = 4680 StartUpPosition = 3 'Windows Default Begin Project1.UserControl1 UserControl12 Height = 855 Left = 840 .. _ExtentY = 1508 StepSize = 9 End Begin Project1.UserControl1 UserControl11 Height = 855 .. _ExtentY = 873 StepSize = 5 EndEnd..
Sep-05 Slide:24ActiveX Controls in VB
ActiveX Exercise 2• Write a 'slider' control for numeric
input• When user drags mouse from area,
input is mouse Y• Have textbox and pictureBox• Program the mouseMove event of the
PictureBox, use the Y parameter• Once working.. add a scale property
set at design-time • Then expose a 'Value' property which
allows access to the number in the (Let and Get) and read/write
Sep-05 Slide:25ActiveX Controls in VB
Adding Events to controls
• A control can make an event occur• This would be a 'custom' event for the
control• Designer can then program an event-
handler for it• For example, in the spinner control, could
hav ea BadKey event if non-digit key pressed..
Sep-05 Slide:26ActiveX Controls in VB
Control with Event
..
Public Event Badkey()..
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Or KeyCode = 8 Then Exit Sub 'Enter or backspaceIf KeyCode < 48 Or KeyCode > 57 Then ' not 0 to 9RaiseEvent BadkeyEnd IfEnd Sub
Sep-05 Slide:27ActiveX Controls in VB
Designer writes event-handler
Sep-05 Slide:28ActiveX Controls in VB
ActiveX Control Exercise 3
• Add a 2Click event to the slider control• Triggered when picturebox double-clicked• As designer, use it to zero the value