Accueil > > > CHECKBOX DANS UNE DBGRID
CHECKBOX DANS UNE DBGRID
Information sur la source
Description
un peut artisanal pour l'instant, un programme de démo ou j'ai reussi à mettre une case à coché dans une dbgrid !!! Si quelqu'un fait mieu.. JE SUIS PRENEUR !!! PS: Le Zip contient le source en VB5, ainsi que la base de test. A+ Patrick http://jeux.cartes.free.fr
Source
- VERSION 5.00
- Object = "{00028C01-0000-0000-0000-000000000046}#1.0#0"; "DBGRID32.OCX"
- Begin VB.Form Form1
- Caption = "Form1"
- ClientHeight = 3570
- ClientLeft = 60
- ClientTop = 450
- ClientWidth = 8595
- LinkTopic = "Form1"
- ScaleHeight = 3570
- ScaleWidth = 8595
- StartUpPosition = 3 'Windows Default
- Begin VB.CommandButton Command1
- Caption = "Quitter"
- Height = 495
- Left = 6120
- TabIndex = 2
- Top = 2520
- Width = 975
- End
- Begin VB.Timer DBGridTimerScrool
- Enabled = 0 'False
- Interval = 10
- Left = 3840
- Top = 1200
- End
- Begin VB.CheckBox Check1
- BackColor = &H80000005&
- Caption = " "
- DataField = "ok"
- DataSource = "Data1"
- Height = 255
- Left = 3120
- MaskColor = &H8000000F&
- TabIndex = 1
- TabStop = 0 'False
- Top = 360
- Width = 495
- End
- Begin VB.Data Data1
- Caption = "Data1"
- Connect = "Access"
- DatabaseName = ".\test.mdb"
- DefaultCursorType= 0 'DefaultCursor
- DefaultType = 2 'UseODBC
- Exclusive = 0 'False
- Height = 495
- Left = 240
- Options = 0
- ReadOnly = 0 'False
- RecordsetType = 1 'Dynaset
- RecordSource = "test"
- Top = 2880
- Width = 4815
- End
- Begin MSDBGrid.DBGrid DBGrid1
- Bindings = "Form1.frx":0000
- Height = 2775
- Left = 240
- OleObjectBlob = "Form1.frx":0010
- TabIndex = 0
- Top = 120
- Width = 4815
- End
- End
- Attribute VB_Name = "Form1"
- Attribute VB_GlobalNameSpace = False
- Attribute VB_Creatable = False
- Attribute VB_PredeclaredId = True
- Attribute VB_Exposed = False
- '---------------------------------------------------------------------------------------------------------------
- ' (C) Patrick MOIRE
- ' http:\\jeux.cartes.free.fr
- '---------------------------------------------------------------------------------------------------------------
- '
- ' Exemple de gestion d'une CheckBox dans une dbGrid !
- '
- '---------------------------------------------------------------------------------------------------------------
-
- Option Explicit
-
- '- - - - - - Indice de la colonne ayant la CheckBox
-
- Private Const CheckColonne = 2
-
- '- - - - - - Working
-
- Private TimerAction As EnumTimerAcion
- Private Enum EnumTimerAcion
- vbNone
- vbScrool
- vbSetFocus
- End Enum
-
- Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
- Private Const VK_SHIFT = &H10
- Private Const VK_LEFT = &H25
- Private Const VK_RIGHT = &H27
- Private Const VK_DOWN = &H28
- Private Const VK_UP = &H26
-
- '- - - - - - Chargement de la feuille
-
- Private Sub Form_Load()
- Me.DBGrid1.Columns(CheckColonne).Locked = True
- Me.Check1.DataField = Me.DBGrid1.Columns(CheckColonne).DataField
- Me.Check1.BackColor = Me.DBGrid1.BackColor
- End Sub
-
- '- - - - - - Fait suivre la combo
-
- Private Sub DBGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
- DBGrid1_ColResize -1, False
- End Sub
-
- Private Sub DBGrid1_RowResize(Cancel As Integer)
- DBGrid1_ColResize -1, Cancel
- End Sub
-
- Private Sub DBGrid1_Scroll(Cancel As Integer) 'RQ: passe par un timer, l'évenement étant généré avant execution du "scrool"
- DBGridTimerScrool.Enabled = False
- DBGridTimerScrool.Enabled = True
- TimerAction = vbScrool
- End Sub
-
- Private Sub DBGrid1_ColResize(ByVal ColIndex As Integer, Cancel As Integer)
- Dim Colone As Column
- Me.Check1.Visible = (Me.DBGrid1.Row >= 0)
- If Me.Check1.Visible Then
- Set Colone = Me.DBGrid1.Columns(CheckColonne)
- Me.Check1.Move Me.DBGrid1.Left + Colone.Left + 60, Me.DBGrid1.Top + Me.DBGrid1.RowTop(Me.DBGrid1.Row) + 15, Colone.Width - 75, Me.DBGrid1.RowHeight - 30
- Me.Check1.Caption = Colone.Text
- Me.Check1.Tag = Me.DBGrid1.Row
- If Me.DBGrid1.Col = CheckColonne Then DBGrid1_KeyUp 0, 0
- End If
- End Sub
-
- '- - - - - - fait suivre le focus sur la CheckBox
-
- Private Sub DBGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
- If Me.DBGrid1.Col = CheckColonne Then
- DBGridTimerScrool.Enabled = False 'RQ: passe par un timer, sinon fonctionne pas !
- DBGridTimerScrool.Enabled = True
- TimerAction = vbSetFocus
- End If
- End Sub
-
- Private Sub DBGridTimerScrool_Timer()
- DBGridTimerScrool.Enabled = False
- Select Case TimerAction
- Case vbSetFocus
- Me.Check1.SetFocus
- Case vbScrool
- DBGrid1_ColResize -1, False
- End Select
- TimerAction = vbNone
- End Sub
-
-
- '- - - - - - fait suivre le focus et modif de la CheckBox sur la dbGrid
-
- Private Sub Check1_LostFocus()
- Debug.Print GetKeyState(VK_DOWN)
- Debug.Print Me.Check1.Tag = Me.DBGrid1.Row
- If Me.Check1.Tag = Me.DBGrid1.Row Then
- If GetKeyState(VK_DOWN) < 0 Then
- On Error Resume Next
- Me.DBGrid1.Row = Me.DBGrid1.Row + 1
- On Error GoTo 0
- ElseIf GetKeyState(VK_UP) < 0 Then
- On Error Resume Next
- Me.DBGrid1.Row = Me.DBGrid1.Row - 1
- On Error GoTo 0
- ElseIf Me.DBGrid1.Col = CheckColonne Then
- Me.DBGrid1.Col = CheckColonne + IIf(GetKeyState(VK_SHIFT) < 0 Or GetKeyState(VK_LEFT) < 0, -1, 1)
- End If
- End If
- End Sub
-
- Private Sub Check1_Click()
- Me.Check1.Caption = Format(Me.Check1.Value = vbChecked, Me.DBGrid1.Columns(CheckColonne).NumberFormat)
- End Sub
VERSION 5.00
Object = "{00028C01-0000-0000-0000-000000000046}#1.0#0"; "DBGRID32.OCX"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3570
ClientLeft = 60
ClientTop = 450
ClientWidth = 8595
LinkTopic = "Form1"
ScaleHeight = 3570
ScaleWidth = 8595
StartUpPosition = 3 'Windows Default
Begin VB.CommandButton Command1
Caption = "Quitter"
Height = 495
Left = 6120
TabIndex = 2
Top = 2520
Width = 975
End
Begin VB.Timer DBGridTimerScrool
Enabled = 0 'False
Interval = 10
Left = 3840
Top = 1200
End
Begin VB.CheckBox Check1
BackColor = &H80000005&
Caption = " "
DataField = "ok"
DataSource = "Data1"
Height = 255
Left = 3120
MaskColor = &H8000000F&
TabIndex = 1
TabStop = 0 'False
Top = 360
Width = 495
End
Begin VB.Data Data1
Caption = "Data1"
Connect = "Access"
DatabaseName = ".\test.mdb"
DefaultCursorType= 0 'DefaultCursor
DefaultType = 2 'UseODBC
Exclusive = 0 'False
Height = 495
Left = 240
Options = 0
ReadOnly = 0 'False
RecordsetType = 1 'Dynaset
RecordSource = "test"
Top = 2880
Width = 4815
End
Begin MSDBGrid.DBGrid DBGrid1
Bindings = "Form1.frx":0000
Height = 2775
Left = 240
OleObjectBlob = "Form1.frx":0010
TabIndex = 0
Top = 120
Width = 4815
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'---------------------------------------------------------------------------------------------------------------
' (C) Patrick MOIRE
' http:\\jeux.cartes.free.fr
'---------------------------------------------------------------------------------------------------------------
'
' Exemple de gestion d'une CheckBox dans une dbGrid !
'
'---------------------------------------------------------------------------------------------------------------
Option Explicit
'- - - - - - Indice de la colonne ayant la CheckBox
Private Const CheckColonne = 2
'- - - - - - Working
Private TimerAction As EnumTimerAcion
Private Enum EnumTimerAcion
vbNone
vbScrool
vbSetFocus
End Enum
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_SHIFT = &H10
Private Const VK_LEFT = &H25
Private Const VK_RIGHT = &H27
Private Const VK_DOWN = &H28
Private Const VK_UP = &H26
'- - - - - - Chargement de la feuille
Private Sub Form_Load()
Me.DBGrid1.Columns(CheckColonne).Locked = True
Me.Check1.DataField = Me.DBGrid1.Columns(CheckColonne).DataField
Me.Check1.BackColor = Me.DBGrid1.BackColor
End Sub
'- - - - - - Fait suivre la combo
Private Sub DBGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
DBGrid1_ColResize -1, False
End Sub
Private Sub DBGrid1_RowResize(Cancel As Integer)
DBGrid1_ColResize -1, Cancel
End Sub
Private Sub DBGrid1_Scroll(Cancel As Integer) 'RQ: passe par un timer, l'évenement étant généré avant execution du "scrool"
DBGridTimerScrool.Enabled = False
DBGridTimerScrool.Enabled = True
TimerAction = vbScrool
End Sub
Private Sub DBGrid1_ColResize(ByVal ColIndex As Integer, Cancel As Integer)
Dim Colone As Column
Me.Check1.Visible = (Me.DBGrid1.Row >= 0)
If Me.Check1.Visible Then
Set Colone = Me.DBGrid1.Columns(CheckColonne)
Me.Check1.Move Me.DBGrid1.Left + Colone.Left + 60, Me.DBGrid1.Top + Me.DBGrid1.RowTop(Me.DBGrid1.Row) + 15, Colone.Width - 75, Me.DBGrid1.RowHeight - 30
Me.Check1.Caption = Colone.Text
Me.Check1.Tag = Me.DBGrid1.Row
If Me.DBGrid1.Col = CheckColonne Then DBGrid1_KeyUp 0, 0
End If
End Sub
'- - - - - - fait suivre le focus sur la CheckBox
Private Sub DBGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
If Me.DBGrid1.Col = CheckColonne Then
DBGridTimerScrool.Enabled = False 'RQ: passe par un timer, sinon fonctionne pas !
DBGridTimerScrool.Enabled = True
TimerAction = vbSetFocus
End If
End Sub
Private Sub DBGridTimerScrool_Timer()
DBGridTimerScrool.Enabled = False
Select Case TimerAction
Case vbSetFocus
Me.Check1.SetFocus
Case vbScrool
DBGrid1_ColResize -1, False
End Select
TimerAction = vbNone
End Sub
'- - - - - - fait suivre le focus et modif de la CheckBox sur la dbGrid
Private Sub Check1_LostFocus()
Debug.Print GetKeyState(VK_DOWN)
Debug.Print Me.Check1.Tag = Me.DBGrid1.Row
If Me.Check1.Tag = Me.DBGrid1.Row Then
If GetKeyState(VK_DOWN) < 0 Then
On Error Resume Next
Me.DBGrid1.Row = Me.DBGrid1.Row + 1
On Error GoTo 0
ElseIf GetKeyState(VK_UP) < 0 Then
On Error Resume Next
Me.DBGrid1.Row = Me.DBGrid1.Row - 1
On Error GoTo 0
ElseIf Me.DBGrid1.Col = CheckColonne Then
Me.DBGrid1.Col = CheckColonne + IIf(GetKeyState(VK_SHIFT) < 0 Or GetKeyState(VK_LEFT) < 0, -1, 1)
End If
End If
End Sub
Private Sub Check1_Click()
Me.Check1.Caption = Format(Me.Check1.Value = vbChecked, Me.DBGrid1.Columns(CheckColonne).NumberFormat)
End Sub
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2) par JeremyJeanson
Après mon précédent article qui attaque les contraintes par la fasse Nord de l'Everest. passons à la seconde possibilité offerte par WF4 pour valider une activité : la metadata . Je vous en ai déjà toucher un ou deux mots. La metadata dans WF4 est un élém...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja [MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|