VB6 Griser un calendrier (Enabled)
Dernière réponse : dans Programmation
Bonjour à tous,
J'ai un formulaire qui me sert à la fois d'édition et de visualisation de données personnelles (Nom, prénom, adresse, date de naissance...). Pour la date de naissance, j'ai un calendrier dans lequel on choisit le mois et l'année, puis on clique sur le jour.
Dans le cas d'une édition, toutes les textbox et le calendrier sont accessibles (Enabled = True). Mais dans le cas d'une visualisation, toutes les textbox sont grisées, inaccessibles (Enabled = False). Par contre le calendrier, lui, n'a pas de propriété Enabled.
Y a t'il tout de même un moyen pour le griser ?
Merci.
J'ai un formulaire qui me sert à la fois d'édition et de visualisation de données personnelles (Nom, prénom, adresse, date de naissance...). Pour la date de naissance, j'ai un calendrier dans lequel on choisit le mois et l'année, puis on clique sur le jour.
Dans le cas d'une édition, toutes les textbox et le calendrier sont accessibles (Enabled = True). Mais dans le cas d'une visualisation, toutes les textbox sont grisées, inaccessibles (Enabled = False). Par contre le calendrier, lui, n'a pas de propriété Enabled.
Y a t'il tout de même un moyen pour le griser ?
Merci.
Autres pages sur : vb6 griser calendrier enabled
Lassé par la pub ? Créez un compte
Meilleure solution
Il n'y a rien qui m'énerve plus qu'un bout de programme mal fichu. Or ce calendrier pourtant made by Crosoft n'exporte pas sa propriété Enabled. Quelle honte !
De plus, les contrôles n'exportent pas non plus leur handle, avec lequel il serait facile d'appliquer les API standards. Pas grave, on va le trouver quand même, ce handle
-------------------------------------
@Beber : Ça marche, mais c'est vraiment capilotracté ! En plus, si plusieurs contrôles de classe CalendarWndClass existe sur la même feuille, il y a risque de confusion. Le VB, c'est vraiment pas un langage joli, joli !!!!
Je crois te l'avoir déjà dit, utilise un DTPicker
De plus, les contrôles n'exportent pas non plus leur handle, avec lequel il serait facile d'appliquer les API standards. Pas grave, on va le trouver quand même, ce handle
' // Apprendre les API à VB
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Sub Command1_Click()
Dim hWnd As Long
' // Je vais le trouver quand même ton handle !
hWnd = FindWindowEx(Me.hWnd, 0, "CalendarWndClass", vbNullString)
' // Voilà, je t'ai eu !
If EnableWindow(hWnd, False) <> 0 Then EnableWindow hWnd, True
End Sub
-------------------------------------
@Beber : Ça marche, mais c'est vraiment capilotracté ! En plus, si plusieurs contrôles de classe CalendarWndClass existe sur la même feuille, il y a risque de confusion. Le VB, c'est vraiment pas un langage joli, joli !!!!
Je crois te l'avoir déjà dit, utilise un DTPicker
Salut,
Quel contrôle utilises-tu ?
J'en connais trois :
MonthView (MSCOMCT2.OCX)
DTPicker (MSCOMCT2.OCX)
Calendar (MSCAL.OCX)
Comme seul Calendar semble poser problème, je suppose que c'est lui qui t'embête. Je t'invite d'abord à reconsidérer ton choix de contrôle. Personnellement, DTPicker est mon préféré.
Cela dit, je n'ai pas le droit de t'imposer mes choix. Or donc, Calendar est un contrôle pour choisir une date, pas pour l'afficher. Donc voici une alternative, encore et toujours proposée sous forme de fichier FRM à charger dans un projet temporaire :
Quel contrôle utilises-tu ?
J'en connais trois :
Comme seul Calendar semble poser problème, je suppose que c'est lui qui t'embête. Je t'invite d'abord à reconsidérer ton choix de contrôle. Personnellement, DTPicker est mon préféré.
Cela dit, je n'ai pas le droit de t'imposer mes choix. Or donc, Calendar est un contrôle pour choisir une date, pas pour l'afficher. Donc voici une alternative, encore et toujours proposée sous forme de fichier FRM à charger dans un projet temporaire :
VERSION 5.00
Object = "{8E27C92E-1264-101C-8A2F-040224009C02}#7.0#0"; "mscal.OCX"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 8415
ClientLeft = 60
ClientTop = 345
ClientWidth = 4695
LinkTopic = "Form1"
ScaleHeight = 8415
ScaleWidth = 4695
StartUpPosition = 3 'Windows Default
Begin VB.Frame Frame2
BackColor = &H000000A0&
BorderStyle = 0 'None
ForeColor = &H00A00000&
Height = 3615
Left = 120
TabIndex = 4
Top = 4680
Width = 4455
Begin VB.TextBox Text2
Enabled = 0 'False
Height = 375
Left = 120
TabIndex = 6
Text = "Text1"
Top = 120
Visible = 0 'False
Width = 2535
End
Begin MSACAL.Calendar Calendar2
Height = 3375
Left = 120
TabIndex = 5
Top = 120
Width = 4215
_Version = 524288
_ExtentX = 7435
_ExtentY = 5953
_StockProps = 1
BackColor = -2147483633
Year = 2010
Month = 8
Day = 17
DayLength = 1
MonthLength = 2
DayFontColor = 0
FirstDay = 1
GridCellEffect = 1
GridFontColor = 160
GridLinesColor = -2147483632
ShowDateSelectors= -1 'True
ShowDays = -1 'True
ShowHorizontalGrid= -1 'True
ShowTitle = -1 'True
ShowVerticalGrid= -1 'True
TitleFontColor = 160
ValueIsNull = 0 'False
BeginProperty DayFont {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
BeginProperty GridFont {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
BeginProperty TitleFont {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
End
End
Begin VB.CheckBox Check2
Caption = "Le contrôle Calendar 2 est rendu invisible et remplacé"
ForeColor = &H000000A0&
Height = 255
Left = 120
TabIndex = 3
Top = 4320
Value = 1 'Checked
Width = 4455
End
Begin VB.CheckBox Check1
Caption = "Le contrôle Calendar 1 est activé par son conteneur"
ForeColor = &H00A00000&
Height = 255
Left = 120
TabIndex = 2
Top = 120
Value = 1 'Checked
Width = 4455
End
Begin VB.Frame Frame1
BackColor = &H00A00000&
BorderStyle = 0 'None
ForeColor = &H00A00000&
Height = 3615
Left = 120
TabIndex = 0
Top = 480
Width = 4455
Begin MSACAL.Calendar Calendar1
Height = 3375
Left = 120
TabIndex = 1
Top = 120
Width = 4215
_Version = 524288
_ExtentX = 7435
_ExtentY = 5953
_StockProps = 1
BackColor = -2147483633
Year = 2010
Month = 8
Day = 17
DayLength = 1
MonthLength = 2
DayFontColor = 0
FirstDay = 1
GridCellEffect = 1
GridFontColor = 10485760
GridLinesColor = -2147483632
ShowDateSelectors= -1 'True
ShowDays = -1 'True
ShowHorizontalGrid= -1 'True
ShowTitle = -1 'True
ShowVerticalGrid= -1 'True
TitleFontColor = 10485760
ValueIsNull = 0 'False
BeginProperty DayFont {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
BeginProperty GridFont {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "Arial"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
BeginProperty TitleFont {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
End
End
Begin VB.Line Line2
BorderColor = &H80000014&
X1 = 120
X2 = 4560
Y1 = 4215
Y2 = 4215
End
Begin VB.Line Line1
BorderColor = &H80000010&
X1 = 120
X2 = 4560
Y1 = 4200
Y2 = 4200
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Calendar2_Click()
Text2.Text = Format(Calendar2.Value, "dddd d mmmm yyyy")
End Sub
Private Sub Check1_Click()
Frame1.Enabled = Check1.Value <> 0
End Sub
Private Sub Check2_Click()
Text2.Visible = Check2.Value = 0
Calendar2.Visible = Check2.Value <> 0
End Sub
Private Sub Form_Load()
Calendar2_Click
End Sub
Je crois que j'avais demandé :
Finalement j'ai choisi le DTPicker. Le dénommé Zeb m'a ré-aiguillé sur ce contrôle. Ouf !!!
Au passage, je le trouve mieux que le Calendar, et ça prend moins de place.
Merci.
Citation :
Autre chose : dans VB 2010, il y a un calendrier dans lequel on peut choisir une date (ex pour une date de naissance). On peut faire ça dans VB 6.0 ?
Finalement j'ai choisi le DTPicker. Le dénommé Zeb m'a ré-aiguillé sur ce contrôle. Ouf !!!
Au passage, je le trouve mieux que le Calendar, et ça prend moins de place.
Merci.
Ah oui, ça y est, je me rappelle... En fait, et rien que pour .... les beaux yeux de ta fiancée
je me suis réinstallé un VB6 afin de t'aider plus efficacement (authentique). Ça me permet de me souvenir avec plus d'assurance le nom des contrôles. Pour info, je n'avais pas encore refait cette install et je t'en parlais de mémoire.
je me suis réinstallé un VB6 afin de t'aider plus efficacement (authentique). Ça me permet de me souvenir avec plus d'assurance le nom des contrôles. Pour info, je n'avais pas encore refait cette install et je t'en parlais de mémoire.
Lassé par la pub ? Créez un compte
![[:patch] [:patch]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/e5/c5/patch.gif)