VB Tips Varie
Capire se un programma è già in esecuzione
Nell 'evento load del form caricato per primo:
If App.PrevInstance = True Then
Call MsgBox("Questo programma é giá inesecuzione!",_
vbExclamation)
End
End If

Come catturare l'area dello schermo

Public Sub CaptureScreen(O as Object)

Dim hdcs as Long

hdcs = CreateDC("DISPLAY","","",0)

BitBlt O.hDc,0,0,Screen.Width, Screen.Heigth,hdcs,0,0,&HC0020

O.Refresh

DeleteDC hdcs

End Sub

Dove O puo essere una PictureBox con le dimensioni dello schermo, successivamente si salva il file BMP in questo modo:

Call SavePicture(picture1.picture, "Schermo.bmp")

O deve avere impostata la proprietà Autoredraw=true

Convertire un sorgente scritto per VB4 in VB5  

1° metodo
Caricarlo in VB5 e salvandolo, verrà riscritto in versione 5.0

2° metodo
Sul CD di VB5 c'è un'utility per aiutarti a passare da un progetto VB4 a uno VB5, si trova nella directory Unsupprt, e si chiama MigrWiz.

Creare un nuovo oggetto clonandolo da un'altro
Dichiarare una variabile del tipo di oggetto che si vuole clonare, per esempio una form.
    dim newForm as form
creare il nuovo oggetto copiando il form1 (già esistente) in newForm
    set newForm = new form1
visualizzare l' oggeto, in questo caso la finestra
    newForm.show
Do Loop While

HomeAlone = True

Do
Text1.Text = "Are your parents home?"
If txtAnswer.Text = "Yes" Then HomeAlone = False
Lopp While HomeAlone = True

Do  Until
HomeAlone = True
Do Until HomeAlone = False
Text1.Text = "Are you home alone?"
If txtAnswer.Text = "No" Then HomeAlone = False
Loop

Do - While
HomeAlone = True
Do While HomeAlone = True
Text1.Text = "Are your parents home?"
If txtAnswer.Text = "Yes" Then HomeAlone = False
Loop

Stampare un grafico prodotto con MsChart

Se il grafico si chiama ad esempio MSChart1.
Usare le seguenti istruzioni:

Clipboard.Clear
MSChart1.EditCopy
Printer.PaintPicture Clipboard.GetData, 0, 5000

Si copia il grafico negli appunti e lo trasferisci alla stampante.
I valori 0 e 5000 sono le coordinate di stampa.

Trasformare dei numeri da decimale a binario
Dim x As Integer, intResto As Integer, strBinary As String
x = 254
While x
   intResto = IIf(x Mod 2 > 0, 1, 0)
   strBinary = CStr(intResto) & strBinary
   x = x \ 2
Wend
Print strBinary '11111110
Visualizzare la descrizione dell' errore tramite la finestra di debug
Mettere un "on error goto GestErrore" ed in GestErrore scrivere:
    Debug.print err.description
almeno così si ha un idea del perche` VB si lamenta.
L'errore 3020 equivale a :"Update o CancelUpdate senza AddNew o Edit".
Cancellare i dati degli array liberando così la memoria occupata

Erase array1, array2, ...array3  e così di seguito

Case

In ognuna proposizione Case è possibile usate più espressioni o intervalli.Si può ad esempio scrivere Case 1 to 4, 10. In questo caso l'istruzione successiva verrà eseguita se il valore dell'espressione specificata nella select restituisce un valore compreso tra 1 e 4 uppure è pari a 10. Inoltre è possibile specificare intervalli e più di un'espressione anche per le stringhe di caratteri. Case "Domenica","Lunedì" To "Mercoledì".In questo esempio , Case consente di confrontare le stringhe che corrispondono esattamente a domenica, e le stringhe comprese tra lunedì e mercoledì in ordine alfabetico.

Copia e incolla
Copy:
clipboard.settext
form1.text1.seltext

Paste:
form1.text1.seltext = clipboard.gettext()
If - Then
If Text1.Text = Text2.Text Then Text3.Text = "Hello world"
End If
Il problema della "\"
If Right(Dir1.Path,1) <> "\" Then
Text1.Text = Dir1.Path & "\" & File1.FileName
Else
Text1.Text = Dir1.Path & File1.FileName
End If
LoadPicture
Image1.picture = Loadpicture("C:\picture.jpg")
Clear Picturebox: LoadPicture( )
Risoluzione schermo
CR$ = Chr$(13) + Chr$(10)
TWidth% = screen.Width \ screen.TwipsPerPixelX
THeight% = screen.Height \ screen.TwipsPerPixelY
MsgBox "Screen Resolution:" + CR$ + CR$ + Str$(TWidth%) + " x" + Str$(THeight%), 64, "Info"
Select Case
Dim Grade as string
Select Case Grade
Case "A": Label1.Caption = "WOW"
Case "B": Label1.Caption = "Very Good"
Case "C": Label1.Caption = "OK"
Case else: Label1.Caption = "You Suck"
Restituire il valore numerico di una stringa in una TextBox

Per catturare un valore numerico di un controllo si deve applicare la proprietà Val
all'oggetto:

catturiamo il valore numerico
oggetto.Val

immettiamo il v.n. in una variabile
Dim a
a = oggetto.Val
in seguito potremo moltiplicare a piacimento
le variabili (a*b*c*d....) e visualizzare il
risultato in un'altra Textbox.

Se nell'oggetto non è presente un valore  numerico, si avrà un errore di runtime!

Come convertire la tonalità di un colore in scala di grigio

Facendo passare alla funzione come argomento il valore di un colore in formato long integer la stessa restituirà il corrispondente intero in scala di grigio

Function GreyScale ( ByVal Colr As Long ) As Integer
Dim R As Long, G As Long, B As Long
R = Colr Mod 256

Colr = Colr \ 256
G = Colr Mod 256
Colr = Colr \ 256
B = Colr Mod 256
GreyScale = 76 * R / 255 + 150 * G / 255 + 28 * B / 255
End Function

Come estrarre le icone da un file exe o dll

Ecco come usando le Api si può estrarre le icone dai file exe o dll

Declare Function DrawIcon Lib "user32" (byval hdc As Long, ByVal x as Long, ByVal y As Long, ByVal hIcon As Long ) As Long
Declare Function DestroyIcon Lib "user32" ( ByVal hIcon As Long ) As Long
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long ) As Long
Dim IconsInFile As Long
Dim hIcon As Long
Dm i As Integer
Dim RetVal

Dim yCoord As Long
Dim xCoord As Long
Dim FileName As String
Form1.Cls
FileName = "C:\winnt\System32\moricons.dll"
IconsFile = ExtractIcon ( App.hIstance, FileNam, -1 )
xCoord = 20
yCoord = 20
For i = 0 To IconsInFile -1
hIcon = ExtractIcon ( App.hIstance, FileName, i )
RetVal = DrawIcon ( Form1.hdc, xCoord, yCoord, hIcon )
DestroyIcon ( hIcon )

xCoord = xCoord +40
If xCoord > ( 11 * 40 ) Then
xCoord = 20

yCoord = yCoord + 40
End If
Next i 

Come ottenere  il colore del pixel sotto la posizione del mouse

A volte nella stesura di un'applicazione di manipolazione grafica si necessità di una funzione che restituisca il colore di un pixel puntato dal mouse, la funzione implementa ciò agganciando la routine all'evento mousemove di un componente PictureBox

Sub Picture1_MouseMove ( Button As Integer, Shift As Integer, X As Single, Y As Single )
Dim lngColour As Long
Dim intRed As Integer
Dim intGreen As Integer
Dim intBlue As Integer
lngColour = Picture1.Point ( X, Y )
intRed = ( lngColour And &HFF& )
intGren = ( lngColour And &HFF00& ) / &H100&
intBlue = ( lngColour And &HFF0000& ) / &H10000&
End Sub

DTPicker

DTPicker è un nuovo controllo  di VB6 che lo si usa per visualizzare la data nei formati predefiniti è possibile usare la proprietà CustomFormat per visualizzare la data nel formato che si ritiene più comodo con un semplice click del mouse senza digitare nessun valore nel textbox e senza preoccuparsi di controllare che il formato della data sia corretto. 

Il medoto Arrange nelle MDI Form

Tale medoto nelle MDI Form permette di realizzare un ordine visivo delle finestre MDICHILD

Pop-up menù su un MDI Form

E' possibile mostrare su un MDI Form o anche su un form normale un menù Pop-up, è sufficiente usare il metodo PopupMenu.Il menù Pop-up può essere visualizzato in relazione alla posizione del mouse in un punto con specifiche coordinate.La sintassi che si usa è la seguente:

Object.PopupMenu (NomedelMenu, flags, x, y, boldcommand)

Variabili locali

Una variabile è detta locale quando il suo campo di utilizzo è limitato alla sola routine nella quale la stessa variabile è stata dichiarata.

Ubound

UBound ( nomematrice[ ,dimensione] ) è una funzione che restituisce l'estrmo superiore ( un Lomg ) di una matrice per una specificata dimensione. Per esempio se si definisce:

Dim Matrice ( 1 To 10 , 0 To 3 )

UBound ( Matrice , 1) restituisce 10- E' disponibile anche la funzione LBound che restituisce l'estremo inferiore.

Print MSFlexGrid
    Printer.PaintPicture MSFlexGrid_Name.Picture, 0, 0
    Printer.EndDoc
    Dim old_width as Integer
    MSFlexGrid_Name.width=printer.width
    MSFlexGrid_Name.width=old_width
REGISTRAZIONE OCX

(Esempio di registrazione del file ComCtl32.Ocx)
Copia il seguente codice nelle sezione dichiarazioni del tuo proggetto:
Declare Function RegComCtl32 Lib "ComCtl32.OCX" _
Alias "DllRegisterServer" () As Long
Declare Function UnRegComCtl32 Lib "ComCtl32.OCX" _
Alias "DllUnregisterServer" () As Long
Const ERROR_SUCCESS = &H0
Per registrare ComCtl32.Ocx inserisci il seguente codice:
If RegComCtl32 = ERROR_SUCCESS Then
MsgBox "Registration Successful"
Else
MsgBox "Registration Unsuccessful"
End If
If UnRegComCtl32 = ERROR_SUCCESS Then
MsgBox "UnRegistration Successful"
Else
MsgBox "UnRegistration Unsuccessful"
End If

COME CAMBIARE COLORE ALLA BARRA DEL TITOLO

Declare Function SetSysColors Lib "user32" Alias _
"SetSysColors" (ByVal nChanges As Long, lpSysColor As _
Long, lpColorValues As Long) As Long
Public Const COLOR_SCROLLBAR = 0
Public Const COLOR_BACKGROUND = 1
Public Const COLOR_ACTIVECAPTION = 2
Public Const COLOR_INACTIVECAPTION = 3
Public Const COLOR_MENU = 4
Public Const COLOR_WINDOW = 5
Public Const COLOR_WINDOWFRAME = 6
Public Const COLOR_MENUTEXT = 7
Public Const COLOR_WINDOWTEXT = 8
Public Const COLOR_CAPTIONTEXT = 9
Public Const COLOR_ACTIVEBORDER = 10
Public Const COLOR_INACTIVEBORDER = 11
Public Const COLOR_APPWORKSPACE = 12
Public Const COLOR_HIGHLIGHT = 13
Public Const COLOR_HIGHLIGHTTEXT = 14
Public Const COLOR_BTNFACE = 15
Public Const COLOR_BTNSHADOW = 16
Public Const COLOR_GRAYTEXT = 17
Public Const COLOR_BTNTEXT = 18
Public Const COLOR_INACTIVECAPTIONTEXT = 19
Public Const COLOR_BTNHIGHLIGHT = 20
Per cambiare il colore(rosso) della title bar inserire la seguente funzione:
t& = SetSysColors(1, COLOR_ACTIVECAPTION, RGB(255,0,0))