Вы находитесь на странице: 1из 62

What is the difference between char and varchar data types?

The char is a fixed-length character data type, the varchar is a variable-length character data type.
Because char is a fixed-length data type, the storage size of the char value is equal to the
maximum size for this column. Because varchar is a variable-length data type, the storage size of
the varchar value is the actual length of the data entered, not the maximum size for this column.
You can use char when the data entries in a column are expected to be the same size.
You can use varchar when the data entries in a column are expected to vary considerably in size.

Which controls can not be placed in MDI ?


U can not place command button, Lable, drive box, Tree view etc.
Controls without align property can not be placed directly on MDI form.

Which property of textbox cannot be changed at runtime. What is the max size of textbox?
Name Property.. Max Size- No Limit.
List out controls which does not have events?
shape, line controls

OLE is used for _______?


Object linking and embedding, for using to other object classes like
word, excel , autocad objects in our own applications, only thing we have to add reference for
these objects.

.___,__,___ are the type of combo box?


1. dropdown combo
2. simple combo
3. dropdwon list

Timer control contains ________ no. of events.?


Only One

.___ is a property to resize a label control according to your caption?


Autosize

.____ property is used to lock a textbox to enter a datas.


Locked = true

.____ is the difference between Listindex and Tab index.?


Lisindex : Gives current index inside a list
Tabindex : specifies the tab order in the form

.____ property of menu cannot be set at run time.?


Name

What is the difference between and Interface and an Abstract Class?

While this topic is probably more popular amongst Java or .NET peeps, don’t be surpised
if asked in an interview.
An Interface basically is a contract which defines the factors (properties and methods)
that a class must provide. However the interface does not specify how these factors are to
be implemented.

An abstract class is similar to an interface in that it defines empty properties and methods
but may include some methods and properties which are already implemented.

Functionally in VB6 they are pretty much the same. You can create standard interfaces by
compiling abstract classes in Visual Basic ActiveX DLLs or EXEs, or with the MkTypLib
utility. In order to implement an interface, you must use the References dialog box to set
a reference to the type library or ActiveX DLL or EXE. In similar fashion, any
application that uses objects which have implemented an abstract interface must also
have a reference to the type library that describes the interface. Information about
implemented interfaces cannot be included in the type libraries of components, because
there is no way to resolve naming conflicts.

VB6 does not support inheritance but provides for using interfaces as a means of class
inheritance and extension.

which type of combobox is non editable ?


dropdown list.

which method of recordset is used to store records in an array?


Getrows.

how can you display records page wise?


use pagesize,pagecount,absolutepage property of recordset.

why recordset.recordcount returns -1??


cursertype may not be forwardonly.

What are types of ActiveX Components in VB?


ActiveX DLL, ActiveX Exe, ActiveX Controls, ActiveX Document DLL, ActiveX Document Exe

Default property of data control.?


Name is the default property.

How do I register a component?


run this command regsvr32 c:\...\MyDll.dll to register
run this command regsvr32 \u c:\...\MyDll.dll to un-register

What does Option Explicit refer to?


Option Explicit is used to ensure that all variables that are being used in the code are declared.

How to copy & paste non text data to the Windows clipboard?
For retreiving data from clipboard other then text use Clipboard.getData
For assigning data to clipboard other then text use Clipboard.setDatadata

How do I make text box that displays asterisks when the user types in data such
as password?
Set Text Box PasswordChar Property to * .
How do I make a menu popup from a CommandButton or create menus at
runtime?
Use CreatePopupmenu API function.

Can I send keystrokes to a DOS application?


AppActivate ("C:\windows\system32\cmd.exe") ‘ Appilcation caption
SendKeys ("SA") ’For sending one string
SendKeys "% ep", 1’ For sending Clipboard data to Dos

How do you use the Mouse OFF event?


Ole Drag drop

Option Base is used to?


Option Base is to set the Index of the Array to start from 0 or 1.

How to create a label that is vertically oriented?


Private Sub Form_Activate()
Dim s As String
Label1.Caption = "TopITMedia.com"
For i = 1 To Len(Label1)
s = s & Mid$(Label1, i, 1) & vbCrLf
Next
Label1 = s
End Sub
Note: You need to drag the Label1 vertically.
How to compare two strings using wildcards?
Dim Mystr As String
Mystr = "Street"
If Mystr Like "S*" Then
MsgBox "Found"
Else
MsgBox "Not found"
End If

How to format dates so that they look correct in all date and langauge formats?
Format$(Date, "Short Date")

How to create message boxes with those cool red X's?


MsgBox "My Message", vbCritical, "My Title"

How to create a textbox that lets you insert tabs?


Simply set tabstop on all the controls in a particular form to false.

How to implement hotkeys for text boxes?


Create a label with your hotkey. Set the tabindex of the label to one less then the TabIndex of the
textbox.

How to change the content of a Statusbar at run time?


Statusbar1.Panels(1).Text = "Start"

How to load text file into a Listbox?


Private Sub Command1_Click()
Dim StringHold As String
Open "C:\test.txt" For Input As #1
List1.Clear
While Not EOF(1)
Input #1, StringHold
List1.AddItem StringHold
Wend
Close #1
End Sub

How to use Undo function for Textbox or Combobox?


'Windows API provides an undo function
'Do the following declares:
Declare Function SendMessage Lib "User" (ByVal hWnd As _
Integer, ByVal wMsg As Integer, ByVal wParam As _
Integer, lParam As Any) As Long
Global Const WM_USER = &h400
Global Const EM_UNDO = WM_USER + 23
'And in your Undo Sub do the following:
UndoResult = SendMessage(myControl.hWnd, EM_UNDO, 0, 0)
'UndoResult = -1 indicates an error.

How to toggle between Insert & Overwrite in a text box?


'Put a label on the form called 'lblOVR'
'Put this code in KeyUp event of Form
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyInsert Then
If lblOVR = "Over" Then
lblOVR = "Insert"
Else
lblOVR = "Over"
End If
End If
End Sub

'Put this code in KeyPress event of Text Box


Private Sub txtText_KeyPress(KeyAscii As Integer)
'Exit if already selected
If txtText.SelLength > 0 Then Exit Sub
If lblOVR = "Over" Then
If KeyAscii <> 8 And txtText.SelLength = 0 Then
txtText.SelLength = 1 '8=backspace
End If
Else
txtText.SelLength = 0
End If
End Sub

What is the difference between CDbl and Val function?


print Val("12345") - 12345
print Val("12,345") - 12
print CDbl("12,345") - 12345
print CDbl("12345") - 12345

How to calculate the age based on date of birth?


Dim Age as Integer
Age = Int(DateDiff("D", Birth, Now) / 365.25)

How to shell to web address?


'Put this in the click event of a control
Dim iRet As Long
Dim Response As Integer
Response = MsgBox("You have chosen 'www.topitmedia.com', " & vbCrLf & "which
will launch your web browser and" & vbCrLf & "point you to the TopITMedia.com web _
site." & vbCrLf & vbCrLf & "Do you wish to continue?", vbInformation + _
vbYesNo, "www.topitmedia.com.com")
Select Case Response
Case vbYes
iRet = Shell("start.exe http://www.topitmedia.com", vbNormal)
Case vbNo
Exit Sub
End Select

How to round a number to nearest 10, 100, 1000, etc.?


'Example - round to nearest 100
Round(RatioBolus * Val(txtDW), 100)
'Put this in BAS module { Input: Dose, Factor (10, 100, 1000, etc) & Output: Rounded dose}
Public Function Round(Dose, Factor)
Dim Temp As Single
Temp = Int(Dose / Factor)
Round = Temp * Factor
End Function

How to put 13 X 13 bitmaps into a menu?


'Add a picturebox control. Set 'Autosize' to 'True' with a bitmap (not an Icon) at a maximum of
13X13.
'Place these Declarations in BAS module
Private Declare Function VarPtr Lib "VB40032.DLL" (variable As Any) As Long
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long)
As Long
Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal
nPosition As
Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As
Long) As Long
Const MF_BYPOSITION = &H400&

'Place this code into the form load event:


Dim mHandle As Long, lRet As Long, sHandle As Long, sHandle2 As Long
mHandle = GetMenu(hwnd)
sHandle = GetSubMenu(mHandle, 0)
lRet = SetMenuItemBitmaps(sHandle, 0, MF_BYPOSITION, imOpen.Picture, imOpen.Picture)
lRet = SetMenuItemBitmaps(sHandle, 1, MF_BYPOSITION, imSave.Picture, imSave.Picture)
lRet = SetMenuItemBitmaps(sHandle, 3, MF_BYPOSITION, imPrint.Picture, imPrint.Picture)
lRet = SetMenuItemBitmaps(sHandle, 4, MF_BYPOSITION, imPrintSetup.Picture,
imPrintSetup.Picture)
sHandle = GetSubMenu(mHandle, 1)
sHandle2 = GetSubMenu(sHandle, 0)
lRet = SetMenuItemBitmaps(sHandle2, 0, MF_BYPOSITION, imCopy.Picture, imCopy.Picte)

How to make a form fade to black?


Sub FormFade(frm As Form)
' Makes Form Fade To Black
' Example: FormFade(Form1)
For icolVal% = 255 To 0 Step -1
DoEvents
frm.BackColor = RGB(icolVal%, icolVal%, icolVal%)
Next icolVal%
End Sub

How to scroll caption on the form's title bar?


Sub TitleScroll(frm As Form)
Dim X As Integer
Dim current As Variant
Dim Y As String
Y = frm.Caption
frm.Caption = ""
frm.Show
For X = 0 To Len(Y)
If X = 0 Then
frm.Caption = ""
current = Timer
Do While Timer - current < 0.1
DoEvents
Loop
GoTo done
Else: End If
frm.Caption = left(Y, X)
current = Timer
Do While Timer - current < 0.05
DoEvents
Loop
done:
Next X
End Sub

How to hide mouse cursor?


Use this API function and set parameter lshow to True/False to Show/Hide the mouse cursor.
Public Declare Function ShowCursor& Lib "user32" (ByVal lShow As Long)

How to check if the credit card is valid?


'Add this function to a .BAS or a form and to check whether a creditcard number is valid, call it
using something like:
'Valid = IsValidCreditCardNumber("4552012301230123")
'Valid will then contain true or false depending on what number was passed to the function.

Public Function IsValidCreditCardNumber(ByVal pCardNumber As String) As Boolean


Dim CharPos As Integer
Dim CheckSum As Integer
Dim tChar As String
For CharPos = Len(pCardNumber) To 2 Step -2
CheckSum = CheckSum + CInt(Mid(pCardNumber, CharPos, 1))
tChar = CStr((Mid(pCardNumber, CharPos - 1, 1)) * 2)
CheckSum = CheckSum + CInt(Left(tChar, 1))
If Len(tChar) > 1 Then CheckSum = CheckSum + CInt(Right(tChar, 1))
Next
If Len(pCardNumber) Mod 2 = 1 Then CheckSum = CheckSum + CInt(Left(pCardNumber, 1))
If CheckSum Mod 10 = 0 Then
IsValidCreditCardNumber = True
Else
IsValidCreditCardNumber = False
End If
End Function

How to deal with Null strings in Access database fields?


By default Access string fields contain NULL values unless a string value
(including a blank string like "") has been assigned. When you read these fields using recordsets
into VB string variables, you get a runtime type-mismatch error. The best way to deal with this
problem is to use the built-in & operator to concatenate a blank string to each field as you read it.
For example:
Dim DB As Database
Dim RS As Recordset
Dim sName As String
Set DB = OpenDatabase("Test.mdb")
Set RS = DB.OpenRecordset("Name")
sName = "" & RS![Last Name]

What are the three main differences between flexgrid control and dbgrid(Data bound Grid)
control

The Microsoft FlexGrid (MSFlexGrid) control displays and operates on tabular data. It allows
complete flexibility to sort, merge, and format tables containing strings and pictures. When bound
to a Data control, MSFlexGrid displays read-only data.Adaptation to existing Visual Basic code for
the data-bound grid (DBGrid).
dbgrid is A spreadsheet-like bound control that displays a series of rows and columns
representing records and fields from a Recordset object.

The data grids are bound controls; that is, they require a data source that actually connects to a
database and retrieves their data. And it seems that the root of the problem with DBGrid is that
there's no data source that can be readily included along with the DBGrid control.
In Visual Basic, the solution is simply to include the Data Control on the same form as DBGrid.
But the Data Control is an intrinsic control; it's unavailable to anything outside of the Visual Basic
environment itself. and VB 6.0 has a new set of data controls (DataGrid, DataList, DataCombo,
MSHFlexGrid, MSFlexGrid) that once again are bound controls. Unlike DBGrid, though, they
support OLE DB, and therefore rely on the an ADO Data Source (and in particular the ActiveX
Data Objects Data Control, or ADO DC) for data access. Unlike the Data Control, the ADO
DC is a custom control (that is, an .OCX) that can be added to any project. In short, if you add
ADO DC to your project along with the
DataGrid control.

ActiveX and Types of ActiveX Components in VB ?

Standard EXE
ActiveX EXE
ActiveX DLL
ActiveX document
ActiveX Control

What is difference between inprocess and out of process ?

An in-process component is implemented as a DLL, and runs in the same process space as its
client app, enabling the most efficient communication between client and component.Each client
app that uses the component starts a new instance of it.

An out of process component is implemented as an EXE, and unlike a dll, runs in its own process
space. As a result, exe's are slower then dll's
because communications between client and component must be marshalled across process
boundaries. A single instance of an out of process component can service many clients.

Advantage of ActiveX Dll over Active Exe ?

ACTIVEX DLL:
=============
An in-process component, or ActiveX DLL, runs in another application’s process. In-process
components are used by applications or other in-process components. this allows you to wrap up
common functionality (like an ActiveX Exe).

ACTIVEX EXE:
=============
An out-of-process component, or ActiveX EXE, runs in its own address space. The client is
usually an application running in another process.The code running in an ActiveX Exe is running
in a separate process space. You would usually use this in N-Tier programming.

An ActiveX EXE runs out of process while an ActiveX DLL runs in the same process space as VB
app. Also, and ActiveX EXE can be run independent of your application if desired.

Explain single thread and multithread thread apartments


All components created with Visual Basic use the apartment model, whether they’re single-
threaded or multithreaded. A single-threaded component has only one apartment, which contains
all the objects the component provides.

This means that a single-threaded DLL created with Visual Basic is safe to use with a
multithreaded client. However, there’s a performance trade-off for this safety. Calls from all client
threads except one are marshaled, just as if they were out-of-process calls.

What is a Component?

If you compile an ActiveX dll, it becomes a component.


If you compile an ActiveX Control, it becomes both a component and a control. Component is a
general term used to describe code that's grouped by functionality. More specifically, a
component in COM terms is a compiled collection of properties/methods and events.

Typically a component is loaded into your project via the References whereas an ActiveX Control
is loaded into your project via "components".

What is meant by "Early Binding" and "Late Binding"? Which is better?

Early binding and late binding refer to the method used to bind an interface's properties and
methods to an object reference (variable). Early binding uses type library information at design
time to reference procedures, while late binding handles this at run time. Late binding
handles this by interrogating the reference before each call to insure that it supports a particular
method. Since every call to a late bound
object actually requires two calls

("Do you do this?" followed by "Okay, do it then"), late binding is much less efficient than early
binding. Except where early binding is not supported (ASP, scripting, etc.), late binding should
only be used in very special cases.

It is a common misconception that any code using the CreateObject function instead of Set =
New is using late binding. This is not the case. The type declaration of the object variable
determines whether
it is late or early bound, as in the following:

Dim A As Foo
Dim B As Foo
Dim C As Object
Dim D As Object

Set A = New Foo 'Early Bound


Set B = CreateObject("FooLib.Foo") 'Early Bound
Set C = CreateObject("FooLib.Foo") 'Late Bound
Set D = New Foo 'Late Bound

What are the Advantages of disconnected recordsets?

A disconnected Recordset, as its name implies, is a Recordset that lacks a connection.

seen that a Recordset that does not have a database connection can be very useful as a tool in
your programming. It can save you time and effort and make your code more scalable.

In order to create a disconnected Recordset two Recordset properties must be set appropriately.
It is a requirement that the CursorLocation property is set to adUseClient and the LockType
property is set to adLockBatchOptimistic. Note that the CursorType will default to adUseStatic if
we don't explicitly state that it should be set to adUseClient.) i.e

rst.LockType = adLockBatchOptimistic
rst.CursorLocation = adUseClient

However, we've recently discovered that these steps aren't necessary. VB automatically assigns
batch optimistic locking to newly created,
connectionless recordsets. And, of course, without a connection, a recordset can't have any other
cursor but a client-side one. To create one of these structures, then, the only thing you need do is
create
the object variable instance. After that, you can simply begin adding fields to the construct.

To add fields, you use the Fields collection's Append method. This method requires two
parameters , the field name and the field data type. So, to create a connectionless recordset with
two fields,you'd use code similar to:

Dim rst As ADODB.Recordset


Set rst = New ADODB.Recordset

rst.Fields.Append "CustID", adVarChar


rst.Fields.Append "CustName", adVarChar

Additional, optional Append method parameters include DefinedSize and Attrib. The DefinedSize
argument takes the size of the field. Fill the Attrib parameter with constants that define additional
field characteristics, such as whether it will allow null values or is updatable.
Since, in our technique, we want the fields to mirror the structure of the original recordset, we'll
simply use existing values for these parameters.

Disconnected Recordsets, first available with ADO 2.0, are the most commonly used mechanism
to retrieve a Recordset and open a connection for only the necessary amount of time, thus
increasing scalability. They are call disconnected because the connection to the database is
closed.
The collections, properties, and methods of a disconnected Recordset are still available even
though the connection is closed. This frees up server resources, given that the number of open
connections is limited and database locking is a non-issue.

What are Benefits of wrapping database calls into MTS transactions?

If database calls are made within the context of a transaction, aborting the transaction will undo
and changes that occur within that transaction.
This removes the possibility of stranded, or partial data. Transaction that uses the Microsoft®
Transaction Server (MTS) environment. MSMQ implicitly uses the current MTS transaction if one
is available.

BENIFTIS OF USING MTS :


Database Pooling, Transactional operations, Deployment, Security, Remote Execution This
allows MTS to reuse database connections. Database connections are put to ?sleep? As
opposed to being created and destroyed and are activated upon request.

How to register a component?

Compiling the component, running REGSVR32 MyDLL.dll

Controls which do not have events ?


Shape and line controls are useful for drawing graphical elements on
the surface of a form. These controls don't support any events; they
are strictly for decorative purposes.

EXTRA INFO::
The image, shape and line controls are considered to be lightweight controls; that is, they support
only a subset of the properties, methods, and events found in the picture box. Because of this,
they typically require less system resources and load faster than the picture box control.

What are the Control Categories

a)Intrinsic controls:
such as the command button and frame controls. These controls are contained inside the Visual
Basic .exe file. Intrinsic controls are always included in the toolbox

b)ActiveX controls:
which exist as separate files with a .ocx file name extension. These include controls that are
available in all editions of Visual Basic (DataCombo, DataList controls, and so on) and those that
are available only in the Professional and Enterprise editions (such as Listview, Toolbar,
Animation, and Tabbed Dialog). Many third-party ActiveX controls are also available.

c)Insertable Objects:
such as a Microsoft Excel Worksheet object containing a list of all your company's employees, or
a Microsoft Project Calendar object containing the scheduling information for a project. Since
these can
be added to the toolbox, they can be considered controls.Some of these objects also support
Automation (formerly called OLE Automation),which allows you to program another application's
objects from within a Visual Basic application.

DIFF between Image and Picture box controls?

The sizing behavior of the image control differs from that of the picture box. It has a Stretch
property while the picture box has an AutoSize property. Setting the AutoSize property to True
causes a picture box to resize to the dimensions of the picture; setting it to False causes the
picture to be cropped (only a portion of the picture is visible). When set to False (the default) , the
Stretch property of the image control causes it to resize to the dimensions of the picture.
Setting the Stretch property to True causes the picture to resize to the size of the image control,
which may cause the picture to appear
distorted.

Default property of data control ?...

connect property......

Define the scope of Public, Private, Friend procedures?

The set of public variables, methods, properties, and events described in a class module define
the interface for an object. The interface consists of the object members that are available to a
programmer who's using the object from code.

You can create private variables, methods, properties, and events that are used by other
procedures within the class module but are not part of the object's public interface. Additionally,
constants user-defined types, and Declare statements within a class module must always be
private.

The Friend keyword makes a procedure private to the project: The procedure is available to any
code running within the project, but it is not available to a referencing project.

Describe Database Connection pooling relative to MTS ?

This allows MTS to reuse database connections. Database connections are put to ?sleep? as
opposed to being created and destroyed and are activated upon request.

Object pooling is an important design concept required for high-performance applications. A


performance optimization based on using collections of preallocated resources, such as objects
or database connections. Pooling results in more efficient resource allocation.

Difference between a function and a subroutine ?

A function accepts any number of parameters (possibly zero), does something with them, and
returns a value. A subroutine is performs an action, but doesn't return a value.

There are two differences between a function and a subroutine: A)How they are invoked. B)How
they are accessed.

A function call has the following syntax ::


function(arg1, arg2, ...)
where: function Is the name of the function. arg1, arg2, ... Are the arguments.

A subroutine call has the following syntax


::subroutine (arg1, arg2, ... {outputfield|'format'})
where: subroutine -->Is the name of the subroutine. arg1, arg2, ... Are the arguments.
{outputfield|'format'} Is the name of the output field or its format.

In addition, on some platforms, the functions are available immediately; whereas, the subroutines
are available in a special subroutine library that you must access.

Difference between Linked Object and Embedded Object?

Embedding objects -
When you embed an object, a copy of the object is inserted into the destination document.
There's no link to the original file. When you change information in the source document, no
changes will be reflected in the destination document. The actual data for the object is stored
within the destination file. To make changes to the embedded object, double click it and it will
launch the original application the source file was in.

Linking objects -
Information is updated when you modify the original source file when you use a linked object.
This dynamic updating is very handy for things such as the aforementioned monthly report. You
can open up the Excel spreadsheet that is referenced within your Word document.Make changes
to the spreadsheet, close Excel, and when you open your Word document... viola! The changes
are already there. If that object is linked to ten other Word files, the changes are already in those
ten files, too! actually linking or embedding an object is fast and easy.

Difference between listbox and combo box?


A LISTBOX CONTROL displays a list of items from which the user can select one or more. If the
number of items exceeds the number that can be displayed, a scroll bar is automatically added to
the ListBox control. A COMBOX CONTROL combines the features of a text box and a list box.
This control allows the user to select an item either by typing text into the combo box, or by
selecting it from the list.
DIFF::Generally, a combo box is appropriate when there is a list of suggested choices, and a list
box is appropriate when you want to limit input to what is on the list. A combo box contains an edit
field, so choices not on the list can be typed in this field.

Difference between Dynaset and Snapshot?

All Recordset objects are constructed using records (rows) and fields (columns). There are five
types of Recordset objects:

Table-type Recordset ::
representation in code of a base table that you can use to add, change, or delete records from a
single database table (Microsoft Jet workspaces only).

Dynaset-type Recordset ::
the result of a query that can have updatable records. A dynaset-type Recordset object is a
dynamic set of records that you can use to add, change, or delete records from an underlying
database table or tables. A dynaset-type Recordset object can contain fields from one or more
tables in a database. This type corresponds to an ODBC keyset cursor.

Snapshot-type Recordset ::
a static copy of a set of records that you can use to find data or generate reports. A snapshot-type
Recordset object can contain fields from one or more tables in a database but can't be updated.
This type corresponds to an ODBC static cursor.

Forward-only-type Recordset::
identical to a snapshot except that no cursor is provided. You can only scroll forward through
records. This improves performance in situations where you only need to make a single pass
through a result set. This type corresponds to an ODBC forward-only cursor.

Dynamic-type Recordset ::
a query result set from one or more base tables in which you can add, change, or delete records
from a row-returning query. Further, records other users add, delete, or edit in the base tables
also appear in your Recordset. This type corresponds to an ODBC dynamic cursor (ODBCDirect
workspaces only).

Difference Listindex and Tab index?

LIST INDEX::
Returns or sets theindex of the currently selected item in the control. Not available at design
time.Default LIST INDEX IS -1 for ComboBox, DirListBox, and DriveListBox controls
TAB INDEX::
Returns or sets thetab order of most objects within their parent form. Visual Basic automatically
renumbers the TabIndex of other controls to reflect insertions and deletions. You can make
changes atdesign time using theProperties window or atrun time in code.The TabIndex property
isn't affected by the ZOrder method.

Difference modal and moduless window?

MODAL forms are forms which require user input before any other actions can be taken place. In
other words, a modal form has exclusive focus in that application until it is dismissed. When
showing a modal form, the
controls outside this modal form will not take user interaction until the form is closed. The internal
MsgBox and InputBox forms are examples of modal forms. To show a form modally, use the
syntax:
MyForm.SHOW.vbModal ' a predeclared constant for 1
MODELESS forms are those which are shown but do not require immediate user input. MDI child
forms are always modeless. To show a form modeless, use the syntax:: MyForm.SHOW

Difference Object and Class?

Classes and objects are separate but related concepts. Every object belongs to a class and every
class contains one or more related objects.
1)A Class is static. All of the attributes of a class are fixed before,during, and after the execution
of a program. The attributes of a class don't change.The class to which an object belongs is also
(usually) static. If a particular object belongs to a certain class at the time that it is created then it
almost certainly will still belong to that class right up until the time that it is destroyed.
2)An Object on the other hand has a limited lifespan. Objects are created and eventually
destroyed. Also during that lifetime, the attributes of the object may undergo significant
change.So basically the difference between a class and an object is that a class is a general
concept while objects are the specific and real instances that embody that concept. When
creating an object oriented program we define the classes and the relationships between the
classes . We then execute the program to create, update, and destroy the objects which are the
specific realization of these classes.

Difference Query unload and unload in form?

Occurs before a form or application closes. When an MDIForm object closes, the QueryUnload
event occurs first for the MDI form and then in all MDI child forms. If no form cancels the
QueryUnload event, the Unload event occurs first in all other forms and then in an MDI form.
When a child form or a Form object closes, the QueryUnload event in that form occurs before the
form's Unload event.

Difference Declaration and Instantiation an object?

Dim obj as OBJ.CLASS with either


Set obj = New OBJ.CLASS or
Set obj = CreateObject(?OBJ.CLASS?) or
Set obj = GetObject( ,? OBJ.CLASS?)
or
Dim obj as New OBJ.CLASS

Set object = Nothing


ensure the object is release from the memory.

If this object is a form, you can add set myform = nothing and Form_Unload() event.Maintain a
habit of remove the object by using set object = nothing which will benefit at last.
Visual Basic is supposed to automatically release objects when they go out of scope. To free up
some memory usage, you can set the object to
nothing.

Draw and explain Sequence Modal of DAO

Connection,Container,Database,DBEngine,Document,Error,Field,Group,Index
Parameter Property,QueryDef,Recordset,Relation,TableDef,User,Workspace

Version |Year |Significant Changes and New Features of Visual Basic?


1 1991 initial release, with drag and drop GUI creation
2 1992 ODBC, object variables
3 1993 Access Engine, OLE 2.0, Crystal Reports, new tools and controls
4 1995 classes, OCXs
5 1997 compiler, ActiveX controls
6 1998 web support, windowless controls, designers, data sources
.NET 2001 XML, SOAP, inheritance, structured exception handling

How can objects on different threads communicate with one another?

Processes communicate with one another through messages, using Microsoft's Remote
Procedure Call (RPC) technology to pass information to one another. There is no difference to the
caller between a call coming from a process on a remote machine and a call coming from another
process on the same machine.

Multithreaded applications must avoid two threading problems: deadlocks and races. A deadlock
occurs when each thread is waiting for the other to do something

How can you force new objects to be created on new threads?

The CreateThread function creates a thread to execute within the virtual address space of the
calling process.

To create a thread that runs in the virtual address space of another process Creating a new
thread is as easy as declaring it and supplying it with a delegate to the method where the thread
is to start. When you are ready to begin execution on the thread, call the Thread.Start Method.
There are special considerations involved when working with multiple threads of execution.

To create a new thread of execution


====================================
Declare the thread.
******************
' Visual Basic
Dim myThread as System.Threading.Thread

// C#
System.Threading.Thread myThread;

Instantiate the thread with the appropriate delegate for the starting point of the thread. Use the
AddressOf operator to create the delegate
in Visual Basic, or create a new ThreadStart object in C#.
*******************
' Visual Basic
myThread = New System.Threading.Thread(AddressOf
myStartingMethod)

// C#
myThread = new System.Threading.Thread(new
System.Threading.ThreadStart(myStartingMethod));

call the Thread.Start method to start the thread.


*******************
' Visual Basic
myThread.Start()

// C#
myThread.Start();

How does a DCOM component know where to instantiate itself?

To create a remote instance of a script component, call the CreateObject method, passing it the
name of the remote computer as a parameter. If the remotable attribute of a script component's
<registration> element has been set to "true," the script component can be instantiated remotely
from another computer using Distributed COM (DCOM).
Both computers must have basic DCOM installed. Note The ability to use CreateObject for
instantiating remote script components requires Visual Basic 6.0 or later or VBScript 5.0 or later.
The following Visual Basic example shows how to do this on a computer named "myserver":

Set newS = CreateObject("Component.MyComponent", "myserver")


Note There can be a slight delay when you first instantiate a remote script component while
DCOM establishes communication between the computers.

1. You can specify the machine on which you want to create the remote server object in DCOM
config ('dcomcnfg').

2. You can specify the machine name when instantiating the remote server object.
In C you can do this with a call to CoGetClassObject or CoCreateInstanceEx (instead of
CoCreateInstance, which does not allow you to specify the name of the machine).
In VB you can specify the name in one of the parameters in the call to CreateObject

What type of multi-threading does VB6 implement?

Apartment model threading

How to register a component?

Compiling the component, running REGSVR32 MyDLL.dll

What is Database Connection pooling (relative to MTS)

This allows MTS to reuse database connections. Database connections are


put to "sleep" As opposed to being created and destroyed and are activated upon request.

What is the tool used to configure the port range and protocols for DCOM
communications?

DCOMCONFIG.EXE

What is a Type Library and what is it's purpose ?

The type library may represent another Visual Basic project, or any other executable component
that exposes a type library.
Visual Basic creates type library information for the classes you create, provides type libraries for
the objects it includes, and lets you access the type libraries provided by other applications.

What are binary and project compatibility?


Visual Basic’s Version Compatibility feature is a way of enhancing your components while
maintaining backward compatibility with programs that were compiled using earlier versions. The
Version Compatibility box, located on the Component tab of the Project Properties dialog box,
contains three options:
No Compatibility:
Each time you compile the component, new type library information is generated, including new
class IDs and new interface IDs. There is no relation between versions of a component, and
programs compiled to use one version cannot use subsequent versions.

Project Compatibility:
Each time you compile the component the type library identifier is kept, so that your test projects
can maintain their references to the component project. All class IDs from the previous version
are maintained; interface IDs are changed only for classes that are no longer binary-compatible
with their earlier counterparts. Note This is a change in Project Compatibility from Visual Basic
5.0, where all class IDs and interface IDs in the project changed if any one class was no longer
binary-compatible.

Important For the purpose of releasing compatible versions of a component, Project Compatibility
is the same as No Compatibility.

Binary Compatibility:
When you compile the project, if any binary-incompatible changes are detected you will be
presented with a warning dialog. If you choose to accept the warning, the component will retain
the type library identifier and the class IDs. Interface IDs are changed only for classes that are no
longer binary-compatible. This is the same behavior as Project Compatibility.
If, however, you choose to ignore the warning, the component will also maintain the interface IDs.
This option is only available when the compiler determines that the change was in the procedure
ID or signature of a method.

Note:: When people talk about Version Compatibility, they’re usually referring to Binary
Compatibility.

How to set a shortcut key for label?


object.KeyLabel(keycode) [= string]
You would probably create the menu item as follows:
.Add "keyFile", , , "E&xit", , vbAltMask + vbCtrlMask, vbKeyEnd
The default key label for vbKeyEnd is "End". Thus, the shortcut string will be created by default as
"Ctrl+Alt+End".

Name the four different cursor and locking types in ADO and describe them briefly ?
CURSORS::
*********
The cursor types are listed from least to most resource intensive.
Forward Only - Fastest, can only move forward in recordset
Static - Can move to any record in the recordset. Data is static and never changes.
KeySet - Changes are detectable, records that are deleted by other users are unavailable, and
records created by other users are not detected Dynamic - All changes are visible.

LOCKING TYPES::
****************
LockPessimistic - Locks the row once after any edits occur.
LockOptimistic - Locks the row only when Update is called.
LockBatchOptimistic - Allows Batch Updates.
LockReadOnly - Read only. Cannot alter the data.

Name the different compatibility types when creating a COM component.


No Compatibility - New GUID (Globally Unique Identifier) created, references from other
components will not work Project Compatibility - Default for a new component <Not as critical to
mention this one>
Binary Compatibility - GUID does not change references from other components will work

Why is it important to use source control software for source code?


Modification history. Code ownership: Multiple people cannot modify the same code at the same
time.

List the ADO objects?


Connection - Connects to a data source; contains the Errors collection
Command - Executes commands to the data source. The only object that can accept parameters
for a stored procedure Recordset - The set of data returned from the database.
Under the ADO Command Object, The Parameters collection. collection is responsible for input to
stored procedures?

What two methods are called from the ObjectContext object to inform MTS that the
transaction was successful or unsuccessful?
SetComplete and SetAbort.

What is the benefit of wrapping database calls into MTS transactions?


Aborting the transaction will undo and changes that occur within that transaction. This removes
the possibility of stranded, or partial data

Describe and In Process vs. Out of Process component. Which is faster?


An in-process component is implemented as a DLL, and runs in the same process space as its
client app, enabling the most efficient communication between client and component. Each client
app that uses the component starts a new instance of it.
An out of process component is implemented as an EXE, and unlike a dll, runs in its own process
space. As a result, exe's are slower then dll's because communications between client and
component must be marshaled across process boundaries. A single instance of an out of process
component can service many clients.

How would you declare and raise custom events in a class?


a) Public Event OnVarChange();
b) RaiseEvent OnVarChange[(arg1, arg2, ... , argn)]

What is the difference between a Property Let and Property Set procedure?
Let - for simple variable
Set - for object

What is the difference between ANSI and UNICODE strings when passed as arguments to
a DLL?
ANSI - one byte for a char UNICODE - two bytes per char - works only on NT

What is the difference in passing values ByRef or ByVal to a procedure?


ByRef -pass the address (for string -address of address of first byte)
BY REF IS VERY USEFULL When the contents itself are being modified, when there is large
data. Multiple arguments are needed to be returned, instead they can be passed as reference.
ByVal -pass the value (for string -it is the address of first byte)

What is the purpose of the DoEvents command?


Fields execution so that the operating system can process other events. Returns number of open
forms. Useful for things like ‘cancel search’ in Windows

Name and define the logical tiers in a traditional 3-tiered architecture?


Presentation logic - front end (HTML, Visual Basic forms)
Business Logic - Applications and components that encapsulate business logic
Data end - databases to store data

What is the difference between a PictureBox and Image control?


Image Control - Use this to display a picture. Use it over the PictureBox because it takes less
operating system resources
PictureBox- While it can display pictures, it also acts as an area on which you can print text and
graphics. Use it for home-grown graphics or print previews

Under which circumstance does a VB application ignore a Timer event?


When the system is really busy doing something else and when DoEvents is being executed

What does the NewIndex property return?


Used to retrieve the index of the item most recently added to a ListBox or ComboBox control

What is the purpose of the ClipControls property on a form or container?


Returns or sets a value that determines whether graphics methods in Paint events repaint the
entire object or only newly exposed areas. Also determines whether the Microsoft Windows
operating environment creates a clipping region that excludes non-graphical controls contained
by the object. Read-only at run time.

What is the purpose of the AutoRedraw property on a form or container?


Setting AutoRedraw to True automatically redraws the output from these methods in a Form
object or PictureBox control when, for example, the object is resized or redisplayed after being
hidden by another object

Have you ever used Collections? Collection Classes?


A collection is a set of Repository objects that are all connected to a common source object via a
relationship collection. A collection provides a way to connect a group of dependent objects with
an object that ‘contains’ them. For example, an Invoice object might have a collection of LineItem
objects.

What version control systems have you used?


TLIB 16-Bit add-in

How about any other database engines?


Apollo OLE DB ,Apollo Server ,Apollo SQL ,FUNCky ,R&R Report Writer

What kind of components can you use as DCOM servers?


active-x components, Com

Dim x, y as integer. What is x and y data type?


X as variant and y as integer.

What is the size of the variant data type?


The Variant data type has a numeric storage size of 16 bytes and can contain data up to the
range of a Decimal, or a character storage size of 22 bytes (plus string length), and can store any
character text.

What is the return type of Instr and Strcmp?


Instr – integer (Numeric position)
Strcmp - integer ( if both the string are equal they result = 0)
Strcmp (Str1, Str2, Comparetype)
Comparing mode = 0 – Binary Comparing
1 – Textual Comparing
What is the max size allowed for Msgbox Prompt and Input Box?
1024

Max label caption length. –


2,048

Max Text box length –


32,000

Max Control Names length –


255.

Extension in Visual Basic


Frm, bas, cls, res, vbx, ocx, frx, vbp, exe

What is frx?
When some controls like grid and third party control placed in our application then it will create frx
in run time.

Name some date function


Dateadd(), Datediff(), Datepart(), Cdate()

What will be the result for 15/4 and 15\4


15/4 = 3.75 and 15\4 = 3

What is keyword used to compare to objects?


ISOperator – Returns Boolean.

How many procedures are in VB?


2. function and sub procedures. Function Will return value but a sub procedure wont return
values…

Where will we give the option explicit keyword and for what?
In the general declarations section. To trap undeclared variables.

What is Friend Variable?


Scope sharable between projects.

What is binding? What are types of binding?


Assigning variable with defined memory space. Late Binding - Memory size is allotted in later
stage.
Ex:- Dim x as object
Early Binding - Memory size is allotted while declaring itself. New Key word is important.
Ex:- Dim x as New Object

What is the difference between Property Get, Set and Let.


Set – Value is assigned to ActiveX Object from the form.
Let – Value is retried to ActiveX Object from the form.
Get- Assigns the value of an expression to a variable or property.

What is Mask Edit and why it is used?


Control. Restricted data input as well as formatted data output.

Drag and Drop state numbers and functions.


State 0 – Source control is being dragged with the range of a target.
1 – Out of the range of a target.
2 – One positon in the target to another.

What are the type of validation available in VB?


Field, Form

With in the form we want to check all the text box control are typed or not? How?
For each currentcontrol in controls if typeof currentcontrol is TextBox then end if next

What is control array and How many we can have it with in the form?
Group of control share the same name. Max 32, 767.

What is the default model of the form? And what is it number?


VbModaless – 0 (Zero) – We can able to place another window above this form.

Suppose from form1 to form2 object property settings will arise to ?


Invalid procedure call or argument (Run time error – 5)

What is the diff between the Std and Class Module?


Std Global with in the project. Cls Global through out the all project only thing is we want to set
the type lib. Class Modules can be Instantiated.

Different type of Instantiation?


Private – Only for the Specific Module.
Public not creatable – Private & Public
Multi Use - Variable we have to declare.
Single Use – Not possible through dll.
Global Multiuse – Have variable not Required to
Declare. Global Single Use - Only for exe.

How to declare Dll Procedure?


Declare function "<Function Name>" lib "<Lib Name>" Alias "<Alias Name>" (Arg, …..) as Return
type.

What is MDI form? MDI Styles?


We can have only one MDI form for a project. Multiple Document Interface. This form type is
VBModal. We have set the Child property of the forms to True to place forms inside this MDI.
Style availables 1. VbCascade 2. VbTitle Horizontal

How many images can be placed in the image list ?


64

Diff type of Datatypes?


LOB (Large Object Data type).
CLOB (Stores Character Objects).
BLOB ( Store Binary Objects such as Graphic, Video Chips and Sound files).
BFILE(Store file pointers to LOB It may Contain filename for photo’s store on CD_ROM).

What is Zorder Method?


Object.Zorder = 1 or 0 Place a Specified mdiform form or control at the front or back of the z-
order with n its Graphical Level.

What is diff between the Generic Variable and Specific Variable?


Generic Variable:Create Object Ex:-Ole-Automation . No need refer the object library.
Specific Variable: Binding Procedure Early and Late Binding ( Can be Remove from the Memory).

What are properties available in Clip Board?


No Properties Available. Only the methods they are SetText, GetText, Setdata(), Getformat(),
Clear.

What is Dll?
Libraries of procedure external to the application but can be called from the application.

What is Tabstrip control? What is the starting Index value? How to locate it?
It is tab control to place our controls with in the form in multiple sheets.
Index starts with 1. And to identify
If Tabstrip1.SelectedItem.Index = 1 Then
…..
End if

Why we use Treeview Control?


To list the hierarchial list of the node objects. Such of files and Directories.

Why we need OLE-Automation? Advantages?


Enables an application to exposes objects and methods to other Applications.
No need to reserve memory. No need to write functions.
Object library that simplify programming tasks. i.e., No need to Object library. (OLB, TLB).

What is the diff between the Create Object and Get object?
Create Object - To create an instance of an object.
Get Object – To get the reference to an existing object.

Have you create Properties and Methods for your own Controls?
Properties – Public variable of a Class
Method – Public procedure of a class

What is Collection Objects?


Similarly to arrays but is preferred over an array because of the following reasons.
1. A collection objects uses less Memory than an array.
2. It provides methods to add and delete members.
3. It does not required reason statement when objects are added or deleted.
4. It does not have boundary limitations.

What is Static Variable?


Its Scope will be available through out the life time.

Private Dim x as integer. Is it true?


No. Private cannot be used in front of DIM.

What is Implicit?
Instance of specific copy of a class with its own settings for the properties defined in that class.
Note: The implicity defined variable is never equal to nothing.

What are the scope of the class?


Public , private, Friend

Can we able to set Instancing properties like Singleuse, GlobalSingleuse to ActiveXDll?


No.

In project properties if we set Unattended what is it mean?


This cannot have user interface. This can be used for the COM creation.

What are the Style Properties of Combo Box?


Simple, Dropdown list – We can type and select.
Dropdown Combo – Only Drop Down.

What are the Style properties of List Box?


Simple –Single Select , Extended. – Multiple Select.

What are the different types of Dialog Box?


Predefined, Custom, User Defined.

What is Parser Bug?


It is difficult to use database objects declared in a module from within a form.

What is the Dll required for running the VB?


Vbrun300.dll

Can We create CGI scripts in VB?


Yes.

How to change the Mouse Pointer?


Screen.MousePointer = VBHourGlass/VBNormal.

How to check the condition in Msgbox?


If(Msgbox("Do you want to delete this Record",VbYesNo)=VbYes)Then End if

What is difference between datagrid and flexgrid?


Datagrid – Editable.
Flexigrid – Non-Editable. (Generally used for Read only purpose.)

What is ADO? What are its objects ?


ActiveX Data Object. ADO can access data from both flat files as well as the databases. I.e., It is
encapsulation of DAO, RDO, and OLE that is why we call it as OLE-DB Technology. Objects are
Connection, Record Set, Command, Parameter, field, Error, Property.

What is Dataware Control?


Any control bound to Data Control.
Ex:- Textbox, Check Box, Picture Box, Image Control, Label, List box, Combo Box, DB Combo

What are two validate with Data Control?


Data_Validate, Data_Error.

Record set types and Number available in VB?


3. 1- Dynaset, 0 – Table, 2 – Snap Shot.

Referential Integrity (Take care By jet database Engine).


Cascade Delete, Cascade Update – is done setting property of Attributes.
DbRelationDeleteCascade,
DbRelationUpdateCascade.

What are the locks available in Visual Basic?


Locking is the process by which a DBMS restricts access to a row in a multi-user environment
4 types of locks. They are
1.Batch Optimistic
2.Optimistic
3.Pessimistic
4.ReadOnly
What is the diff between RDO and ADO?
RDO is Hierarchy model where as ADO is Object model. ADO can access data from both flat files
as well as the data bases. I.e., It is
encapsulation of DAO, RDO , OLE that is why we call it as OLE-DB Technology.

How can we call Stored procedure of Back End in RDO and ADO ?
In RDO – We can call using RDO Query Objects.
In ADO – We can call using Command Objects.

What is the different between Microsoft ODBC Driver and Oracle OBDC Driver?
Microsoft ODBC driver will support all the methods and properties of Visual Basic. Where as the
Oracle not.

What are the Technologies for Accessing Database from Visual Basic?
DAO, Data Control, RDO, ODBCDIRECT, ADO, ODBC API.

Calling Stored Procedures in VB?


1. Calling Simply the Procedure with out Arguments "Call ProcedureName}"

If it is with Arguments Means then


Declare the Query Def qy
Set Qy as New Query def
Qy.SQL = "{Call ProcedureName(?,?,?)}"
qy(0)=val(Txt1.Text)
qy(1)=val(Txt2.Text)
qy(2)=val(Txt3.Text)
Set Rs = Qy.OpenresultSet
Txt(1)=Rs.RdoColumns(0)

What is MAPI ?
Messaging Application programing Interface.

Different type of Passing Value?


By value, By ref, Optional, Param Array.
Note:- Optional keyword cannot be used while declaring arguments for a function using param
array.

What are the different types of error?


Syntax Errors, Runtime , Logic.

What is Seek Method which type of record set is available this?


Only in DbOpenTables.
Syntax: rs.index = "empno"
rs.seek "=" , 10
If with our setting the rs.index then run time error will occur.

What is Centralization Error Handling?


Writing funciton and calling it when error occurs.

Handling Error in Calling chain.


This will call the top most error where the error is handled.

To connect the Data Control with Back end What are all the properties to be set?
Data source Name, Record Source Name

How to trap Data Base Error?


Dim x as RDOError
X(0).Des
X(1).Number

What is view Port?


The area under which the container provides the view of the ActiveX Document is known as a
view port.

What methods are used for DBGrid in unbound mode?


AddData, EditData, Readdata, WriteData.

How to increase the Date corresponding with month,date,year?


DateSerial(year(Now),Month(Now)+1,1)
Hour, min, sec, month, year, DateSerial, dateadd, datediff, weekday, datevalue,
timeserial,timevalue.

Setting the Cursors.


Default Cursor – 0
ODBC Cursor (Client side) – 1
ServerSide Cursors (More Network traffic) - 2

Cursor management
Client Batch – Batch up the Multiple SQL Statements in a single string and Send them to the
Server at one time.

What are the record set types?


RdOpenFowardOnly 0 (Default used only for the read only purpose)
RdOpenStatic 1
RdOpenDynamic 2
RdOpenKeySet 3 (Normally used for the live project)

Diff types of Lock Types?


RdConcurReadOnly 0 (Default)
RdConcurLock 1 (Pessimistic Locking)
RdConcurRowver 2 (Optimistic Lociking)
RdConcurValues 3
RdConcurBatch 4

What are the RDO Methods and Events?


Methods Events
Begin Trans Validate
Commit Trans Reposition
Rollback Trans Error
Cancel Query Complied
Refresh
Update Controls
Update row

What is Static Cursor?


In ADO Snap Shot is called so.

What is Mixed Cursors?


Static + Keyset

What is FireHouse Cursors?


Forward Only Some time Updateable
What is DBSqlPassThrough?
It will By Passing the Jet Query Processor.

What is DBFailError?
Rolls Back updates if any errors Occurs.

DSN Less Connection?


"Server=Oracle; Driver={Microsoft ODBC for Oracle};"

What is RdExecDirect?
Bypasses the Creation of a stored procedure to execute the query. Does not apply to Oracle.

RdoParameter Object RdoParameterConstant


Direction RdparamInput
RdparamInputOutput
RdParamOutput
Name
Type]
Value

How to implement hotkeys for text boxes


Create a label with your hotkey. Set the tabindex of the label
to one less then the TabIndex of the textbox

How to create a textbox that lets you insert tabs


Simply set tabstop on all the controls in a particular form to false.

How to make text box that displays "*" when you tpye in (For password purpose)
Just set the PasswordChar property of the text box or rich text box to
"*" or your favorite character.

How to create message boxes with those cool red X's


MsgBox "My Message", vbCritical, "My Title"

How to format dates so that they look correct in all date and langauge formats
Command1.Caption = Format$(Date, "Short Date")

How to compare two strings using wildcards


Dim Mystr As String
Mystr = "Street"
If Mystr Like "S*" Then
MsgBox "Found"
Else
MsgBox "Not found"
End If

How to create a label that is vertically oriented


Private Sub Form_Activate()
Dim s As String
Label1.Caption = "Binoj's VB Land"
For i = 1 To Len(Label1)
s = s & Mid$(Label1, i, 1) & vbCrLf
Next
Label1 = s
End Sub

Note: You need to drag the Label1 vertically

How to create multi-column combo box


Add Microsoft Forms 2.0 control, there's a combo that
supports multicolumns.

Combo1.Clear
Combo1.ColumnCount = 2
Combo1.ListWidth = "6 cm" 'Total width
Combo1.ColumnWidths = "2 cm;4 cm" 'Column widths
Combo1.AddItem "Text in column 0"
Combo1.List(0, 1) = "Text in column 1"

How to set the source of one combo to be the contents of another combo
sub comboA_click()
comboB.text = comboA.text
end sub

If you want the value selected in comboA to be added to the


list of choices in comboB, the following code will do it:

sub comboA_click()
comboB.AddItem comboA.text
end sub

How to get ride of the quotation marks when saving strings in a text file
Use the Print # statement instead of the Write # statement.
The Print # statement doesn't put quotation marks around your strings.

How to include a .wav file in a .exe file


Use a resource file. Include the .wav file as a custom resource.
Check the resource files in the help and look at the loadresdata
function.

How to enable the form close button


dim bCanClose as Boolean

Then put this into the form's QueryUnload event:

If bCanClose = false then cancel = true

How to add text items with a different color in a Listbox


Use the MSFlexGrid control

How to load text file into a Listbox


Statusbar1.Panels(1).Text = "Start"

How to change the content of a Statusbar at run time


Private Sub Command1_Click()
Dim StringHold As String

Open "C:\test.txt" For Input As #1


List1.Clear
While Not EOF(1)
Input #1, StringHold
List1.AddItem StringHold
Wend
Close #1
End Sub

How to detect the change in the Textbox


Private bChanged As Boolean

Private Sub Text1_Change()


bChanged = True
End SubPrivate

Sub Form_Unload(Cancel As Boolean)


If bChanged Then
If Msgbox("Save Changes", vbYesNo, "Save") = vbYes Then
'Save Changes Here.
End If
End If
End Sub

How to make a menu popup from a Commandbutton


First, create a menu with the menu editor.
It should look like this:

Button Menu (Menu name: mnuBtn, Visible: False - Unchecked)


....SubMenu Item 1 (Menu name: mnuSub, Index: 0)
....SubMenu Item 2 (Menu name: mnuSub, Index: 1)
....SubMenu Item 3 (Menu name: mnuSub, Index: 2)
....SubMenu Item 4 (Menu name: mnuSub, Index: 3)

I hope you understand the above. Also create a CommandButton.

Then add this code:

Private Sub mnuSub_Click(Index As Integer)


Call MsgBox("Menu sub-item " & Index + 1 & " clicked!", _
vbExclamation)
End Sub

Private Sub Command1_Click()


Call PopupMenu(mnuBtn)
End Sub

P.S. For added effect, replace the line:

Call PopupMenu(mnuBtn)

With this one:

Call PopupMenu(Menu:=mnuBtn, X:=Command1.Left, Y:=Command1.Top + _


Command1.Height) ' Even more viola!
Or this one:

Call PopupMenu(mnuBtn, vbPopupMenuCenterAlign, Command1.Left + _


(Command1.Width / 2), Command1.Top + Command1.Height)

How to copy the content of text1 into text2


If you have VB6.0 you can use the Replace Function to
easily replace any Character(s) with something else, eg.

Text2 = Replace(Text1, vbCrLf, "


" & vbCrLf)

Otherwise, you'll need to step though the Text yourself


checking for instances of vbCrLf, e.g.

code:

Dim sString As String


Dim sNewString As Strings

String = Text1
While Instr(sString, vbCrLf)
sNewString = sNewString & Left(sString, _
Instr(sString, vbCrLf) - 1) & "
" & vbCrLf
sString = Mid(sString, Instr(sString, vbCrLf) + 2)
Wend
Text2 = sNewString

How to encrypt text


encryption function :

Public Function Encrypt(ByVal Plain As String)


For I=1 To Len(Plain)
Letter=Mid(Plain,I,1)
Mid(Plain,I,1)=Chr(Asc(Letter)+1)

Next
Encrypt = Plain
End Sub

Public Function Decrypt(ByVal Encrypted As String)


For I=1 to Len(Encrypted)
Letter=Mid(Encrypted,I,1)
Mid(Encrypted,I,1)=Chr(Asc(Letter)-1)

Next
Decrypt = Encrypted
End Sub

Print Encrypt("This is just an example")


Print Decrypt("Uijt!jt!kvtu!bo!fybnqmf")

How to create menus at run time


Dim index As Integer
index = mnuHook.Count
Load mnuHook(index)
mnuHook(index).Caption = "New Menu Entry"
mnuHook(index).Visible = True

'mnuHook is the menu that the new entry appears after

How to put 13 X 13 bitmaps into a menu


'Add a picturebox control.
'Set 'Autosize' to 'True' with a bitmap (not an Icon)
'at a maximum of 13X13.

'Place these Declarations in BAS module

Private Declare Function VarPtr Lib "VB40032.DLL" (variable As Any) As Long


Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long)
As Long
Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal
nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal
hBitmapChecked As Long) As Long

Const MF_BYPOSITION = &H400&

'Place this code into the form load event:

Dim mHandle As Long, lRet As Long, sHandle As Long, sHandle2 As Long


mHandle = GetMenu(hwnd)
sHandle = GetSubMenu(mHandle, 0)
lRet = SetMenuItemBitmaps(sHandle, 0, MF_BYPOSITION, imOpen.Picture, imOpen.Picture)
lRet = SetMenuItemBitmaps(sHandle, 1, MF_BYPOSITION, imSave.Picture, imSave.Picture)
lRet = SetMenuItemBitmaps(sHandle, 3, MF_BYPOSITION, imPrint.Picture, imPrint.Picture)
lRet = SetMenuItemBitmaps(sHandle, 4, MF_BYPOSITION, imPrintSetup.Picture,
imPrintSetup.Picture)
sHandle = GetSubMenu(mHandle, 1)
sHandle2 = GetSubMenu(sHandle, 0)
lRet = SetMenuItemBitmaps(sHandle2, 0, MF_BYPOSITION, imCopy.Picture, imCopy.Picture)

How to round a number to nearest 10, 100, 1000, etc.


'Example - round to nearest 100
Round(RatioBolus * Val(txtDW), 100)

'Put this in BAS module


Public Function Round(Dose, Factor)
'Purpose: Round a dose
'Input: Dose, Factor (10, 100, 1000, etc)
'Output: Rounded dose

Dim Temp As Single


Temp = Int(Dose / Factor)
Round = Temp * Factor
End Function

How to shell to web address


'Put this in the click event of a control

Dim iRet As Long


Dim Response As Integer

Response = MsgBox("You have chosen 'www.rxkinetics.com', " & vbCrLf & "which
will launch your web browser and" & vbCrLf & "point you to the Kinetics web _
site." & vbCrLf & vbCrLf & "Do you wish to continue", vbInformation + _
vbYesNo, "www.rxkinetics.com")
Select Case Response
Case vbYes
iRet = Shell("start.exe http://www.rxkinetics.com", vbNormal)
Case vbNo
Exit Sub
End Select

How to perform generic error handling routine


'Begin error handle code
On Error GoTo ErrHandler

'Insert code to be checked

'Stop error trapping & exit function


On Error GoTo 0
Exit Function

ErrHandler:
Dim strErr As String
strErr = "Error " & Err.Number & " " & Err.Description
MsgBox strErr, vbCritical + vbOK, "Error message"

How to check for 4-digit year date


Public Function ValidDate(MDate)
'Purpose: Check for 4 digit yyyy DATE
'Input: String from text box
'Output: True or False

'Default is false
ValidDate = False

'Exit if length less than "m/d/yyyy"


If Len(MDate) < 8 Then Exit Function

'Exit if not a valid date wrong


If IsDate(MDate) = False Then Exit Function

'Exit if not ending or starting with "yyyy"


Dim StartDate As String
Dim EndDate As String

EndDate = Right(MDate, 4)
StartDate = Left(MDate, 4)
If ValidChar(EndDate, "0123456789") = False And _
ValidChar(StartDate, "0123456789") = False Then Exit Function

'Set to true if it passes all these tests!


ValidDate = True

End Function

How to calculate the age based on date of birth


'Convert text to Date
Dim Birth as Date
Birth = DateValue(txtDOB)

'Calculate age
Dim Age as Integer
Age = Int(DateDiff("D", Birth, Now) / 365.25)

How to tell the difference between CDbl and Val function


print Val("12345")
12345

print Val("12,345")
12

print CDbl("12,345")
12345

print CDbl("12345")
12345

How to code Toolbar click events


Private Sub Toolbar1_ButtonClick(ByVal Button As Button)
'Handle button clicks
Select Case Button.Key
Case Is = "Exit"
'If user clicks the No button, stop Exit
If MsgBox("Do you want to exit", vbQuestion + vbYesNo + _
vbDefaultButton2, "Exiting Code Bank") = vbNo Then Exit Sub
Call ExitProgram
Case Is = "Repair"
Call Repairdb
Case Is = "Delete"
Call DeleteRoutine
Case Is = "Edit"
Call EditRoutine
Case Is = "New"
Call NewRoutine
Case Is = "Copy"
Call CopyToClipboard
Case Is = "Help"
Call ShowHelpContents
End Select

End Sub
How to copy text to the clipboard
'First clear the clipboard
Clipboard.Clear

'Select Text in txtBox & copy to clipboard


Clipboard.SetText txtBox.Text, vbCFText

How to copy text from the clipboard


'Select Text in txtBox & copy from clipboard
txtBox.SelText = Clipboard.GetText

'Or replace entire text


txtBox.Text = Clipboard.GetText

How to use Undo function for Textbox or Combobox


'Windows API provides an undo function

'Do the following declares:


Declare Function SendMessage Lib "User" (ByVal hWnd As _
Integer, ByVal wMsg As Integer, ByVal wParam As _
Integer, lParam As Any) As Long

Global Const WM_USER = &h400


Global Const EM_UNDO = WM_USER + 23

'And in your Undo Sub do the following:


UndoResult = SendMessage(myControl.hWnd, EM_UNDO, 0, 0)
'UndoResult = -1 indicates an error.

How to toggle between Insert & Overwrite in a text box


1. Put a label on the form called 'lblOVR'

2. Put this code in KeyUp event of Form


Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyInsert Then
If lblOVR = "Over" Then
lblOVR = "Insert"
Else
lblOVR = "Over"
End If
End If
End Sub

3. Put this code in KeyPress event of Text Box


Private Sub txtText_KeyPress(KeyAscii As Integer)
'Exit if already selected
If txtText.SelLength > 0 Then Exit Sub

If lblOVR = "Over" Then


If KeyAscii <> 8 And txtText.SelLength = 0 Then
txtText.SelLength = 1 '8=backspace
End If
Else
txtText.SelLength = 0
End If
End Sub

How to use the advanced feature of MsgBox


'This method works well, unless you need to save the
'answer from your Select Case for later use. If you do,
'you'll need to use the more standard form of
'prompting for the answer in a variable.

Select Case MsgBox("Would you like to save the file somefile.txt", _


vbApplicationModal + vbQuestion + YesNoCancel, App.Title)

Case vbYes
'Save then file
Case vbNo
'Do something for No
Case vbCancel
'Do something else for Cancel
End Select

'If only need yes/no answer then this code may


'work better

If MsgBox("Do you really want to exit Code Bank", _


vbQuestion + vbYesNo + vbDefaultButton2, "Exiting Code Bank") = vbNo Then Exit Sub

How to capture keys pressed to use as keyboard shortcuts


'Set the KeyPreview Property of the form to True

'Put this code in the KeyDown even of the form


'Look up Key code constants in VB help for other key codes

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)


'Capture Alt key
Dim AltDown
AltDown = (Shift And vbAltMask) > 0

'Alt + A = Shortcut for AddNew


If AltDown And KeyCode = vbKeyA Then ' A = Add
Data1.Recordset.AddNew
End If

End Sub

How to call a Command button without clicking it


cmdCommand = True
How to make Crystal Reports run faster
If Crystal Reports' speed is lacking although your report contains no large
graphics or large numbers of groups, change these two lines in your CRW.INI
file to solve disk swapping problems:

MaxRecordMemory=0
MetapageSpillLimit=100

How to fix the problem of playing the .wav file only once
Always include the "Close" statement before "Open"

MMControl1.Command = "Close"
MMControl1.Filename = "C:\1.mid"
MMControl1.Command = "Open"
MMControl1.Command = "Play"

How to show a modeless form


frmPass.Show vbModeless
How to show a modal form
frmPass.Show vbModal

How to change the button's foreground color


To use the Microsoft Control: Microsoft Forms 2.0 Object Library

How to change the mouse pointer


Screen.MousePointer = 0 'Default
Screen.MousePointer = 11 'Hourglass

How to use SetAttr function


SetAttr "C:\data.txt", vbNormal
SetAttr "C:\data.txt", vbReadOnly

How to add something to an existing file by overwriting it


Open "C:\data.txt" For output As #1
Do While Not EOF(1)
Print #1, "Overwrite the file!"
Close #1

How to add something to an existing file (with data)


Open "C:\data.txt" For append As #1
Do While Not EOF(1)
Print #1, "Append Something!"
Close #1

How to read a file character by character


Do While Not EOF(1)
myChar = Input(1, #1) 'one char a line
WholeWord = WholeWord & myChar
Loop

How to search Listboxes as you type


By changing the SendMessage Function's "ByVal wParam as Long" to

"ByVal wParam as String", we change the search ability from first


letter only, to "change-as-we-type" searching.

Here's some example code. Start a new Standard EXE project and add

a ListBox (List1) and a TextBox (Text1), then paste in the


following code :
option Explicit

'Start a new Standard-EXE project.


'Add a textbox and a listbox control to form 1
'Add the following code to form1:

private Declare Function SendMessage Lib "User32" Alias "SendMessageA"


(byval hWnd as Long, byval wMsg as Integer, byval wParam as string,
lParam as Any) as Long

Const LB_FINDSTRING = &H18F

private Sub Form_Load()

With List1
.Clear
.AddItem "RAM"
.AddItem "rams"
.AddItem "RAMBO"
.AddItem "ROM"
.AddItem "Roma"
.AddItem "Rome"
.AddItem "Rommel"
.AddItem "Cache"
.AddItem "Cash"
End With

End Sub

private Sub Text1_Change()


List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, Text1,
byval Text1.Text)
End Sub

How to get the Number of Lines In a TextBox


This method is straightforward: it uses SendMessage to retrieve the

number of lines in a textbox. A line to this method is defined as a

new line after a word-wrap; it is independent of the number of hard

returns in the text.

Declarations

Public Declare Function SendMessageLong Lib "user32" Alias

"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long,ByVal

wParam As Long, ByVal lParam As Long) As Long

Public Const EM_GETLINECOUNT = &HBA


The Code

Sub Text1_Change()
Dim lineCount as Long
On Local Error Resume Next

'get/show the number of lines in the edit control


lineCount = SendMessageLong(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
Label1 = Format$(lineCount, "##,###")
End Sub

Special Note

The textbox passed to the SendMessage API must have its multiline

property set to true at design time. The EM_GETLINECOUNT message

does not pass additional parameters to the API in the wParam or lParam
variables. These must be 0.

How to get rid of leading zeros in strings


Function KillZeros(incoming as string) as string
KillZeros = CStr(CInt(incoming))
End Function

How to use Mid function


Dim MyString, FirstWord, LastWord, MidWords
MyString = "Mid Function Demo" ' Create text string.
FirstWord = Mid(MyString, 1, 3) ' Returns "Mid".
LastWord = Mid(MyString, 14, 4) ' Returns "Demo".
MidWords = Mid(MyString, 5) ' Returns "Function Demo".

How to use Left function


Dim AnyString, MyStr
AnyString = "Hello World" ' Define string.
MyStr = Left(AnyString, 1) ' Returns "H".
MyStr = Left(AnyString, 5) ' Returns " Hello".

How to use Right function


Dim AnyString, MyStr
AnyString = "Hello World" ' Define string.
MyStr = Right(AnyString, 1) ' Returns "d".
MyStr = Right(AnyString, 6) ' Returns " World".
MyStr = Right(AnyString, 20) ' Returns "Hello World".

How to use LTrim, RTrim, and Trim Functions


Dim MyString, TrimString
MyString = " <-Trim-> " ' Initialize string.
TrimString = LTrim(MyString) ' TrimString = "<-Trim-> ".
TrimString = RTrim(MyString) ' TrimString = " <-Trim->".
TrimString = LTrim(RTrim(MyString)) ' TrimString = "<-Trim->".
' Using the Trim function alone achieves the same result.
TrimString = Trim(MyString) ' TrimString = "<-Trim->".

How to use Len function


Dim MyString
MyString = "Hello World" ' Initialize variable.
MyLen = Len(MyString) ' Returns 11.

How to add records in the database


Private dbCurrent As Database
Private recCategories As Recordset

Set dbCurrent = OpenDatabase(cFilePathMajor & "\Record.mdb", False)


Set recCategories = dbCurrent.OpenRecordset("select * from Record")

With recCategories
.AddNew
!Date = Date
!Time = Time
.Update
End With

recCategories.Close
dbCurrent.Close
Set dbCurrent = Nothing

How to use Val function


This example uses the Val function to return the numbers contained in a string.

Dim MyValue
MyValue = Val("2457") ' Returns 2457.
MyValue = Val(" 2 45 7") ' Returns 2457.
MyValue = Val("24 and 57") ' Returns 24.

How to use the advanced feature of Input Box


Dim Message, Title, Default, MyValue
Message = "Enter a value between 1 and 3" ' Set prompt.
Title = "InputBox Demo" ' Set title.
Default = "1" ' Set default.
' Display message, title, and default value.
MyValue = InputBox(Message, Title, Default)

' Use Helpfile and context. The Help button is added automatically.
MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)

' Display dialog box at position 100, 100.


MyValue = InputBox(Message, Title, Default, 100, 100)

How to use Str function


This example uses the Str function to return a string representation

of a number. When a number is converted to a string, a leading


space is always reserved for its sign.
Dim MyString
MyString = Str(459) ' Returns " 459".
MyString = Str(-459.65) ' Returns "-459.65".
MyString = Str(459.001) ' Returns " 459.001".

How to use Instr function


This example uses the InStr function to return the position

of the first occurrence of one string within another.

Dim SearchString, SearchChar, MyPos


SearchString ="XXpXXpXXPXXP" ' String to search in.
SearchChar = "P" ' Search for "P".

' A textual comparison starting at position 4. Returns 6.


MyPos = Instr(4, SearchString, SearchChar, 1)

' A binary comparison starting at position 1. Returns 9.


MyPos = Instr(1, SearchString, SearchChar, 0)

' Comparison is binary by default (last argument is omitted).


MyPos = Instr(SearchString, SearchChar) ' Returns 9.

MyPos = Instr(1, SearchString, "W") ' Returns 0.

How to read a file line by line


Do While Not EOF(1)
Line Input #1, LineHolder
LineHolder = LineHolder + 1
Loop

How to select all text when a TextBox gets focus


Public Sub TextSelected()
Dim tBox As TextBox
Set tBox = Screen.ActiveControl
If TypeOf tBox Is TextBox Then
tBox.SelStart = 0
tBox.SelLength = Len(tBox)
End If
End Sub

How to round a number


Function RoundNumber(lNumber, Optional iDecimalPlaces As Integer = 1)
RoundNumber = Int(lNumber * (10 ^ iDecimalPlaces) + 0.5) / _
(10 ^ iDecimalPlaces)
End Function

How to place a Combo Box onto a Toolbar


To put a combo box on a toolbar, create a place holder and position the

combobox above the place holder in the z-order. You can't place the combo

box inside the place holder. Instead, follow these steps:


1) Create a button with the PlaceHolder style.
2) Show the form.
3) In the Form_Load event set the Top and Left properties of the combo
box to the same value as the PlaceHolder button.
4) Set the z-order of the combo box to zero to bring it to the front.
5) In the Form_Resize event, make sure the Top and Left properties of the
combo box are the same as the PlaceHolder button.

Private Sub Form_Load()


Dim btnX As Button
Me.Show
Set btnX = Toolbar1.Buttons.Add()
btnX.Style = tbrSeparator
Set btnX = Toolbar1.Buttons.Add()
btnX.Style = tbrPlaceholder
btnX.Key = "combo"
btnX.Width = 2000
With Combo1
.ZOrder 0.Width = Toolbar1.Buttons("combo").Width
.Top = Toolbar1.Buttons("combo").Top
.Left = Toolbar1.Buttons("combo").Left
End With
End Sub

--A. Nicklas Malik

How to make an internet connection


Dim res
res = Shell("rundll32.exe rnaui.dll,RnaDial " _

& "connection_name", 1)

How to determine if your program is already running


Put this code in the load event of the first form that the program loads.

If App.PrevInstance = True Then


Call MsgBox("This program is already running!",_
vbExclamation)
End
End If

Tip by James Limm

How to capitalize the first letter of each word in a string


StrConv("my all lowercase string", vbProperCase)

Will print:
'My All Lowercase String'

How to get only the file name


MsgBox OnlyFileName("c:\windows\win.com","\") 'gives you 'win.com'
Function OnlyFileName(vPath$, vSlash$) As String
Dim p%

OnlyFileName = vPath
For p% = Len(vPath$) To 0 Step -1
If Mid$(vPath$, p%, 1) = vSlash$ Then
OnlyFileName = Mid$(vPath$, p% + 1, Len(vPath$) - p% + 1)
Exit Function
End If
Next p%
End Function

How to use free file number when reading or writing a file


Private Sub GetFile(FileName$)
Dim nFilenumber%
Dim tmpLine$

Text1.Text = ""
nFilenumber = FreeFile
Open FileName$ For Input As #nFilenumber
Do While Not EOF(nFileNumber)
Input #nFileNumber, tmpLine
Text1.Text = Text1.Text & tmpline
Loop
Close #nFileNumber
End Sub

How to reboot the system from VB


Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long,
ByVal dwReserved As Long) As Boolean

Public Const EWX_FORCE = 4


Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1

...
Dim res As Boolean
res = ExitWindowsEx (EWX_REBOOT, 0)
If Not res Then
MsgBox "Function failed"
Else
MsgBox "Shutting down Windows NOW!"
End
EndIf

How to repair Access database in VB


Private Sub Command1_Click()
On Error GoTo Repair_Error
Dim MDB_Name As String

CommonDialog1.Filter = "Access (*.mdb)|*.mdb"


CommonDialog1.Flags = &H1000
CommonDialog1.FilterIndex = 1
CommonDialog1.Action = 1
If CommonDialog1.FileName <> "" Then
Screen.MousePointer = 11
MDB_Name = CommonDialog1.FileName
RepairDatabase (MDB_Name)
Screen.MousePointer = 0
MsgBox "Database repaired successfully", 64, "Repair"
End If
Screen.MousePointer = 0
Exit Sub
Repair_Error:
MsgBox "Error when repairing database", 16, "Error"
Screen.MousePointer = 0
Exit Sub
End Sub

How to include an '&' on a Label


Since an ampersand (&) on a label will indicate an access key (with

an underscore below to use with the Alt Key selection combination),

you may want to have an ampersand actually appear as part of the

text of the label.

To accomplish this, simply put two ampersands together like ... &&

How to set Tab Stops in a ListBox


Want to create a simple list box that shows several fields of data

The columns property of the list box does not do this, but you can

use this function to do it.

Public Const LB_SETTABSTOPS As Long = &H192

Public Declare Function SendMessage Lib "user32" Alias _

"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _

ByVal wParam As Long, lParam As Any) As Long

Public Sub DoTabs(lstListBox As ListBox, TabArray() As Long)


'clear any existing tabs
Call SendMessage(List1.hWnd, LB_SETTABSTOPS, 0&, ByVal 0&)
'set list tabstops
Call SendMessage(List1.hWnd, LB_SETTABSTOPS, _
CLng(UBound(TabArray)) + 1, TabArray(0))
End SubFirst, set up the columns:

Dim Tabs(2) as Long


Tabs(0) = 0
Tabs(1) = 100
Tabs(2) = 200
DoTabs List1, Tabs
Then, add your items:
List1.AddItem "John" & vbTab & "Percival" & vbTab & "Content Editor"
List1.AddItem "James" & vbTab & "Limm" & vbTab & "Senior Editor"

Tip by John Percival

How to use the IIf function


This example uses the IIf function to evaluate the TestMe parameter

of the CheckIt procedure and returns the word "Large" if the

amount is greater than 1000; otherwise, it returns the word "Small".

Function CheckIt (TestMe As Integer)


CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

How to set the ToolTipText on a ListBox


Private Sub List1_MouseMove(Button As _
Integer, Shift As Integer, X As Single, Y As Single)
Dim YPos As Integer, iOldFontSize As Integer
iOldFontSize = Me.Font.Size
Me.Font.Size = List1.Font.Size
YPos = Y \ Me.TextHeight("Xyz") + List1.TopIndex
Me.Font.Size = iOldFontSize
If YPos < List1.ListCount Then
List1.ToolTipText = List1.List(YPos)
Else
List1.ToolTipText = ""
End If
End Sub

How to test for weekend


If (WeekDay (Date) MOD 6 = 1) then
Msgbox "It's the weekend!"
End if

How to rename a file


Dim OldName, NewName
OldName = "OLDFILE": NewName = "NEWFILE" ' Define file names.
Name OldName As NewName ' Rename file.

OldName = "C:\MYDIR\OLDFILE": NewName = "C:\YOURDIR\NEWFILE"


Name OldName As NewName ' Move and rename file.

How to delete a directory


' Assume that MYDIR is an empty directory or folder.
RmDir "MYDIR" ' Remove MYDIR.

How to delete a file


Kill pathname

How to do word search


Private Sub Command1_Click()
Dim X As Integer
X = FindMatch(Text1.Text, Text2.Text)
If X = 0 Then
MsgBox "Word not found"
Else
MsgBox "Word found"
End If
End Sub

1. Create a new function called FindMatch. Add the following code to


this function:

Function FindMatch(Str1 As String, Str2 As String) As Integer


Dim Match As Integer
Dim Char1 As String
Dim Char2 As String

Match = InStr(Str1, Str2)

If Match <> 0 Then


Char1 = Mid$(Str1, Match - 1, 1)
If Codes(Char1) Then
Char2 = Mid$(Str1, Match + Len(Str2), 1)
If Codes(Char2) Then
FindMatch = True: Exit Function
End If
End If
End If

FindMatch = False
End Function

2. Create a new function called Codes. Add the following code to this
function:

Function Codes(PuncStr As String) As Integer


If PuncStr = "," Or PuncStr = "." Or PuncStr = " " Or _

PuncStr = Chr(10) Or PuncStr = Chr(13) Or PuncStr = Chr(9) Then


Codes = True
Else
Codes = False
End If
End Function

How to make a form on top


Declare Function SetWindowPos Lib "User" (ByVal hWnd As Integer, ByVal
hWndinsertafter As Integer, ByVal x As Integer, ByVal Y As Integer, ByVal
cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer

Global Const HWND_TOPMOST = -1

Global Const HWND_NOTOPMOST = -2

Sub MakeTopMost (frmForm As Form, LX%, LY%, RX%, RY%)


Dim succes As Long

succes = SetWindowPos(frmForm.hWnd, HWND_TOPMOST, LX%, LY%, RX%, RY%, 0)

End Sub

Sub UnMakeTopMost (frmForm As Form)


Dim succes As Long

succes = SetWindowPos(frmForm.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, 0)

End Sub

How to reverse a string


Public Function reversestring(revstr As String) As String
' revstr: String to reverse
' Returns: The reverse string

Dim doreverse As Long

reversestring = ""
For doreverse = Len(revstr) To 1 Step -1
reversestring = reversestring & Mid$(revstr, doreverse, 1)
Next
End Function

Use

Dim strResult As String


strResult = reversestring("String")
MsgBox strResult

Tip by John Percival

How to create percentage ProgressBar


Sub Command1_Click ()
picture1.ForeColor = RGB(0, 0, 255) 'use blue bar
For i = 0 To 100 Step 2
updateprogress picture1, i
Next
picture1.Cls 'clear bar at they end
End Sub

Sub updateprogress (pb As Control, ByVal percent)


Dim num$ 'use percent
If Not pb.AutoRedraw Then 'picture in memory
pb.AutoRedraw = -1 'no, make one
End If
pb.Cls 'clear picture in memory
pb.ScaleWidth = 100 'new sclaemodus
pb.DrawMode = 10 'not XOR Pen Modus
num$ = Format$(percent, "###") + "%"
pb.CurrentX = 50 - pb.TextWidth(num$) / 2
pb.CurrentY = (pb.ScaleHeight - pb.TextHeight(num$)) / 2
pb.Print num$ 'print percent
pb.Line (0, 0)-(percent, pb.ScaleHeight), , BF
pb.Refresh 'show differents
End Sub

How to get rid of leading zeros in strings


Function KillZeros(incoming as string) as string
KillZeros = CStr(CInt(incoming))
End Function

How to create two lines on Command Button


command1.caption = "first line above" & vbCRLF & "second

line beyond.."

How to count lines in Rich Text Box


By using the SendMessage API function and the EM_GETLINECOUNT

message you could easily write a wrapper function that returns

the number of lines in a multi line textbox.

Public Declare Function SendMessage _

Lib "user32" Alias "SendMessageA" ( _

ByVal hwnd As Long, _

ByVal wMsg As Long, _

ByVal wParam As Long, _

lParam As Any) As Long

Public Const EM_GETLINECOUNT = &HBA

Public Function LineCount(txtBox As TextBox) As Long


LineCount = SendMessage( _
TxtBox.hWnd, EM_GETLINECOUNT, 0&, 0&)
End Function

How to change the color of Title Bar


You can globally change any Windows 95 desktop colour using the

SetSysColors function. It takes three parameters : The number

of colour elements to change, The Color object constant that

you want to change and the RGB value.

The Declaration for this API function is:

Declare Function SetSysColors Lib "user32" Alias _


"SetSysColors" (ByVal nChanges As Long, lpSysColor As _
Long, lpColorValues As Long) As Long
The Constants are:

Public Const COLOR_SCROLLBAR = 0 'The Scrollbar colour


Public Const COLOR_BACKGROUND = 1 'Colour of the background with no wallpaper
Public Const COLOR_ACTIVECAPTION = 2 'Caption of Active Window
Public Const COLOR_INACTIVECAPTION = 3 'Caption of Inactive window
Public Const COLOR_MENU = 4 'Menu
Public Const COLOR_WINDOW = 5 'Windows background
Public Const COLOR_WINDOWFRAME = 6 'Window frame
Public Const COLOR_MENUTEXT = 7 'Window Text
Public Const COLOR_WINDOWTEXT = 8 '3D dark shadow (Win95)
Public Const COLOR_CAPTIONTEXT = 9 'Text in window caption
Public Const COLOR_ACTIVEBORDER = 10 'Border of active window
Public Const COLOR_INACTIVEBORDER = 11 'Border of inactive window
Public Const COLOR_APPWORKSPACE = 12 'Background of MDI desktop
Public Const COLOR_HIGHLIGHT = 13 'Selected item background
Public Const COLOR_HIGHLIGHTTEXT = 14 'Selected menu item
Public Const COLOR_BTNFACE = 15 'Button
Public Const COLOR_BTNSHADOW = 16 '3D shading of button
Public Const COLOR_GRAYTEXT = 17 'Grey text, of zero if dithering is used.
Public Const COLOR_BTNTEXT = 18 'Button text
Public Const COLOR_INACTIVECAPTIONTEXT = 19 'Text of inactive window
Public Const COLOR_BTNHIGHLIGHT = 20 '3D highlight of button

To change the colour of the title bar, or caption, of an active

window, you would call the function in this way:

t& = SetSysColors(1, COLOR_ACTIVECAPTION, RGB(255,0,0))

This example would turn the active caption red

How to shade a control


Make a new project. Add a module. To the form add a text box.

Code:
Add this code to the module:

Global Const GFM_BACKSHADOW = 1


Global Const GFM_DROPSHADOW = 2
Public Sub ControlShadow(f As Form, C As Control, shadow_effect _

As Integer, shadow_width As Integer, shadow_color As Long)


Dim shColor As Long
Dim shWidth As Integer
Dim oldWidth As Integer
Dim oldScale As Integer
shWidth = shadow_width
shColor = shadow_color
oldWidth = f.DrawWidth
oldScale = f.ScaleMode
f.ScaleMode = 3
f.DrawWidth = 1
Select Case shadow_effect
Case GFM_DROPSHADOW
f.Line (C.Left + shWidth, C.Top + shWidth)-Step(C.Width - 1, _

C.Height - 1), shColor, BF


Case GFM_BACKSHADOW
f.Line (C.Left - shWidth, C.Top - shWidth)-Step(C.Width - 1, _

C.Height - 1), shColor, BF


End Select
f.DrawWidth = oldWidth
f.ScaleMode = oldScale
End Sub

Add this code to the form's Load procedure:

Private Sub Form_Load()


Dim r
r=ControlShadow(me,text1,1,2,black)
End Sub

How to dither a form


Ever wonder how the SETUP.EXE screen gets its cool shaded background

coloring This color shading is called dithering, and you can

easily incorporate it into your forms. Add the following routine

to a form: To call it, put the following statement in the

Form_Activate event : - Dither Me

Sub Dither(vForm As Form)

Dim intLoop As Integer

vForm.DrawStyle = vbInsideSolid
vForm.DrawMode = vbCopyPen
vForm.ScaleMode = vbPixels
vForm.DrawWidth = 2
vForm.ScaleHeight = 256

For intLoop = 0 To 255


vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), _
RGB(0, 0,255 -intLoop), B
Next intLoop

End Sub

How to determine free disk space


Use the function GetDiskFreeSpace. The declaration for this API

function is:

Declare Function GetDiskFreeSpace Lib "kernel32" Alias _


"GetDiskFreeSpaceA" (ByVal lpRootPathName As String, _

lpSectorsPerCluster As Long, lpBytesPerSector As Long, _

lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters _

As Long) As Long

Here is an example of how to find out how much free space a drive has:

Dim SectorsPerCluster&
Dim BytesPerSector&
Dim NumberOfFreeClusters&
Dim TotalNumberOfClusters&
Dim FreeBytes&
dummy& = GetDiskFreeSpace("c:\", SectorsPerCluster, _
BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters)
FreeBytes = NumberOfFreeClusters * SectorsPerCluster * _
BytesPerSector
The Long FreeBytes contains the number of free bytes on the drive.

Tip by James Limm

How to find out which user is logged in


Dim s As String
Dim cnt As Long
Dim dl As Long
Dim CurUser as String
cnt = 199
s = String$(200, 0)
dl = GetUserName(s, cnt)
If dl <> 0 Then curuser = Left$(s, cnt) Else curuser = ""

You must declare the following function in the declarations section

of a form or module in the project.

Declare Function GetUserName Lib "advapi32.dll" Alias _

"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) _

As Long

Tip by James Limm

How to detect if the system has a sound card


Add the following code to the declarations section of the project.

Declare Function waveOutGetNumDevs Lib "winmm.dll" _


Alias "waveOutGetNumDevs" () As Long

Dim i As Integer
i = waveOutGetNumDevs()
If i > 0 Then
MsgBox "Your system can play sound files.", _
vbInformation, "Sound Card Test"
Else
MsgBox "Your system can not play sound Files.", _
vbInformation, "Sound Card Test"
End If

Tip by James Limm

How to disable Ctrl-Alt-Delete and Ctrl-Esc


Copy this code into the declarations section of your project.

Private Declare Function SystemParametersInfo Lib _

"user32" Alias "SystemParametersInfoA" (ByVal uAction _

As Long, ByVal uParam As Long, ByVal lpvParam As Any, _

ByVal fuWinIni As Long) As Long

Code

Sub DisableCtrlAltDelete(bDisabled As Boolean)


Dim X As Long
X = SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub

Use

To disable Ctrl-Alt-Delete:

Call DisableCtrlAltDelete(True)
To enable Ctrl-Alt-Delete:

Call DisableCtrlAltDelete(False)

Tip by James Limm

How to make the title bar flash


Create a new .exe project, add a module to it with the following code:

Public Declare Function FlashWindow _


Lib "user32" (ByVal hwnd As Long, _

ByVal bInvert As Long) As Long

Put a timer and 2 commandbuttons on form1 with these properties:

command1.caption="Start"
command2.caption="Stop"
timer1.interval=500 'flashes every 1/2 second
timer1.enabled=false

Code

Private Sub Timer1_Timer()


a& = FlashWindow(Me.hwnd, 1)
End Sub

Private Sub Command1_Click()


Timer1.Enabled = True
End Sub

Private Sub Command2_Click()


Timer1.Enabled = False
End Sub
Execute the app. (F5) and click the buttons.

Tip by Gijs de Jong

How to get the file size


This is an easy way to get the file size of any file a user might

select. Lets assume you have a form with a directory list box

called mydir and a file list box named myfile. The user can scroll

to any directory on their hard drive, select a file from the file

list box and the program will tell them the size of that file.

Heres the code:

Private Sub cmdShowFileSize_Click()


Dim strOldFile As String
Dim strOldSize As String
Dim strMyDir As String
Dim strMyFile As String

'Update the following with your directory and file


'info or use App.Path. This sample does not include
'error checking.

strMyDir = "c:\windows\desktop"
strMyFile = "readme.txt"

strOldFile = strMyDir & "\" & strMyFile


strOldSize = FileLen(strOldFile)

lblFileSize.Caption = "The file " & strOldFile & " is " & _
Format(strOldSize, "#,##0") & " bytes in size."

End Sub

How to use an isEven Function


This function returns True if the number is even or False if it's odd:

Function isEven(n As Integer) As Boolean


isEven = True
If n And 1 Then isEven = False
End Function

How to roll a Form up and down


Sub RollFormUp(frm As Form, up As Integer)

'Rolls a form up. Pay attention to the form's scalemode


'property. If it's set to pixels and you use a twip value,
'for example, your form will roll during an eternity!
'up - the amount you want the form to be rolled up

'It can be used as a splash window

Dim UntilCond

UntilCond = frm.Height - up
If UntilCond <= 0 Then Exit Sub
If up < 0 Then Exit Sub

Do
frm.Height = frm.Height - 1
DoEvents
Loop Until frm.Height <= UntilCond

End Sub

Sub RollFormDown(frm As Form, down As Integer)

'Rolls a form down. Again, pay attention to the scalemode!


'down is the amount you may want your form to be rolled down

Dim UntilCond

UntilCond = frm.Height + down

If down < 0 Then Exit Sub


Do
frm.Height = frm.Height + 1
DoEvents
Loop Until frm.Height >= UntilCond

End Sub

Private Sub Command1_Click()


Call RollFormDown(Form1, 100)
End Sub

How to swap two interger variables


Use the following algorithm to swap two interger variables:

a = a Xor b
b = a Xor b
a = a Xor b

How to connect Lists boxes to Access database


On Error GoTo process_err

' Now lets put the names into the Listbox.


YourRS.MoveLast
X = YourRS.RecordCount
YourRS.MoveFirst

Do
List1.AddItem YourRS!yourfield
Y = Y + 1: YourRS.MoveNext
Loop Until Y = X ' X = last record remember.
process_err:
Select Case (Err)
Case 3021 ' No current record
record_count = 0
Exit Sub
List1.Refresh
End Select

How to order records in a RecordSet by a field


' This orders all records in YourRS by YourField from Z-A.
' If you want it in A-Z order, just replace DESC with ASC.

Set YourRS = YourDB.OpenRecordset("SELECT YourField.* FROM _

YourField " & "ORDER BY AnotherField DESC;")

How to add a file to Windows 95 documents list


Place this code in a module:

Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long,

ByVal pv As String)

Code:
Dim NewFile as String
NewFile="c:\mydir\myfile.txt"
SHAddToRecentDocs(2,NewFile)

How to clear Windows 95 documents list


Place this code in a module:
Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long,

ByVal pv As String)

Code:

SHAddToRecentDocs(2,vbNullString)

How to get screen resolution


' Get the resolution.
sHeight = Screen.Height \ Screen.TwipsPerPixelY
sWidth = Screen.Width \ Screen.TwipsPerPixelX

' A message box.


s = MsgBox("Your screen resolution is: " & sWidth & " x " & sHeight, ,

"Screen Resolution")

How to print a picture


Printer.PaintPicture Picture1.Picture
Printer.EndDoc

How to cancel a print job


'This following also shows how to print out the multiple documents

Printer.Print "Page 1"


Printer.Newpage
Printer.Print "Page 2"
Printer.KillDoc

How to detect keypress outside your program


Place this code in a module

Declare Function GetAsyncKeyState Lib "user32"

(ByVal vKey As Long) As Integer

' This is the constant for the TAB key.

' Use the API Text Viewer to find the key you want to use.
Public Const VK_TAB = &H9

Place this code in Timer1_Timer()

If GetAsyncKeyState(VK_TAB) Then
' Beep if TAB-key is pressed
Beep
End If
How to hide the mouse pointer
Place this code in a module.

Declare Function ShowCursor Lib "user32" (ByVal bShow

As Long) As Long

This code will hide the mouse pointer

mypointer = ShowCursor(False)

This code will show the mouse pointer

mypointer = ShowCursor(True)

How to get the length of a string


Dim i As Long
i = Len(sYOURSTRING)

How to copy an image from one Picture Box to another Picture Box using the Clipboard
Place this Command1_Click()

' Clear the Clipboard if it's another type of data in the Clipboard.
Clipboard.Clear
Clipboard.SetData Picture1.Picture

Place this Command2_Click()

' Copy Clipboard text to Text2.


Picture2.Picture = Clipboard.GetData

How to center a Picture Box on a form


Picture1.Left = (Form1.Width - Picture1.Width) / 2

How to fill a form with confetti


DrawWidth = 5 ' Width of the dots

Dim x As Long
Dim y As Long

Dim r As Integer
Dim g As Integer
Dim b As Integer

Randomize

Do
x = Val(Screen.Width) * Rnd
y = Val(Screen.Height) * Rnd

'A random color to next dot.


r = 255 * Rnd
g = 255 * Rnd
b = 255 * Rnd

Form1.PSet (x, y), RGB(r, g, b)


Loop

How to remove a picture to a Picturebox at run time


Picture1.Picture = LoadPicture("")

How to add a picture to a Picturebox at run time


Picture1.Picture = LoadPicture("c:\yourpicture.bmp")

How to count how many rows there are in a listview


lItemCount = lstCount.ListItems.Count
msgbox lItemCount

How to select all items in a listbox


Place this code in cmdAddNew_Click()

List1.AddItem Text1.Text ' Add new item


Place this code in cmdSelectAll_Click()

For x = 0 To List1.ListCount - 1 ' Loop all items


List1.Selected(x) = True ' Select item(x)
Next x

How to disable the Text Box beep


Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

How to make only lowercase letters in a textbox


oldpos = Text1.SelStart
Text1.Text = LCase(Text1.Text) 'use 'UCase' if you want uppercase
Text1.SelStart = oldpos

How to create separator in the menus


mnu.Caption="-"

How to add a new line to existing textbox text


Dim strNewText As String
With Text1
strNewText = "Updated: " & Date
.SelStart = Len(.Text)
.SelText = vbNewLine & strNewText
End With

How to use the advanced feature of Message Box


Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Do you want to continue " ' Define message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define buttons.
Title = "MsgBox Demonstration" ' Define title.
Help = "DEMO.HLP" ' Define Help file.
Ctxt = 1000 ' Define topic
' context.
' Display message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' User chose Yes.
MsgBox "You click 'Yes'" ' Perform some action.
Else ' User chose No.
MsgBox "You click 'No'" ' Perform some action.
End If

How to show your own Popup menu in the text box


Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
With Text1
.Enabled = False
PopupMenu {YourMenu}
.Enabled = True
.SetFocus
End With
End If
End Sub

How to make form controls to be movable (DRAG AND DROP)


This is a tip on how to make controls movable on a form. This example demonstrates a movable
picture box.

Option Explicit
Public globalX As Integer
Public globalY As Integer

Private Sub Form_DragDrop(Source As Control, X As _


Single, Y As Single)
Picture1.Move X - globalX, Y - globalY
End Sub

Private Sub Picture1_MouseDown(Button As Integer, _


Shift As Integer, X As Single, Y As Single)
Picture1.Drag vbBeginDrag
globalX = X
globalY = Y
End Sub

How to unload all the Forms to free memory


Public Sub UnloadAllForms()
Dim Form As Form
For Each Form In Forms
Unload Form
Set Form = Nothing
Next Form
End Sub
It is best to call this procedure from the unload event of

your main form.

How to launch Windows Control Panel extensions using VB


Option Explicit
Private strPanelName As String

Private Sub Command1_Click()


strPanelName = File1.filename
If strPanelName = "" Then
MsgBox "A .CPL file was not selected." & vbCrLf & _
"The Windows Control Panel will be opened.",vbInformation
End If
Shell "rundll32.exe shell32.dll,Control_RunDLL " & _
strPanelName, vbNormalFocus
End Sub

Private Sub Form_Load()


With File1
'Display Control Panel Extension files only:
.Pattern = "*.CPL"
'Point the FileListBox to the System or System32 dir:
.filename = "C:\Windows\System"
End With
End Sub

How to load a text file in one operation


Function FileText (filename$) As String
Dim handle As Integer
handle = FreeFile
Open filename$ For Input As #handle
FileText = Input$(LOF(handle), handle)
Close #handle
End Function

Text1.Text = FileText("c:\autoexec.bat")

How to suppress spaces in a TextBox


To prevent users from typing spaces in a text box, include this

code in the KeyPress event of the text box:

Private Sub Text1_KeyPress(KeyAscii As Integer)


If KeyAscii = 32 Then
KeyAscii = 0
End If
End Sub

-Meena Swaminathan, received by e-mail

How to speed up database access


Here is a trick to loop through a recordset faster. Often when looping through
a recordset people will use the following code:

Do While Not Records.EOF


Combo1.AddItem Records![Full Name]
Eecords.Movenext
Loop
The problem is that everytime the database moves to the next record it must
make a check to see if it has reached the end of the file. This slows the
looping down a great deal. When moving or searching throuch a large record
set this can make a major difference. Here is a better way to do it.

Records.MoveLast
intRecCount=Records.RecordCount
Records.MoveFirst

For intCounter=1 To intRecCount


Combo1.AddItem Records![Full Name]
Records.MoveNext
Next intCounter
You should see about a 33% speed increase.

Tip by Levi Page

How to Create Rainbow Text


1. Start a new Standard Exe project; form1 is created by default

2. Type in the following code.

Sub Form_Paint()
Dim I As Integer, X As Integer, Y As Integer
Dim C As String
Cls
For I = 0 To 91
X = CurrentX
Y = CurrentY
C = Chr(I)
'Line -(X + TextWidth(C), Y = TextHeight(C)), _
QBColor(Rnd * 16), BF
CurrentX = X
CurrentY = Y
ForeColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
Print "Hello World Hello World Hello World Hello"
Next
End Sub
3. Run the program by pressing F5 or choosing start from the run program
and watch the form fill with lots of multi-coloured text

Tip by Steve Anderson

How to Add frequently used modules to the templates directory


If you have modules or class modules that you use all the time in many of your
projects, you can add them to the Templates directory. It is usually
located in the VB directory (often C:\Program Files\DevStudio\VB) and is
called Template. Under the Template directory you will find several
directories that correspond to the types of files you can add, such as
Classes. Just copy your source code files to the appropriate directory and
go try to add the file to the project. Your files will appear under the New Tab.

How to retrieve the screen resolution


It is often very useful to be able to resize your Visual Basic program
depending on what the screen resolution is. In this tip, we will explain how to find the resolution.

ResWidth = Screen.Width \ Screen.TwipsPerPixelX


ResHeight = Screen.Height \ Screen.TwipsPerPixelY
ScreenRes = ResWidth & "x" & ResHeight
ResWidth will be set to the resolution of the width on the screen, and
ResHeight will be set to the resolution of the height of the screen.

ScreenRes will be set to something similar to:

800x600

Tip by James Limm

How to scroll caption on the form's title bar


Sub TitleScroll(frm As Form)
Dim X As Integer
Dim current As Variant
Dim Y As String
Y = frm.Caption
frm.Caption = ""
frm.Show
For X = 0 To Len(Y)
If X = 0 Then
frm.Caption = ""
current = Timer
Do While Timer - current < 0.1
DoEvents
Loop
GoTo done
Else: End If
frm.Caption = left(Y, X)
current = Timer
Do While Timer - current < 0.05
DoEvents
Loop
done:
Next X
End Sub

How to hide mouse cursor


You can use the API function Showcursor to control the visibility of the mouse cursor. To use this
tip, paste this declaration into a module. The Parameter lShow show be set to True (non-zero) to
display the cursor, False to hide it.

Public Declare Function ShowCursor& Lib "user32" (ByVal lShow As Long)

How to check if the credit card is valid


Add this function to a .BAS or a form and to check whether a creditcard number is valid, call it
using something like:
Valid = IsValidCreditCardNumber("4552012301230123")
. Valid will then contain true or false depending on what number was passed to the function.

Public Function IsValidCreditCardNumber(ByVal pCardNumber As String) As Boolean


Dim CharPos As Integer
Dim CheckSum As Integer
Dim tChar As String
For CharPos = Len(pCardNumber) To 2 Step -2
CheckSum = CheckSum + CInt(Mid(pCardNumber, CharPos, 1))
tChar = CStr((Mid(pCardNumber, CharPos - 1, 1)) * 2)
CheckSum = CheckSum + CInt(Left(tChar, 1))

If Len(tChar) > 1 Then CheckSum = CheckSum + CInt(Right(tChar, 1))


Next

If Len(pCardNumber) Mod 2 = 1 Then CheckSum = CheckSum + CInt(Left(pCardNumber, 1))

If CheckSum Mod 10 = 0 Then


IsValidCreditCardNumber = True
Else
IsValidCreditCardNumber = False
End If

End Function

How to check what the last day of a month is


Public Function LastDayOfMonth(ByVal ValidDate As Date) As Byte
Dim LastDay As Byte

LastDay = DatePart("d", DateAdd("d", -1, DateAdd("m", 1, _


DateAdd("d", -DatePart("d", ValidDate) + 1, Date))))

LastDayOfMonth = LastDay
End Function

Private Sub Command1_Click()

MsgBox "The last day of the month with date " & Date & _
" is " & LastDayOfMonth(Date)

End Sub

How to open VB 6 file with VB 5


You need first use notepad to open the VB 6 .vbp file. In VB 6 .vbp

file, find 'Retained = 0' statement, delete it, and save the file.

Now you can open VB 6 file without error message.

How to deal with Null strings in Access database fields


By default Access string fields contain NULL values unless a string value

(including a blank string like "") has been assigned. When you read these
fields using recordsets into VB string variables, you get a runtime type-
mismatch error. The best way to deal with this problem is to use the built-
in & operator to concatenate a blank string to each field as you read it.
For example:

Dim DB As Database
Dim RS As Recordset
Dim sName As String
Set DB = OpenDatabase("Test.mdb")
Set RS = DB.OpenRecordset("Name")
sName = "" & RS![Last Name]

How to make a form fade to black


Sub FormFade(frm As Form)
' Makes Form Fade To Black
' Example: FormFade(Form1)
For icolVal% = 255 To 0 Step -1
DoEvents
frm.BackColor = RGB(icolVal%, icolVal%, icolVal%)
Next icolVal%
End Sub

How do you make a form appear in center while executing?


In the form properties, the startup position property is having two option regarding Center the
form. (1) Center Owner: The form will be made centered based on the current form that calls the
form i.e. if already one form is opened then the next form will be the center to that form which
will be called. (2) Center Screen: I hope no need of any explanation for this.
Sample code is:
Private Sub Form_Load()
Form1.Top = (Screen.Height - Form1.Height) / 2
Form1.Left = (Screen.Width - Form1.Width) / 2
End Sub

Convert an RGB value to a long.


LongVar = BlueValue * 65536 + GreenValue * 256 + redValue

Convert a Long value to RGB.


RedValue = LongValue Mod 256
GreenValue = ((LongValue And &HFF00) / 256&) Mod 256&
BlueValue = (LongValue And &HFF0000) / 65536

How do I create multi-column combo box?


VB doesn’t have multicolums prperty for a combobox,
but we can create a custome control using(textbox, command button and any grid).

How can I call a Command button without clicking it?


Just call the CommandButton1_Click event from anywhere.

What are types of ActiveX Components in VB?


ActiveX DLL, ActiveX Exe, ActiveX Controls, ActiveX Document DLL, ActiveX Document Exe

Advantage & differences of ActiveX DLL over ActiveX Exe .


Advantages:-
DLL is faster WRT exe, because DLL runs within the same process space of its client
where as exe runs on its own process space.
Difference :-
DLL is faster than exe and DLL is in-process whereas exe is out-process

Вам также может понравиться