Skinnysite.net

... un modo di esprimersi.

Font Size

Cpanel

Homa Page di Daniele Franceschini

Come visualizzare una combobox in una cella di una flexgrid

Valutazione attuale:  / 0
ScarsoOttimo 

Questo esempio richiede che su un form siamo presenti una Flexgrid chiamata flexGrid e una Combobox chiamata cmb con la proprietà visible = false da posizionare in un punto qualsiasi del form. La griglia verrà valorizzata da un recordset creato da query o stored procedure che viene eseguita dalla classe clsDB presente nella sezione Visual Basic del sito, quindi per eseguire questo codice è indispensabile prendere anche questa classe. Quando il programma sarà in esecuzione basterà premere in una cella qualsiasi della colonna 3 della griglia e se tutto va bene dovrebbe comparire la combo con i valori che gli avevate assegnato. Premendo in un qualsiasi altro punto della griglia la combo scompare e la griglia riassume la visualizzazione originale.


'Copyright (C) 2003  Daniele Franceschini
'
'This program is free software; you can redistribute it and/or
'modify it under the terms of the GNU General Public License
'as published by the Free Software Foundation; either version 2
'of the License, or (at your option) any later version.
'
'This program is distributed in the hope that it will be useful,
'but WITHOUT ANY WARRANTY; without even the implied warranty of
'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
'GNU General Public License for more details.
'
'You should have received a copy of the GNU General Public License
'along with this program; if not, write to the Free Software
'Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

'Se non funziona arrangiatevi o fatemi sapere ma se riuscite a levarvi il dito
'dal naso da soli è meglio.

Private Sub flexGrid_SelChange()
flexGrid_Click
End Sub

Private Sub flexGrid_Click()
Dim i As Byte

With flexGrid
For i = 1 To .Rows - 1
.RowHeight(i) = myRowHeight
Next i
If .ColSel = 3 Then
.Col = .ColSel
If .Text = cmbAbilit.List(0) Then
cmb.ListIndex = 0
Else
cmb.ListIndex = 1
End If
.RowHeight(.RowSel) = cmb.Height
cmb.Visible = True
cmb.Move .CellLeft + .Left, .CellTop + .Top, .CellWidth
Else
cmb.Visible = False
End If
End With
End Sub

Private Sub cmb_Click()
If flexGrid.ColSel = 3 Then
flexGrid.Text = cmb.List(cmb.ListIndex)
End If
End Sub

Private Sub LoadGrid()
'Con questa sub si riempie la griglia
Dim sSql As String
Dim rs As ADODB.Recordset
'Per gestire del DataBase ho utilizzato la classe clsDB presente nel precedente articolo
Dim myDB As New clsDB
Dim i As Integer

myDB.DB_ConnectioString = "Password=" & DBPassword & ";" & "User ID=" & DBAdmin & ";" & DSN

'Le variabili parametro potrebbero essere delle proprietà
sSql = "sp_StoredProcedure '" & Parametro1 & "'," & Parametro2

'Questo metodo dellla classe su menzionata esegue una query
'o stored procedure
Set rs = myDB.RunSQL(sSql, False, myDB.DB_ConnectioString)
BuidGrid rs
If rs.EOF Then rs.MoveFirst
'In questo esempio il recordset è composto da 4 campi
Do Until rs.EOF
i = i + 1
With flexGrid
.Row = i
.RowHeight(i) = myRowHeight
.Col = 0
.Text = rs(0)
.Col = 1
.Text = rs(1)
.Col = 2
.Text = rs(2)
.Col = 3
.Text = rs(3)
End With
rs.MoveNext
Loop
End Sub

Private Sub BuidGrid(rs As ADODB.Recordset)
'Con questa sub si costruisce la flexgrid
With flexGrid
.Cols = 4
.Rows = rs.Recordcount
.RowHeight(0) = 280
.Row = 0
.Col = 0
.Text = "ID"
.ColWidth(0) = 300
.Col = 1
.ColWidth(1) = 1500
.Text = "Funzione"
.Col = 2
.ColWidth(2) = 800
.Text = "Utente"
.Col = 3
.Text = "Abilitazione"
End With
End Sub

 

Sei qui: Home Code Snippets Visual Basic 6 Come visualizzare una combobox in una cella di una flexgrid