Consigli

 

L'obbiettivo di questo sezione  č quello di imparare ad usare il Visual basic in modo semplice e facile. di seguito verranno dati alcuni consigli alla programmazione in Visual Basic.

Questi tips sono raccolti dalla rete.

Se volete collaborare mandatemi i vostri file o codice programmi Visual Basic specificando la vostra posta elettronica, nome cognome..

28 Consigli

 


1) SQL e Visual basic
Di seguito sono citati pezzi di codici che permettono di effettuare le
operazioni principali su un archivio, Database Access.

Apriamo l'archivio database.mdb.
Effettuiamo una query  Sql sulla tabella residuo.
Ci spostiamo nelll'ultimo record.
Leggiamo il campo minuti inserendo ll suo valore nella variabile "Minimo"
Alla fine chiudiamo la connessione.

Set dbs = OpenDatabase("c:\database.mdb")
Set rst = dbs.OpenRecordset("SELECT * FROM residuo")
rst.MoveLast
Minimo = rst!minuti
dbs.Close




2) Dopo aver aperto la connessione effettuiamo una query che ci porta all'ultimo record.
In coda all'ultimo elemento aggiungiamo un record con il campo minuti impostato al valore minuti_rim

Set dbs = OpenDatabase("c:\database.mdb")
Set rst = dbs.OpenRecordset("SELECT * FROM residuo")
rst.MoveLast
With rst
.Edit
!minuti = minuti_rim
.Update
.Close
End With

 


 

3)A volte, specialmente in programmi gestionali, e' utile sapere se una determinata data cade di sabato o domenica. Ecco una routine che svolge questo lavoro:

 

Function ControllaGiorno(Giorno as variant, Flag as integer ) as variant

' La variabile flag indica se la funzione deve restituire il

' nome del giorno o un valore boolean ( Vero/ Falso)

if Flag then

select case weekday(Giorno)

case vbSaturday

ControllaGiorno = "Sabato"

case vbSunday

ControllaGiorno = "Domenica"

case else

ControllaGiorno = vbNull

end select

else

select case weekday(Giorno)

case vbSaturday, vbSunday

ControllaGiorno = true

case else

ControllaGiorno= false

end select

end if

End Function

 


4) Come aprire un file di testo in una text:

Open NomeFile For Input As #1
Do While EOF(1) = False
Line Input #1, dato
Text1 = Text1 + dato & vbCrLf
Loop
Close #1


 

5) Come salvare il contenuto di una text in un file:

Open NomeFile For Output As #1
Print #1, Text1
Close #1


6) Come creare un MessagBox di informazione

MsgBox "Programma realizzato da Daniele Simone" + Chr(13) + Space(20) + "Giugno 2000", vbInformation, "Autore"


7) Classe capace di salvare in un database.(realizzato da Autore sito Daniele Simone.  Scarica!


8) Come stampare una form.

Frmprova.printForm


9) Esempio di un ciclo for, esso effettua un cronometro da 1 a 100.

for x=1 to 100

    lblConteggio=x

next x


10)Esempio di una query capace di caricare tutti i recorset, di una tabella

sql1="select * from NomeAzienda"

*"NomeAzienda e il nome della tabella"


11)INSERIRE A RUN-TIME I NOMI DEI FONT'S DISPONIBILI PER FACILITARNE LA SELEZIONE

      Dim I As Integer

For I = 0 to Screen.FontCount - 1

    Combo1.AddItem Screen.Fonts(I)

Next I

Per cambiare il font di un controllo quindi, utilizzare la seguente procedura

Private Sub Combo1_Click()

    Text1.FontName = Combo1.Text

      End Sub


 

12)UNA FUNZIONE PER IL NUMERO DI VERSIONE DEL PROGRAMMA ...

Public Function NumeroVersione() As String

Static Nv As String

If Nv = "" Then

Nv = Trim$(Str$ (App.Major)) & "." & Format$(App.Minor , "##00") & _

"." & Format$(App.Revision , 000)

End If

NumeroVerione = Nv

      End Function

13)QUANTE LINEE HA UNA TEXTBOX MULTILINEA?

Public Const WM_USER = &H400

Public Const EM_GETLINECOUNT = WM_USER + 10

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd _As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

 

Function ContaLinee (X As TextBox) As Integer

If X.Multiline = True Then

Dim ret As Long

ret=SendMessage (X.hWnd,EM_GETLINECOUNT,0,0)

Contalinee = ret

Else

Contalinee = 1

End If

End Function


14)CREARE UNA SCRITTA SCORREVOLE

Dim Titolo As String

Private Sub Command1_Click()

Titolo = String(30, " ") + "Questa e' una stringa scorrevole"

Timer1.Enabled = True

End Sub

 

Private Sub Timer1_Timer()

Titolo = Mid(Titolo, 2) & Left(Titolo, 1)

Text1.Text = Titolo

End Sub


15)Aprire il cassettino di un Lettore cd

Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _

(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _

ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

 

Apre il cassetto...

 

Dim retvalue As Long

retvalue = mciSendString("set CDAudio door open", returnstring, 127, 0)

 

... e lo richiude

 

retvalue = mciSendString("set CDAudio door closed", returnstring, 127, 0)


16)Evidenziare il testo di una textbox

          Sub Text1_GotFocus()

Text1.SelStart=0

Text1.SelLength=65000

End Sub

 17)APRIRE UNA COMBOBOX IN AUTOMATICO QUANDO RICEVE IL FOCUS

Sub Combo1_GotFocus()

SendKeys "%{Down}"

End Sub

18)Impostare la propietā KeyPreview del Form sul valore TRUE e inserire il seguente codice nell'evento KeyPress dello stesso Form

 

Sub Form_KeyPress (KeyAscii As Integer)

If KeyAscii = 13 Then

If TypeOf ActiveControl Is TextBox Then

SendKeys {"TAB"}

KeyAscii=0

End If

End If

End Sub


19)Ricerca veloce in una listbox 

Dichiarazioni

 

Public Declare Function SendMessageStr Lib "user32" Alias "SendMessageA" _

ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

 

Public Const LB_FINDSTRING &H18F

 

Per ricercare una stringa all'interno della ListBox, basta a questo punto richiamare la funzione

SendMessage passandogli come parametro l'handle della ListBox e la stringa da ricercare:

 

List1.Listindex = SendMessageStr (List1.hWnd, LB_FINDSTRING, 0&, StringaDaRicercare$)

 

la funzione restituirā, se ha trovato la corrispondenza all'interno della ListBox, il numero di index della stringa ricercata; altrimenti restituira il valore -1


 

20)Massimo comune divisore, minimo comune divisore

Con la seguente funzione č possibile calcolare il Massimo Comune Divisore fra due numeri interi

 

Function MaxComuneDivisore(Primo As Long, Secondo As Long) As Long

Dim Temp As Long

Primo = Abs(Primo)

Secondo = Abs(Secondo)

Temp = Primo Mod Secondo

Do While Temp > 0

Primo = Secondo

Secondo = Temp

Temp = Primo Mod Secondo

Loop

MaxComuneDivisore = Secondo

End Function

 

Con la seguente funzione č possibile calcolare il Minimo Comune Multiplo fra due numeri interi

 

Function MinimoComuneMult(Primo As Long, Secondo as Long) As Long

MinimoComuneMult = abs(Secondo) * (Abs(Primo) \ MaxComuneDivisore(Primo,Secondo))

End Function


 21)Semplici esempi di codice per implementare funzioni di modifica in qualsiasi editor di testo. (Impostare la proprieta' Multiline della TextBox a TRUE)

 

'Taglia' il testo selezionato

Clipboard.SetText Text1.SelText

Text1.SelText=""

 

'Copia' il testo selezionato

Clipboard.SetText Text1.SelText

 

'Incolla' il testo dagli Appunti

Public Sub Incolla()

Dim Dummy1 As String

Dim Dummy2 As String

If Clipboard.GetFormat(vbCFText) Then

Dummy1 = Left(Text1.Text, Text1.SelStart)

Dummy2 = Right(Text1.Text, Len(Text1.Text) - Text1.SelStart)

Text1.Text = Dummy1 & Clipboard.GetText & Dummy2

Else

MsgBox "Il contenuto degli appunti non puo' essere incollato!"

End If

End Sub

 

'Seleziona tutto' il testo della TextBox

Text1.SelStart=0

Text1.SelLenght = Len(Text1.Text)

 

'Trova' il testo indicato

Public Sub TrovaTesto(TestodaCercare As String)

Dim i as Integer

i = InStr(Text1.SelStart, Text1.Text, TestodaCercare)

If i = 0 then MsgBox "Elemento non trovato!" : Exit Sub

Text1.SelStart = i

Text1.SelLenght = Len(TestodaCercare)

End Sub

 

'Sostituisci' il testo indicato con altro testo

Public Sub Sostituisci(TestodaCercare As String, TestoSostituto As String)

Dim i as Integer

i = InStr(Text1.SelStart, Text1.Text, TestodaCercare)

If i = 0 then MsgBox "Elemento non trovato!" : Exit Sub

Text1.SelStart = i

Text1.SelLenght = Len(TestodaCercare)

Text1.SelText = TestoSostituto

End Sub


  22)Rendere3 fisso il bordo di una Mdi Form

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"

(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As

Long

 

l = l And Not (WS_MAXIMIZEBOX)

l = SetWindowLong(Me.hWnd, GWL_STYLE, l)



23)Aprire un mdb protetto

MyFile = percorso$ + nome_db$

'password conosciuta

x$ = "pwd=9999"

'Carica l'area di lavoro predefinita.

Set MyWorkspace = Workspaces(0)

Set MyDatabase = MyWorkspace.OpenDatabase(MyFile, False, False, x$)

 

'Si scrive cosi seguito dalla password conosciuta

pwd=


24)Inserire solo nuemeri:

Inserire nell'evento Keypress:

 

Select Case KeyAscii

Case 0 To 9, 48 To 57

Case Else

KeyAscii = 0

End Select


25)Se il file esiste:

Check if file exists

On Error Resume Next

check = Dir(DumpFile)

If Err <> 0 Then

MsgBox "Il nome del file non č corretto."

Exit Sub

End If

If (check <> "") Then

ret = MsgBox("Il file " & DumpFile & " esiste giā.

      Sovrascrivo?", vbYesNo)

If ret = vbNo Then

Exit Sub

End If

End If

dove DumpFile e' il path completo del file da controllare ...


26)Da quando tempo windows e attivo 

Declare Function GetTickCount Lib "Kernel32" () As Long

Dim Tempo As Long

La Variabile TEMPO dā il risultato in minuti

Tempo = ((GetTickCount / 1000) / 60)


 27)Richiamare un file help:

Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long

 

Sub OpenHelpFile(HelpFileName As String)

'dove HelpFileName e' il path del file di help

WinHelp hwnd, HelpFileName, HELP_CONTENTS, 0

End Sub

 


 28)Nome computer, rilevarlo:

"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

 

Dim temp As String * 128

Dim l As Long

l = GetComputerName(temp, 128)

MsgBox temp