Visual Basic Tips

Wie een internet aansluiting heeft kan zich via een mailservice verzekeren van een regelmatige toezending van programmeertips. Zo krijg ik ongeveer een keer per week een suggestie hoe ik iets in Visual Basic handig op kan lossen. Voor degenen die het internet op kunnen verwijs ik naar http://www.zdtips.com, alwaar ze zich aan kunnen melden. Voor de groep die dit medium moet ontberen zal ik hieronder wat tips  naar voren brengen. De meeste tips betreffen Visual Basic 5, voor wie andere versies heeft zal wellicht enige aanpassingen moeten zijn.
Allereerst een techniek om een combo box met de maanden van het jaar te laden:

For i = 1 To 12
cmbMonth.AddItem Format("28/" & i & "/1997", "mmmm")
Next

Om te zien welke maand de gebruiker aangeklikt heeft, kun je de volgende code gebruiken:

Private Sub cmbMonth_Click ()
Dim myRs as recordset
.
. 
myRs!Month = cmbMonth.listindex + 1
Next

Het volgende code voorbeeld laat een makkelijke manier zien om een message box (MsgBox) te tonen en te verwerken:

Select Case MsgBox("Wil je de file somefile.txt opslaan?", _
vbApplicationModal + vbQuestion + YesNoCancel, App.Title)
Case vbYes
'Sla de file op
Case vbNo
'Doe iets met het No antwoord
Case vbCancel
'Doe iets anders met Cancel
End Select

Deze methode werkt goed, tenzij je het antwoord van je Select Case later weer nodig hebt. Dan kun je beter de standaard manier gebruiken om het antwoord in een variabele op te slaan.

Als je tekst in een text box intypt en op Enter drukt zal er een pieptoon te horen zijn. Dit is makkelijk te vermijden. Zet een text box op je form en zet de volgende code in de KeyPress event:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(vbCr) Then
KeyAscii = 0
End If
End Sub

Op Enter drukken zal geen pieptoon meer produceren.

Als je al een default tekst in een text box hebt wil je vaak dat die tekst geselecteerd wordt als die tekst box de focus krijgt. Dan kan de gebruiker die tekst zo nodig makkelijk over typen. Onderstaande functie zorgt hiervoor. Bij de eerste click op de text box wordt alle tekst geselecteerd, bij de tweede zal de cursor er geplaatst worden.

Public Sub TextSelected()
Dim i As Integer
Dim oMyTextBox As Object

Set oMyTextBox = Screen.ActiveControl
If TypeName(oMyTextBox) = "TextBox" Then
i = Len(oMyTextBox.Text)
oMyTextBox.SelStart = 0
oMyTextBox.SelLength = i
End If
End Sub

Roep deze functie aan vanuit de GotFocus event van de TextBox.

Private Sub Text1_GotFocus()
TextSelected
End Sub

Hans Fast
