11. µøµ¡³q¥Î«¬±±¨î¶µ¡G²Ä¤G³¡¥÷

¥»³¹¦b¸ÑÄÀ¥HMsComCt2.ocx©MComCt332.ocx¬°¥DªºMicrosoftµøµ¡³q¥Î±±¨î¶µ¡C§ó¨ãÅé¦a»¡¡AMsComCt2.ocxÀÉ®×¥]§tAnimation¡BUpDown¡BMonthView¡BDateTimePicker©MFlatScrollBar±±¨î¶µ¡A¬Û¹ï©óComCt332.ocxÀÉ®×¥u¥]§tCoolBar±±¨î¶µ¡C

Animation±±¨î¶µ
¡@

Animation±±¨î¶µ¯à¼½©ñAVIÀɮסA©Ò¥H¥i¥H¦b±zªºµ{¦¡¤¤¼½©ñ²³æªº°Êµe¡C¸Ó±±¨î¶µ¥u¤ä´©¤£§tÁn­µ¡B¤]¨S¦³À£ÁYªºAVIÀÉ¡A©Î¥HRun-Length Encoding®æ¦¡À£ÁYªºAVIÀÉ¡C­Y·Q­n¼½©ñ«D¤W­zªºAVIÀɮɡA·|Åã¥Ü¿ù»~°T®§35752¡G¡uµLªk¶}±ÒAVIÀɮסv¡C

Animation±±¨î¶µ¹ï©ó¼½©ñ²³æªº°Êµe®æ¥~¦³¥Î¡A¨Ò¦p¦bMicrosoft Visual Basic¥D­n¦w¸Ë¥Ø¿ý¤U\Common\Graphics\AVIs¤l¥Ø¿ýªº¨º¨ÇÀɮסCÁ|¨Ò¨Ó»¡¡A·í­n¦b­I´º°õ¦æÀɮ׽ƻs§@·~®É¡A¥i¨Ï¥Î¦¹±±¨î¶µÅã¥Ü±q¤@­Ó¸ê®Æ§¨½Æ»s¨ì¥t¤@­Ó¸ê®Æ§¨®Éªº¯È±i­¸¦æ°Êµe¡A¦p¹Ï11-1©Ò¥Ü¡C


¡@

¹Ï11-1 ¦b®ÑªþCD¤¤ªº®i¥Üµ{¦¡Åý±zÅéÅçAnimation±±¨î¶µ¡C

Animation±±¨î¶µ©µ¦ù¥X¤T­Ó¥D­nªºÄÝ©Ê¡C¨ä¤¤ªºCenter©MBackStyle¥u¯à¦b³]©w¶¥¬q¥[¥H³]©w¡A¦b°õ¦æ¶¥¬q«o¬O°ßŪªº¡C¦pªGCenterÄݩʬ°True¡AAVIÀÉ·|¦ì¦bAnimation±±¨îµøµ¡ªº¤¤¥¡¡]­ì¥»¦b¥ª¤W¨¤¼½©ñ¡^¡CBackStyleÄÝ©Ê¥i¥H¬O0-cc2BackstyleTransparent¡]¹w³]­È¡AÅã¥Ü±±¨î¶µªº­I´º¦â¡^©Î1-cc2BackstyleOpaque¡]Åã¥ÜAVI­I´º¡^¡C²Ä¤T­ÓÄÝ©Ê¡AAutoPlay¡A¥i¥H¦b¥ô¦ó®É­Ô¥[¥H³]©w¡C­Y³]¨ä¬°True¡A«h·íÀɮ׳Q¸ü¤J±±¨î¶µ®É¡A·|¦Û°Ê¼½©ñAVIÀɮסC¡]¦pªG°µ¤F³o­Ó³]©w¡A¥²¶·¸g¥Ñµ{¦¡½X³]©wAutoPlay¬°False¨Ó°±¤î¼½©ñ¡^¡C

¨S¦³³]­p¶¥¬qªºÄݩʱN¨M©w¦b°õ¦æ¶¥¬q­þ­ÓAVIÀÉ®×­n³Q¸ü¤J»PÅã¥Ü¡C¬°¤F­n¥Ñµ{¦¡½X¨Ó°_©l°Êµe¡A­º¥ý¥²¶·¶}±ÒAVIÀɮסA¥Îªº¬OOpen¤èªk¡G

Animation1.Open "d:\vb6\Graphics\AVIs\filecopy.avi"

¦pªGAutoPlayÄݩʬ°True¡AAVIÀÉ®×·|¦b³Q¸ü¤J®É¶}©l¼½©ñ¡C§_«h§A´N¥²¶·­n³z¹Lµ{¦¡½X¡]Play¤èªk¡^¥h±Ò°Ê¥¦¡A¤U­±¬O¨ä»yªk¡G

Play [RepeatCount], [StartFrame], [EndFrame]

RepeatCount¬O°Êµe¼½©ñªº¦¸¼Æ¡F¡]¹w³]­È¬°-1¡Aªí¥ÜµL­­¦¸¡C¡^StartFrame«h¬O°Êµeªº°_©l®Ø¬[¡]¹w³]­È¬°0¡A²Ä¤@­Ó®Ø¬[¡^¡FEndFrame¬O°Êµeªºµ²§À®Ø¬[¡]¹w³]¬°-1¡A³Ì«á¤@­Ó®Ø¬[¡^¡C

¦³¨â­Ó¤èªk¥i¥H°±¤î¼½©ñ°Êµe¡A¦Ó¤èªkªº¿ï¾Ü¨ú¨M©ó¥Î¦óºØ¤èªk±Ò°Ê¸Ó°Êµe¡C¦pªG°Êµe¬°AutoPlay¼Ò¦¡¡A«K¥u¯àÂǥѳ]©wAutoPlayÄݩʬ°False¨Ó°±¤î¥¦¡F¦pªG¥ÎPlay¤èªk¨Ó±Ò°Ê°Êµe¡A«h¥i¥ÎStop¤èªk¨Ó°±¤î¥¦¡F¦pªG¤£¥´ºâ¦A­«·s¼½©ñ¦P¼ËªºAVIÀɮסA¥i¥HÂÇ¥ÑClose¤èªk¨ÓÄÀ©ñ°O¾ÐÅéªÅ¶¡¡A¦p¤U­±ªºµ{¦¡½X©Ò¥Ü¡]°²³]AutoPlayÄݩʬ°False¡^¡G

Private Sub cmdStart_Click()
    Animation1.Open "d:\vb5\graphics\AVIs\filecopy.avi"
    Animation1.Play
End Sub
Private Sub cmdStop_Click()
    Animation1.Stop
    Animation1.Close
End Sub

Animation±±¨î¶µ¤£·|¥]§t¥ô¦ó¨Æ¥ó¡C³oªí¥Ü±zµLªk±oª¾°Êµe¦ó®Éµ²§ô¡C

UpDown±±¨î¶µ
¡@

UpDown±±¨î¶µ´£¨Ñ¤@­Ó²©ö«o¦³®Äªº¤èªk«Ø¥ß±Û¶s¡A©Ò¿×±Û¶s¦b¤@¯ëWindowsÀ³¥Îµ{¦¡«üªº¬O¡GÅã¥Ü¦b¼Æ¦rÄæ¦ì¥k°¼¡A¥i¥HÅý¨Ï¥ÎªÌ¥Î·Æ¹«ÂI¿ï¨Ó¼W¥[©Î´î¤ÖÄæ¦ì­Èªº«ö¶s¡C«Ø¥ß³oºØ±Û¶s¨Ã¤£¤ÓÃø¡Ð¤£¹L¥i¥H¨Ï¥Î¤pªºVScrollBar±±¨î¶µ¡A©Î¨Ï¥Î¨â­ÓStyle¬°1-Graphicalªº¤p«ö¶s¡Ð¤£¹LUpDown±±¨î¶µ¦³§ó¦h¦n³B¡A¥B¨ä«Ø¥ß»P¨Ï¥Î»·¸û¨ä¥L¤èªkÁÙ­n²³æ¡C

UpDown±±¨î¶µ³Ì¸Þ²§ªº¯S¼x¬O¡G¥i¥H¦b³]­p¶¥¬q³sµ²¨ä¥Lªº±±¨î¶µ¡ÐºÙ¬°¨ó¦P¡]Buddy¡^±±¨î¶µ¡A¥B¥i¥H¿ï¾ÜUpDown±±¨î¶µ¼vÅTBuddy±±¨î¶µªº­þ­Ó¯S©wÄÝ©Ê¡C¦¹¥~¡AÁÙ¥i¥H³]©w±²°Ê½d³ò»P¨C¦¸ªº¼W¥[¶q¡C©Ò¥H¦b¤j³¡¤À±¡ªp¤U¡A¨Ã¤£»Ý­n¼¶¼gµ{¦¡¡C

³]©w³]­p¶¥¬qÄÝ©Ê
¡@

¦bUpDown±±¨î¶µªº¤@¯ë­¶ÅÒ¤¤¡A¤j­P·|³]©wAlignmentÄÝ©Ê¡A¥Î¨Ó¨M©wUpDown±±¨î¶µ¬Û¹ï©ó¨äBuddy±±¨î¶µªº¦ì¸m¡C¡]¨ä­È¦³0-cc2AlignmentLeft©M1-cc2AlignmentRight¡^¡C¦b³o­Ó­¶ÅÒ¤¤¡A¤]¥i¥H³]©wOrientationÄÝ©Ê¡]0-cc2OrientationVertical©Î1cc2OrientationHorizontal¡^¡COrientationÄÝ©Ê¥u¯à°÷¦b³]­p¶¥¬q¥[¥H³]©w¡A¦b°õ¦æ¶¥¬q¬O°ßŪªº¡C

¦bÄÝ©Ê­¶ªº¨ó¦P­¶ÅÒ¤¤¿ï¾Ü buddy ±±¨î¶µ¡]°Ñ¦Ò¹Ï11-2¡^¡C¥i¦b²Ä¤@­ÓÄæ¦ì¤¤Áä¤J±±¨î¶µªº¦WºÙ©ÎÂI¿ï ¦Û°Ê¨M©w ®Ö¿ï¤è¶ô¡C­Y¥Î«áªÌ¡AUpDown±±¨î¶µ·|¦Û°Ê¿ï¾Ü«e¤@­Ó±±¨î¶µ¡]¨Ì¾ÚTabIndex¶¶§Ç¡^§@¬°¨äBuddy±±¨î¶µ¡C¦b¿ï¤F¤@­ÓBuddy±±¨î¶µ«á¡A¥t¨â­ÓÄæ¦ì´NÅܦ¨¥i¥Îª¬ºA¤F¡C¦b¨ó¦PÄÝ©Ê¡]BuddyProperty¡^¤U©Ô²M³æ¤¤¡A¿ï¾ÜBuddy±±¨î¶µªº­þ­ÓÄݩʬO­n³QUpDown±±¨î¶µ©Ò¼vÅTªº¡C¡]­Y¨S¦³¿ï¾Ü¡A·|¨Ï¥ÎBuddy±±¨î¶µªº¹w³]ÄÝ©Ê¡C¡^±z¥i¥H±N»P ¨ó¦P±±¨î¶µ¦P¨B ¡]SyncBuddy¡^Äݩʳ]¬°True¡A¦p¦¹·|¨Ï±oUpDown±±¨î¶µ¦Û°Ê­×¥¿Buddy±±¨î¶µªº¨ó¦PÄÝ©Ê¡C

³q±`·|¿ï¾Ü TextBox ±±¨î¶µ§@¬° UpDown ±±¨î¶µªº¨ó¦P±±¨î¶µ¡A¥B³]©wTextÄݩʬ°¨ó¦PÄÝ©Ê¡C¤£¹L·íµM¤]¯à§âUpDown±±¨î¶µ³sµ²¨ì¨ä¥LºØ±±¨î¶µªºÄÝ©Ê¡]¨Ò¦pLeft©ÎWidth¡^¡C¤£¹L¤£¯à¨Ï¥Î»´¶qªºµLµøµ¡±±¨î¶µ§@¬°¨ó¦P±±¨î¶µ¡C


¡@

¹Ï11-2 UpDown±±¨î¶µÄÝ©Ê­¶¤¤ªº¨ó¦P­¶ÅÒ¥i¥HÅý±z¿ï¾Ü¨ó¦P±±¨î¶µ©M¨ó¦PÄÝ©Ê¡C

³Ì«á¦bÄÝ©Ê­¶ªº±²°Ê­¶ÅÒ¡AUpDown±±¨î¶µªºMin©MMaxÄݩʪí¥ÜValueÄݩʪº¤¹³\½d³ò¡CIncrementÄݩʬO·í¨Ï¥ÎªÌÂI¿ï UpDown ±±¨î¶µªº±Û¶s¡AValueÄݩʪº¼W¥[©Î´î¤Ö¶q¡C¦pªGWrapÄݩʳ]¬°True¡A«h·íValueÄݩʶW¹LMin©ÎMaxÄݩʮɷ|´`Àô¡C

°õ¦æ¶¥¬qªº¹B§@
¡@

¦pªGUpDown±±¨î¶µªºSyncBuddyÄݩʳ]¬°True¡A±z´N¤£»Ý­n¼¶¼g¥ô¦óªºµ{¦¡¨Ó¤â°Ê§ïÅÜBuddy±±¨î¶µªºÄÝ©Ê¡CµM¦Ó¤]¦³¤£¯àÂǧU¦¹¾÷¨îªº®É­Ô¡A¨Ò¦p¡AUpDown±±¨î¶µ¥i¯à¨S¦³¨ó¦P±±¨î¶µ¡A©Î»Ý­n¼vÅT³\¦h±±¨î¶µ©Î¦P¤@­Ó±±¨î¶µªº¦h­ÓÄÝ©Ê¡C¡]¨Ò¦p¡AÂǥѦP®É½Õ¾ã¥¦ªºWidth©MHeightÄÝ©Ê¡A¥i¥H©ñ¤j©ÎÁY¤p±±¨î¶µ¡C¡^¦b³oºØ±¡ªp¤U¡A±z»Ý­n°µªº¬O¦bChange¨Æ¥óµ{§Ç¤º¼¶¼gµ{¦¡½X¡A¦p¦P¹B§@ScrollBar±±¨î¶µ¯ë¡C

UpDown±±¨î¶µ¥]§t¨â­Ó¨Æ¥ó¡A¥i¥H¦³³\¦hªºÆF¬¡«×¡GDownClick¤ÎUpClick¨Æ¥ó¡C·í·Æ¹«©óUpDown±±¨î¶µªº¥ô¤@­Ó«ö¶s¤W©ñ¶}®É¡]¦bChange¨Æ¥ó«á¡^·|¤Þµo³o¨â­Ó¨Æ¥ó¡C§Y¨ÏValueÄݩʤw¸g¹F¨ì¥¦ªºMin©ÎMax®É¡A¤]·|¤Þµo³o¨Ç¨Æ¥ó¡A¦p¦¹¨Ï±oDownClick©MUpClick¨Æ¥ó·¥¬°¦³¥Î¡A¯S§O¬O¤£·Q­­¨î¥Ø«e­Èªº½d³ò®É¡G

' Move all controls on the form pixel by pixel.
Private Sub UpDown1_DownClick()
    Dim ctrl As Control
    For Each ctrl In Controls
        ctrl.Top = ctrl.Top + ScaleY(1, vbPixels, vbTwips)
    Next
End Sub
Private Sub UpDown1_UpClick()
    Dim ctrl As Control
    For Each ctrl In Controls
        ctrl.Top = ctrl.Top - ScaleY(1, vbPixels, vbTwips)
    Next
End Sub

©Ò¦³¦b³]­p¶¥¬q©Ò³]©wªºÄݩʤ]¯à¦b°õ¦æ¶¥¬q¸g¥Ñµ{¦¡½X¨Ó­×§ï¡A°£¤FOrientationÄÝ©Ê¥~¡C¨Ò¦p¡A¥i¥H¥Î¤U¦Cµ{¦¡§ïÅܨó¦P±±¨î¶µ©M¨ó¦PÄÝ©Ê¡G

Set UpDown1.BuddyControl = Text2
UpDown1.BuddyProperty = "Text"

BuddyControlÄݩʤ]¯à°÷¥H¨ó¦P±±¨î¶µªº¦W¦r¨Ó«ü©w¡A¨Ò¦p¡G

UpDown1.BuddyControl = "Text2"
' This syntax even works with items of control arrays.
UpDown1.BuddyControl = "Text3(0)"

·í±z¦b°õ¦æ®É§ïÅܨó¦P±±¨î¶µ¡AUpDown±±¨î¶µ·|¦Û°Ê²¾°Ê¨ì¨ó¦P±±¨î¶µªº®ÇÃä¡A¦¹®É¸Ó¨ó¦P±±¨î¶µ·|ÁY¤p¥H«K®e¯ÇUpDown±±¨î¶µ¡C

FlatScrollBar±±¨î¶µ
¡@

FlatScrollBar±±¨î¶µ¨ú¥N­ì¥»ªºHscrollBar©MVscrollBar¡G±z¥i¥H¥Î¦P¼Ëªº¦W¦r¥HFlatScrollBar±±¨î¶µ¨Ó¥N´ÀHscrollBar©ÎVscrollBar±±¨î¶µ¡A¦p¦¹µ{¦¡¤´·|¦p©¹±`¯ëªº¹B¦æµL»~¡C¨Ì·Ó¥¦OrientationÄݩʪº­È¡A³o­Ó±±¨î¶µ¥i¦¨¬°¤ô¥­©Î««ª½ªº±²¶b¡C¦¹Äݩʤ]¯à¦b°õ¦æ®É³Q­×§ï¡C

±z¥i¥H¦b³]­p¶¥¬q³]©wFlatScrollBar±±¨î¶µªº©Ò¦³ªºÄÝ©Ê¡A¦p¹Ï11-3©Ò¥Ü¡C³o­Ó±±¨î¶µ¤ä´©¤T­Ó¹Ï¹³®æ¦¡¡G¥­­±¡B¥ßÅé¡]Ãþ¦ü­ì¥»ªºScrollBar±±¨î¶µ¡^©MTrack3D¡]¥­­±±²¶b¡A¦ý·í·Æ¹«²¾¹L´N·|Åܦ¨¥ßÅé¡A·¥¹³Microsoft Encartaªº±²¶b¡^¡C¦b³]­p¶¥¬q¡A¥iÂǥѳ]©wAppearanceÄݩʬ°¤U¦C¨ä¤¤ªº¤@­Ó­È¡G0-fsb3D¡B1-fsbFlat©Î2-fsbTrack3D¨Ó¿ï¾Ü¹Ï¹³®æ¦¡¡C


¡@

¹Ï11-3 FlatScrollBar±±¨î¶µÄÝ©Ê­¶ªº¤@¯ë­¶ÅÒ¡C

ArrowsÄݩʨϱz¥i¥H¿ï¾Ü¬O§_Åý±²¶b¥½ºÝªº¤@­Ó©Î¨â­Ó½bÀY¦¨¬°¥i¥Î¡A¥i³]©w¬°1-cc2LeftUp©Î2-cc2RightDown¡F¹w³]­È¬°0-cc2Both¡A¥iÅý¨â­Ó½bÀY³£¬O¥i¥Îªº¡CMin¡BMax¡BLargeChange¡BSmallChange©MValueÄݩʦ³ªº·N¸q»PHScrollBar©MVScrollBar±±¨î¶µªº¬Û¦PÄݩʦP¸q¡C

¦b°õ¦æ¶¥¬q­n¤ÏÀ³¨Ï¥ÎªÌ¹ïFlatScrollBar±±¨î¶µªº°Ê§@»P¤@¯ë±²¶b¤@¼Ë¡A­nÂÇ¥ÑChange©MScroll¨Æ¥ó¨Ó°õ¦æµ{¦¡½X¡CFlatScrollBar°ß¤@¦b°õ¦æ®É»Ý­n­×§ïªºÄݩʬOArrows¡Ð¨Ò¦p¡A·í±²¶b¤w¸g©è¹F³Ì¤p©Î³Ì¤j­È®É¡A¨ú®ø¾A·íªº½bÀY¡C±z³q±`¦bChange¨Æ¥óµ{§Ç¤¤·|¨Ï¥Î¨ì³o­Ó¤èªk¡G

Private Sub FlatScrollBar1_Change()
    ' This is a horizontal FlatScrollBar.
    If FlatScrollBar1.Value = FlatScrollBar1.Min Then
        FlatScrollBar1.Arrows = cc2RightDown
    ElseIf FlatScrollBar1.Value = FlatScrollBar1.Max Then
        FlatScrollBar1.Arrows = cc2LeftUp
    Else
        FlatScrollBar1.Arrows = cc2Both
    End If
End Sub

MonthView±±¨î¶µ
¡@

Visual Basic 6¦³¨â­ÓÃö©ó¤é´Áªº·s³q¥Î±±¨î¶µ¡GMonthView±±¨î¶µ©MDateTimePicker±±¨î¶µ¡C«e¤@­Ó¬O¹³¤ë¾äªº±±¨î¶µ¡A¦Ó«áªÌ¬O­Ó¥i¿é¤J¤é´Á©M®É¶¡ªº¤å¦r¤è¶ô±±¨î¶µ¡A¨âªÌÃö«Y±K¤Á¡A¦]¬°·í¨Ï¥ÎªÌ¦bDataTimePicker±±¨î¶µ¤U©Ô¶s¿ï¾Ü¤é´Á®É¡A¨Ï¥Îªº¬OMonthView±±¨î¶µ¡C

³]©w³]­p¶¥¬qÄÝ©Ê
¡@

¦b°t¸mMonthView±±¨î¶µ©óªí³æ«á¡A¥i¥H¦b¤W­±ÂI¿ï¥kÁäÅã¥Ü¥¦ªºÄÝ©Ê­¶¡A¦p¹Ï11-4©Ò¥Ü¡CValueÄݩʧY¬°±±¨î¶µ¤¤©Ò°é¿ïªº¤é´Á¡C¡]ÂI¿ï¥kÃ䪺½bÀY¥i¥ý¤F¸Ñ¤°»ò¬ODateTimePicker±±¨î¶µ¡C¡^MinDate©MMaxDate¨M©w¦bMonthView±±¨î¶µ¤¤¡A¯à³Q¿ï¾Üªº¤é´Á½d³ò¡FStartOfWeekÄݩʨM©w¤ë¾ä³Ì¥ª°¼¨º¦æ¬O¬P´Á´X¡C


¡@

¹Ï11-4 ³]©wMonthView±±¨î¶µªº³]­p¶¥¬qÄÝ©Ê

³\¦h¥¬ªLÄÝ©Ê·|¼vÅT±±¨î¶µªº¥~»ª©M¥\¯à¡C¦pªGShowWeekNumber¬°True¡AMonthView±±¨î¶µ·|Åã¥Ü¦U¶g¶g¼Æ¡C¦pªGMultiSelect¬°True¡A¨Ï¥ÎªÌ¯à¿ï¾Ü¤@­Ó½d³òªº¤é´Á¡G³o®É¡A³Ì¦h¥i³sÄò¿ï¨úªº¤é¼Æµ¥©óMaxSelCountÄÝ©Ê­È¡C¡]¹w³]¬°¤@¬P´Á¡C¡^ShowTodayÄݩʨM©w¬O§_­nÅã¥Ü¡uToday¸ê°T¡v¡C

MonthView±±¨î¶µ³Ì¦h¯àÅã¥Ü12­Ó¤ë¡A¦ÓÅã¥Üªº¤ë¼Æ¶q¬OMonthRows©MMonthColumnsÄݩʪº­¼¿n¡C¹w³]±¡ªp¤U¡A·í¨Ï¥ÎªÌÂI¿ï±±¨î¶µªº½bÀY«ö¶s¡A©Ò±²°Êªº¤ë¼Æ¶qµ¥©óÅã¥Ü¦b±±¨î¶µ¤Wªº¤ë¼Æ¶q¡A¦ý¥iÂǥѧâScrollRateÄݩʳ]¬°«D¹s­È¨Ó§ïÅܦ¹¦æ¬°¡C

MonthView±±¨î¶µÁÙ¥]§t³\¦hÃö©ó«e´º©M­I´ºÃC¦âªºÄÝ©Ê¡A¦Ó¥B®e©ö·d²V¡C¹Ï11-5Åý±z¤F¸Ñ¦p¦ó¨Ï¥ÎForeColor¡BTitleForeColor¡BTitleBackColor¡BMonthBackColor©MTrailingForeColorÄÝ©Ê¡C¡]Trailing Days«üÄÝ©ó«e­Ó¤ë©Î¤U­Ó¤ëªº¤é¤l¡C¡^MonthBackColorÄݩʤ]¼vÅT¬P´Á´X¦W¦rªºÃC¦â©M¼Æ¥Ø¡C©_©Çªº¬O¡A±±¨î¶µ¤]¦³¼Ð·ÇªºBackColorÄÝ©Ê¡A¥u¬O¥¦´X¥G¨S¦³¤°»ò§@¥Î¡A°£¤F¼vÅT¤U¤è©M¥k°¼Ãä®Øªº½u¥~¡C


¡@

¹Ï11-5 Ãö©óMonthView±±¨î¶µ¦U¿W¥ß°Ï°ìªºÃC¦â±±¨î¡C

¦b³o¨Ç³]­p¶¥¬qªºÄݩʤ¤¡A¥i¯à»Ý­nª`·N´X­Ó¯S®íÄÝ©Ê¡A¥]¬ADataSource¡BDataField¡BDataMember©MDataFormatÄÝ©Ê¡C¨Æ¹ê¤W¡AMonthView¬O­Ó¸ê®Æ·Pª¾±±¨î¶µ¡A¥i¥H³sµ²¨ì¼Ð·ÇData±±¨î¶µ¡BRemoteDate±±¨î¶µ©Î¥ô¦óADO¸ê®Æ¨Ó·½ªº¤é´ÁÄæ¦ì¡C


ª`·N

­Y­n±NÀ³¥Îµ{¦¡¥»¤g¤Æ¡A­È±o¼y©¯ªº¬O¡A MonthView±±¨î¶µ·|¦Û°Ê½Õ¾A¦Û¤v¨ì¨Ï¥ÎªÌªºÀô¹Ò¡A¦Ó¥B¥¿½T¦aÂà´«©Ò¦³¤ë¥÷©M¤é´Áªº¦WºÙ¡C¤£¹L¹ê§@¤W·|¦³­Ó¤p¿ù»~¡GToday¸ê°TµLªk¥»¤g¤Æ¡A©Ò¥HÀ³¸Ó­n³]ShowTodayÄݩʬ°False¡AµM«á´£¨Ñ§OºØ§Î¦¡ªºToday¸ê°T¡C


°õ¦æ¶¥¬qªº¹B§@
¡@

¨Ï¥ÎMonthView¦³³\¦h¤èªk¡A¤£¹L¦³¨Ç¨Ã¤£©úÅã¡C¤j³¡¤Àªº¤H³£ª¾¹D¥iÂI¿ï±±¨î¶µ¼ÐÃDªþªñªº¨â­Ó½bÀY¨Ó©¹«á©Î©¹«e¤@­Ó¤ë¥÷¡C¤Ö¼Æ¤HÁÙª¾¹D¥i¦bÂI¿ï¤é´Á®É¡A¦A«ö¤U[Shift]Áä«K¥i¿ï¾Ü¤@©w½d³òªº¤é´Á¡]¦pªGMultiSelect¬°True¡^¡CµM¦Ó¡A¥i¯à¨S¤°»ò¤Hª¾¹DÂI¿ï±±¨î¶µ¼ÐÃDªº¤ë¥÷¦WºÙ·|¥X²{§Ö±¶¥\¯àªí¡A¥Î¨Ó¿ï¾Ü·í¦~ªº¥ô¤@¤ë¥÷¡C¬Æ¦ÜÂI¿ï¦~¥÷·|Åã¥Ü¨â­Ó±Û¶sÅý¨Ï¥ÎªÌ½Õ¾ã¦~¥÷¡Ð«e¶i©Î«á°h¡C¡]¨£¹Ï11-6¡^¡C§O§Ñ¤F¦b¾Þ§@¤â¥U¤W´£¨ì³o¨ÇÁôÂÃ¥\¯à¡A­n¤£´N§â³o¨Ç¥Îªk¥ÎLabel±±¨î¶µÅã¥Ü¦bªí³æ¤W¡C


¡@

¹Ï11-6 ¦¹½d¨Òµ{¦¡Åý±z¤F¸ÑMonthView±±¨î¶µªº©Ò¦³¶i¶¥¯S¦â¡C·í±zÂI¿ï¦~¥÷®É¡A¦b¼ÐÃD°Ï·|Åã¥Ü±Û¶s¡C

¨ú±o·í«eªº¤é´Á
¡@

°£«D»Ý­n°õ¦æ¯S®íªº¹Bºâ¡A­n¤£µM¦bµ{¦¡½X¤¤¨Ï¥ÎMonthView±±¨î¶µ¨Ã¤£Ãø¡C±±¨î¶µ¦³­ÓValueÄÝ©Ê¡A¥i¥Î¨Ó«ü©w¤@­Ó¤é´Á©ÎŪ¨ú¨Ï¥ÎªÌ©Ò¿ï¾Üªº¤é´Á¡C±z¬Æ¦Ü¤£»Ý­n±qValueÄݩʤ¤Àò±o¤é¡B¤ë»P¦~¥÷¡A¦]¬°±±¨î¶µ¦³Day¡BMonth©MYearÄÝ©Ê¡C«Ü¤è«Kªº¬O¡G³o¨ÇÄݩʤ]¥i¥H³Q«ü©w¡Ð¨Ò¦p¡A¥i¥H¥Îµ{¦¡¨ÓÅã¥Ü¤U­Ó¤ë¡A¦p¤U¡G

If MonthView1.Month < 12 Then
    MonthView1.Month = MonthView1.Month + 1
Else
    MonthView1.Month = 1
    MonthView1.Year = MonthView1.Year + 1
End If

DayOfWeekÄݩʶǦ^©Ò¿ï¾Üªº¤é´Á¬O¬P´Á´X¡C¦P¼Ë¦a¡A³o­ÓÄݩʬO¥i¥H³Q¼g¤Jªº¡A©Ò¥H¥u­n³z¹L¤U¦Cªºµ{¦¡½X¡A«K¥i¥H¿ï¾Ü·í©Pªº¬P´Á¤@¡G

MonthView1.DayOfWeek = vbMonday

µM¦Ó·íMultiSelect¬°True®É¡ADay¡BMonth¡BYear©MDayOfWeekÄÝ©Ê«KµLªk¥[¥H³]©w¡C


ª`·N

¦b¨Ï¥ÎMonthView±±¨î¶µ®É¡Aµ§ªÌµo²{¤@­Ó·N¥~ªº¦æ¬°¡G¦pªG²{¦b±±¨î¶µ¾Ö¦³¾nÂI¡A¦Ó±zÂI¿ï¦P¤@­Óªí³æ¤ºªº¨ä¥L±±¨î¶µ®É¡A³o­Ó³QÂI¿ïªº±±¨î¶µ·|Àò±o¾nÂI¡A¦ý«o¨S¤ÞµoClick¨Æ¥ó¡A³o¥i¯à·|¨Ï±zªº¨Ï¥ÎªÌ·P¨ì§x´b¡Cµ§ªÌµo²{³o¬O¦]¾nÂI¦bMonthView±±¨î¶µ®É¡A¦b«ö¶s¤W«ö¤@¤U±N¤£·|µo¥Í¹w´Áªº®ÄªG¡A³o­Ó¿ù»~¥i¯à·|¦b¥H«áªºService Pack¤¤­×´_¡C¦b¦¹®É¡A³o­Ó°ÝÃDªº½TÃø¥H³B²z¡A³Ì«á¥u¯à¨Ì¾aMouseDown¨Æ¥ó¦Ó«DClick¨Æ¥ó¤F¡A°µªk¦p¤U¡G

Dim MousePressed As Boolean       ' A form-level variable
Private Sub cmdTryMe_MouseDown(Button As Integer, _
    Shift As Integer, X As Single, Y As Single)
    MousePressed = True
    Call DoSomething
End Sub
Private Sub cmdTryMe_MouseUp(Button As Integer, _
    Shift As Integer, X As Single, Y As Single)
    MousePressed = False
End Sub
Private Sub cmdTryMe_Click()
    ' This event might be called as a response to a hot key 
    ' or a click when the focus isn't on the MonthView control.
    If Not MousePressed Then Call DoSomething
End Sub
Private Sub DoSomething()
    ' The code that must execute when the button is clicked
    MsgBox "Button has been clicked!"
End Sub

¦^À³½d³òªº¿ï¨ú
¡@

¥i¥HÂÇ¥ÑMinDate©MMaxDateÄݩʨӭ­¨î¨Ï¥ÎªÌ¯à¿ï¾Üªº¤é´Á½d³ò¡C¦pªGMultiSelectÄݩʬ°True¡A«h¯à¿ï¾Ü³sÄòªº¤é´Á¡C¤]¥i¥H¥ÎSelStart©MSelEndÄݩʨӨú±o¿ï¾Üªº½d³ò¡]³o¨ÇÄݩʶǦ^Data­È¡C¡^¦Ó©Ò¯à¿ï¾Ü¤é´Áªº³Ì¤j½d³ò¨ú¨M©óMaxSelCountÄÝ©Ê¡C

¨C¤@¦¸¨Ï¥ÎªÌ¿ï¾Ü·sªº¤é´Á¡A´N·|¤ÞµoSelChange¨Æ¥ó¡C³o­Ó¨Æ¥ó±µ¦¬¿ï¾Ü½d³òªº°_©l¤é´Á©Mµ²§ô¤é´Á¡AµM«á¥i¥HÅýµ{¦¡³]­pªÌ¨ú®ø¹B§@¡CÁ|¨Ò¨Ó»¡¡A±z¥i¥H©Úµ´°²¤éªº¿ï¨ú¡G

Private Sub MonthView1_SelChange(ByVal StartDate As Date, _
    ByVal EndDate As Date, Cancel As Boolean)
    Dim d As Date
    ' A Date variable can be used to control a For loop.
    For d = StartDate To EndDate
        If Weekday(d) = vbSunday Or Weekday(d) = vbSaturday Then
            ' Cancel the selection if the day is Sunday or Saturday.
            Cancel = True
            Exit For
        End If
    Next
End Sub

ª`·N

MonthView±±¨î¶µ¦³­Ó¿ù»~¡G°£«D¨Ï¥ÎªÌ¿ï¾Ü¤T­Ó©Î§ó¦hªº¤é´Á¡A§_«h§Y¨Ï³]©wCancel°Ñ¼Æ¬°True¤´¤£·|¨ú®ø¹B§@¡C³o­Ó¿ù»~±N·|¦b·sª©ªº±±¨î¶µ¤¤­×¥¿¡A¦ý¥Ø«e¨Ã¨S¦³¤°»ò²³æªº¸Ñ¨M¤èªk¡C¡]¥Ø«eµ§ªÌ¨Ï¥ÎªºMsComCt2.ocxª©¥»¬°6.00.8177¡C¡^


¥t¥~¨â­Ó¨Æ¥ó¡ÐateClick©MDateDblClick¡A¦b¨Ï¥ÎªÌ¿ï¾Ü·s¤é´Á®É·|¤Þµo¡C·í¨Ï¥ÎªÌÂI¿ï¤é´Á¡AVisual BasicÀ³¥Îµ{¦¡·|±µ¦¬SelChange¨Æ¥ó©MDateClick¨Æ¥ó¡C¦pªG¦b¤é´Á¤W«ö¨â¤U¡Aµ{¦¡·|¨Ì·Ó¶¶§Ç±µ¦¬SelChange¡BDateClick¡BDateDblClick©MDateClick¨Æ¥ó¡A©Ò¥H­nª`·N«ö¨â¤U¤é´Á·|¤Þµo¨â¦¸DateClick¨Æ¥ó¡C¨â­Ó¨Æ¥ó³£·|±µ¦¬¤@­Ó°Ñ¼Æ¡A­Y¤é´Á³QÂI¤@¤U©ÎÂI¨â¤U¡G

Private Sub MonthView1_DateDblClick(ByVal DateDblClicked As Date)
    Dim descr As String
    descr = InputBox("Enter a description for day " & _
        FormatDateTime(DateDblClicked, vbLongDate))
    If Len(descr) Then
        ' Save the description (omitted) ...
        ' ...
    End If
End Sub

´M§ä³Ì²z·Qªº¤j¤p
¡@

MonthView±±¨î¶µ´£¨Ñ´X­Ó¤èªk¨Ó§ïÅܱ±¨î¶µªº¥~»ª¡A°£¤F³\¦hªºÃC¦âÄÝ©Ê¥~¡C¨Ò¦p¡A¥i¥HÂǥѫü©w¾A¦Xªº­Èµ¹MonthRows©MMonthColumnsÄÝ©Ê¥HÅã¥Ü12­Ó¤ë¡CµM¦Ó¦b°õ¦æ®É§ïÅܳo¨ÇÄÝ©Ê·|µo¥Í¤@­Ó°ÝÃD¡A¨º´N¬OµLªk±±¨îMonthViewªº¤j¤p¡]¦]³oºÝµø¤ë¼Æ¡B¦r§Î¡B½u®Ø©M¨ä¥L³]©w¨Ó¨M©w¡^¡C¬°¤FÀ°§U±z¨M©wMonthRows©MMonthColumnsÄݩʪº³Ì¨Î­È¡AMonthView±±¨î¶µ¤ä´©ComputeControlSize¤èªk¡C¦¹¤èªk¥H¦æ©M¦Cªº¼Æ¥Ø¬°²Ä¤@­Ó»P²Ä¤G­Ó°Ñ¼Æ¡A¨Ã¥H²Ä¤T­Ó©M²Ä¥|°Ñ¼Æ§@¬°­pºâ«áªø»P¼eªº¶Ç¦^­È¡C

' Evaluate the size of a MonthView control with 2 rows and 3 columns
Dim wi As Single, he As Single
MonthView1.ComputeControlSize 2, 3, wi, he

·í±z·Q¦bªí³æ¤¤®i¥Ü³Ì¦h¤ë¼Æ®É¡A·|¥Î¨ìComputeControlSize¡C¤U­±ªº¨Ò¤lºK¿ý¦bÀH®Ñ¥úºÐªº½d¨Òµ{¦¡¤¤¡G

Private Sub cmdTile_Click()
    ' Find the best value for MonthRows and MonthColumns.
    Dim rows As Integer, cols As Integer
    Dim wi As Single, he As Single
    For rows = 6 To 1 Step -1
        ' Note how we avoid creating more than 12 months.
        For cols = 12 \ rows To 1 Step -1
            MonthView1.ComputeControlSize rows, cols, wi, he
            If wi <= ScaleWidth _ MonthView1.Left And _
                he < ScaleHeight _ MonthView1.Top Then
                MonthView1.MonthRows = rows
                MonthView1.MonthColumns = cols
                Exit Sub
            End If
        Next
    Next
End Sub

±j½Õ¤é´Á
¡@

MonthView±±¨î¶µ¥iÅý³]­pªÌÂǥѲÊÅéÅã²{ªº¤è¦¡¨Ó±j½Õ¬Y­Ó¤é´Á¡C±z¥i¥H¨Ï¥ÎGetDayBold¨Æ¥ó¨ç¼Æ¨Ó§ïÅܱ±¨î¶µªº¤º®e¡A¦p¤U½d¨Ò¡G

' Display all Sundays and major holidays in boldface.
Sub MonthView1_GetDayBold(ByVal StartDate As Date, _
    ByVal Count As Integer, State() As Boolean)
    Dim i As Long, d As Date
    d = StartDate
    For i = 0 To Count - 1
        If Weekday(d) = vbSunday Then
            State(i) = True          ' Mark all Sundays.
        ElseIf Month(d) = 12 And Day(d) = 25 Then
            State(i) = True          ' Xmas time.
        Else
            ' Deal here with other holidays...
        End If
        d = d + 1
    Next
End Sub

GetDayBold¨Æ¥ó±µ¨ü¤T­Ó°Ñ¼Æ¡GStartDate¬°±±¨î¶µ¤¤ªº²Ä¤@¤Ñ¡]¥]§t«e­Ó¤ëªº¤Ñ¼Æ¡^¡BCount¬O¥i¨£ªº¤Ñ¼Æ¡A¦ÓState¬°¤@­Ó¥H¹s¬°©³ªº¥¬ªL°}¦C¡A¥]§tCount¤¸¯À­È¡C¦]¦¹­nÅý¬Y­Ó¤é´Á¦¨¬°²ÊÅé¡A¥u»Ý­n³]©wState°}¦C¤¤¬Û¹ïªº­È¬°True§Y¥i¡C

¥t¤@ºØ¤èªk¨Ã¤£³z¹LGetDayBold¨Æ¥ó¨ç¼Æ¡G­×§ï±±¨î¶µ¤¤·í«e¤é´ÁªºboldÄÝ©Ê¡A¥i¨Ï¥ÎVisibleDays©MDayBoldÄݩʨӹF¦¨³oºØ¤èªk¡CVisibleDaysÄݩʱµ¦¬¤@­Ó±q1¨ì¥i¨£¤Ñ¼Æªº¯Á¤Þ­È¡A¨Ã·|¶Ç¦^²Å¦XªºDate­È¡C³o­ÓÄݩʪº°ÝÃD¬O¤£®e©öª¾¹D±±¨î¶µ¤¤¦³¦h¤Ö¤Ñ¼Æ¥i¨£¥H¤Î¦óªÌ¬O¯Á¤Þªº³Ì¤j­È¡CVisual Basic¤å¥ó¿ù»~¦a»¡©ú¯Á¤Þ­È¥²©w¦b1¨ì42¤§¤¤¡A«o¨S¦Ò¼{¨ìMonthView±±¨î¶µÅã¥Ü¦h­«¤ë¥÷ªº¯à¤O¡C³Ì²³æªº¸Ñ¨M¤èªk´N¬O«Ø¥ß¤@­Ó¿ù»~ªº³B²z¾÷¨î¡A¦p¦P¤U­±ªº±Ô­z¡G

Dim tmpDate As Date
    ' Exit the loop when the index isn't valid any longer.
    On Error GoTo EndTheLoop
    For i = 1 To 366
        ' Visit each day.
        tmpDate = MonthView1.VisibleDays(i)
    Next
EndTheLoop:
    ' Get here when the index becomes invalid.

VisibleDaysÄݩʶǦ^³¡¤À¤é´Áµ¥©ó²{¦b¨t²Î®É¶¡ªºDate­È¡C·í±z­n¤ñ¸û¶Ç¦^ªº®É¶¡­È¬O¤é´Á±`¼Æ©ÎÅܼƮɡA¦¹«D¥¿¦¡ªº¤èªkÆZ¦³¥Îªº¡C

DayBoldÄÝ©Ê¥H¤@­Ó¤é´Á¬°°Ñ¼Æ¡A¨äÃö³s¨ì¤@­Ó¥iµøªº¤é¤l¨Ã¥B¥i¥H³]©w©Î¶Ç¦^¸Ó¤é¤lªº²ÊÅéÄÝ©Ê¡C³o­ÓÄÝ©Ê¥i¥H¥Î¨Ó¦P®É³]©w³\¦h¤é¤l¡A§Y¨Ï¨Ã¥¼³B²zGetDayBold¨Æ¥ó¡C¤@¯ë·|¨Ï¥ÎDayBoldÄÝ©Ê·f°tVisibleDaysÄÝ©Ê¡A¦p¦P¤U­±ªºµ{¦¡¡G

Private Sub cmdMark_Click()
    Dim i As Integer
    On Error GoTo EndOfLoop
    For i = 1 To 999
        ' Mark all Fridays.
        If Weekday(MonthView1.VisibleDays(i)) = vbFriday Then
            MonthView1.DayBold(MonthView1.VisibleDays(i)) = True
        End If
    Next
EndOfLoop:
End Sub

¹ê§@©ì¦²
¡@

MonthView±±¨î¶µ¥i¥H¬O©ì¦²ªº¨Ó·½¡A¦]¬°¥¦¤¹³\±z³z¹L¦¹¾÷¨î¡A½Æ»s¤é´Á¨ì¥ô¦ó¥i±µ¨ü¦r¦êªº±±¨î¶µ¡C¥¿½T©ì¦²¹ê§@ªºÃöÁä¬OHitTest¤èªk¡A¨ä»yªk¦p¤U¡G

Area = MonthView1.HitTest(X, Y, HitDate)

Area¬O­Ó¼Æ¦r¡A«ü¦V±±¨î¶µ¤¤x»Py®y¼Ð©ÒÃö³sªº¬Y°Ï°ì¡C¡]Ãö©ó©Ò¦³¥i¯àªº¶Ç¦^­È¡A½Ð°Ñ¾\Visual Basic¤å¥ó©ÎÀH®Ñ¥úºÐ©Òªþªºµ{¦¡­ì©l½X¡^¡C·í¨ç¦¡¶Ç¦^4-mvwCalendarDay®É¡AHitDateÅܼƭȷ|¬O¤ë¾ä¤¤x©My®y¼Ð©Ò«ü¦Vªº¤é´Á¡CÂǥѳo­Ó¤èªk¡A±N·|µo²{«Ü®e©ö¹ê§@¤@­Ó¦³®Ä²vªº©ì¦²µ{§Ç¡C¤U­z½d¨Òµ{¦¡µ²ªG¦p¹Ï11-6¡G

' Start a drag-and-drop operation.
Private Sub MonthView1_MouseDown(Button As Integer, Shift As Integer, _
    X As Single, Y As Single)
    ' Exit if the right button isn't clicked.
    If Button <> vbRightButton Then Exit Sub
    ' Exit if mouse isn't over a valid date.
    If MonthView1.HitTest(X, Y, DraggedDate) <> mvwCalendarDay Then 
        Exit Sub
    End If
    ' Now DraggedDate contains the date to be dragged,
    ' and we can start the drag operation.
    MonthView1.OLEDrag
End Sub
Private Sub MonthView1_OLEStartDrag(Data As MSComCtl2.DataObject, _
    AllowedEffects As Long)
    ' When this event fires, DraggedDate contains a valid date.
    Data.SetData Format(DraggedDate, "long date")
    AllowedEffects = vbDropEffectCopy
End Sub

¤W­zªºµ{¦¡°²©w³Q·Æ¹««öÁä©ñ¶}ªº±±¨î¶µOLEDropModeÄݩʬ°2-Automatic¡C

DateTimePicker±±¨î¶µ
¡@

DateTimePicker±±¨î¶µ¬O°w¹ï¤é´Á©M®É¶¡³]­pªº¤å¦r¤è¶ô¡C³o­Ó¤å¥ó¤è¶ô¥i¥H²Ó¤À¬°´X­Ó¤p°Ï°ì¡A¨C­Ó³£¬O¿W¦Ûªº³¡¤À¡]¤é¡B¤ë¡B¦~¡B®É¡B¤À©M¬í¡^¡C³o­Ó±±¨î¶µ¤ä´©©Ò¦³±`¥Îªº¤é´Á©M®É¶¡®æ¦¡¡]¥]¬A¦Û­qªº®æ¦¡¡^©M¶Ç¦^Null­Èªº¯à¤O¡]¦pªG¨Ï¥ÎªÌ¨S¦³¿ï¾Ü¤é´Á¡^¡A¬Æ¦Ü¥i¥H©w¸q¦Û­qªº°Ï°ì¡C

¦b°õ¦æ®É¡A¨Ï¥ÎªÌ¥i¥H¥Î¥ª¥k½bÀY¨Ó¤Á´«°Ï°ì¡A¨Ã¥B¥i¥Î¤W¤U½bÀY¼W¥[©M´î¤Ö¥¦­Ìªº­È¡CÁÙ¥i¥HÅã¥Ü¤U©Ô¦¡ªº¤é¾ä¡]¦pªGUpDownÄݩʬ°False¡^©Î¨Ï¥ÎªþÄݪº±Û¶s­×§ï¿ï¨ú³¡¤Àªº­È¡]­YUpDown­È¬°True®É¡^¡C

³]©w³]­p¶¥¬qÄÝ©Ê
¡@

¹w³]±¡§Î¤U¡A¤@­Ó¦V¤Uªº½bÀY·|¦b±±¨î¶µªº¥k¤è¡A¦p¦P¼Ð·ÇªºComboBox±±¨î¶µ¡GÂI¿ï½bÀY·|¥X²{¤@­Ó¤é¾ä¡A¥iÅý¨Ï¥ÎªÌ¿ï¾Ü¤é´Á¦Ó¤£¥ÎºV¥ô¦óÁä¡C¦pªG±NUpDownÄݩʳ]¬°True¡A¦V¤U½bÀY·|³Q¤@¹ï±Û¶s¨ú¥N¡A¦Ó¥u¯àÅý¨Ï¥ÎªÌ¥Î·Æ¹«¨Ó¼W¥[©Î´î¤Ö¿W¥ß°Ï°ìªº­È¡C

CheckBoxÄÝ©Ê­Y¬°True¡A¦b±±¨î¶µ¥ª¤è·|Åã¥Ü¤@­Ó®Ö¿ï¤è¶ô¡G¦pªG¨Ï¥ÎªÌ¤£·Q¿ï¾Ü¥ô¦ó¤é´Á¡A¥i¥H¨ú®ø¸Ó¤è¶ô¡C¡]°Ñ¦Ò ¹Ï11-7 ¡^

DateTimePicker±±¨î¶µ¦³¨ÇÄÝ©Ê»PMonthView±±¨î¶µ¬Û¦P¡A¨Ò¦p¡A¥¦¥]§tValueÄÝ©Ê¡A¯à¶Ç¦^¨Ï¥ÎªÌ¿é¤Jªº¤é´Á¡A¦ÓMinDate©MMaxDateÄÝ©Ê©w¸q¤é´Áªº½d³ò¡C

¤U©Ôªº¤ë¾ä¨ä¹ê´N¬OMonthView±±¨î¶µ¡A¥u¬O¦¹MonthView¤@¦¸¥u¯àÅã¥Ü¤@­Ó¤ë¡C©Ò¥HDateTimePicker±±¨î¶µ¤]¥]§tMonthView±±¨î¶µªº©Ò¦³ÃC¦âÄÝ©Ê¡A¥u¤£¹L¦b¦¹¨C­ÓÄݩʪº¦WºÙ³£§ïÅܤF¡G CalendarForeColor¡BCalendarBackColor¡BCalendarTitleForeColor¡BCalendarTitleBackColor©MCalendarTrailingForeColor¡C¥t¥~¡A±±¨î¶µ¨S¦³Åã¥Ü¼Ð·ÇªºForeColor©MBackColorÄÝ©Ê¡A¦]¦¹ÁöµM§ó§ï¤U©Ô¦¡¿ï³æªº¥~»ª¡A«oµLªk¥Hµ{¦¡¨Ó§ïÅܱ±¨î¶µ½s¿è°Ïªº¹w³]ÃC¦â¡I

FormatÄݩʼvÅT¦b±±¨î¶µÅã¥Üªº¸ê®Æ¡A¨ä¥i¬°¤U­z­È¤§¤@¡G0-dtpLongDate¡B1-dtpShortDate¡B2-dtpTime©Î3-dtpCustom¡C¦pªG¿ï¾Ü¦Û­qªº®æ¦¡¡A«h¥i¥H«ü©w¾A·íªº¦r¦êµ¹CustomFormatÄÝ©Ê¡A¦¹Äݩʱµ¨ü»PFormat¨ç¼Æ¬Û¦Pªº®æ¦¡¤Æ¦r¦ê¨ÓÅã¥Ü¤é´Á©Î®É¶¡¸ê®Æ¡C¦p¤U¡G

'Date is' dddd MMM d, yyy

¤W­zµ{¦¡ªºÅã¥Üµ²ªG¦p¤U¡G

Date is Friday Nov 5, 1999

¦p±z©Ò¨£¡A¥i¥H¥]§t¤å¦r¦r¦ê¡A¥u­n¥Î³æ¤Þ¸¹¬A°_¨Ó§Y¥i¡C¦ÓCustomFormatÄݩʤ]¥i¥H³Q¥Î¨Ó«Ø¥ß¦Û­qªº°Ï°ì¡C


¡@

¹Ï11-7 DateTimePicker±±¨î¶µªº¤£¦P§Î¦¡¡C

DateTimePicker±±¨î¶µ¯à³sµ²¨ì¬Y¸ê®Æ¨Ó·½¡A©Ò¥H¥¦ÁÙ¦³DataSource¡BDataMember¡BDataField©MDataFormatµ¥ÄÝ©Ê¡C·í±±¨î¶µ³sµ²¨ì¼Ð·Ç¸ê®Æ©ÎRemoteData±±¨î¶µ®É¡A¨Ã¤£¤ä´©DataFormatÄÝ©Ê¡F¦ý¦b¨ä¥L¤è­±¡A¥i¥H¨Ï¥ÎFormat©MCustomFormatÄݩʭקïÅã¥Ü­Èªº®æ¦¡¡C

°õ¦æ¶¥¬qªº¹B§@
¡@

°õ¦æ®É¡A¥iÂÇ¥ÑValueÄÝ©Ê©ÎYear¡BMonth¡BDay¡BDayOfWeek¡BHour¡BMinute©MSecondÄݩʨӳ]©w©M¨ú±oDateTimePickerªº¤º®e¡C¨Ò¦p¡A¥i¥H¥Îµ{¦¡¨Ó¼W¥[DateTimePicker±±¨î¶µ¤¤¬Y¤é´Áªº¤ë¥÷¡Aµ{¦¡¦p¤U¡G

DTPicker1.Month = (DTPicker1.Month Mod 12) + 1
If DTPicker1.Month = 1 Then DTPicker1.Year = DTPicker1.Year + 1

¦pªGCheckBox¬°True¥B¨Ï¥ÎªÌ¤w¨ú®ø¿ï¨ú¤è¶ô¡A©Ò¦³¬ÛÃöªº¤é´ÁÄÝ©Ê·|¶Ç¦^Null¡C

DateTimePicker±±¨î¶µ²[»\³\¦h¼Ð·ÇTextBox±±¨î¶µ©Ò¤ä´©ªº¨Æ¥ó¡A¥]¬AChange¡BKeyDown¡BKeyPress¡BKeyUp¡BMouseDown¡BMouseMove¡BMouseUp¡BClick©MDblClick¡C©Ò¦³ªºÁä½L»P·Æ¹«¨Æ¥ó³£¥u¸ò±±¨î¶µªº½s¿è°Ï¦³Ãö¡A©Ò¥H·í¤ë¾ä³Q©Ô¥X®É¡A¨Ã¤£·|¤Þµo³o¨Ç¨Æ¥ó¡C

·í¨Ï¥ÎªÌÂI¿ï¦V¤U½bÀY®É¡ADropDown¨Æ¥ó·|¦b¤U©Ô¦¡¤ë¾äÅã¥Ü«e¤Þµo—³oªí¥ÜUpDownÄݩʬ°False¡]¹w³]­È¡^¡C·í¨Ï¥ÎªÌ¿ï¾Ü¤U©Ô¦¡¤é¾äªº¤é´Á®É¡ACloseUp¨Æ¥ó±N·|¤Þµo¡C¤£¹L³o¨Ç¨Æ¥ó¨Ã¨S¤°»ò¥Î³B¡A¦]¬°°£¤F¤é¾ä¥~¡A´X¥G¨S¤°»ò±±¨î¶µ¥i¥H®³¨Ó¨Ï¥Î¡A·íµM§ïÅÜÃC¦â¤]¥i¥H¡C·í¨Ï¥ÎªÌ¿ï¾Ü¤U©Ô¦¡¤é¾äªº¤é´Á¡AChange¨Æ¥ó·|¦bCloseUp¨Æ¥ó«e¤Þµo¡C


ª`·N

DateTimePicker±±¨î¶µ¦³­Ó¿ù»~¡A¨º´N¬O¦b°õ¦æ®ÉµLªk¦P®É«ü©w­Èµ¹MinDate©MMaxDateÄÝ©Ê¡C·í«ü©w¨ä¤¤ªº¬Y­ÓÄݩʭȮɡA¥t¤@­Ó·|³Q³]©w¬°12/31/1999¡C³o©_¯S¦æ¬°ªº­ì¦]©M¥i¯à¸Ñ¨Mªº¤èªk½Ð°Ñ¾\Microsoft Knowledge BaseªºQ198880¤@¤å¡C


ºÞ²zcallbackÄæ¦ì
¡@

DateTimePicker³Ì¸Þ²§ªº¯S¦â¬O¨ã¦³©w¸q¦Û­q°Ï°ìªº¯à¤O¡A¤]¥s°µcallbackÄæ¦ì¡C¬°¤F©w¸qcallbackÄæ¦ì¡A¶·¨Ï¥Î¥Ñ¤@­Ó¥H¤WªºX¦r¤¸©Òºc¦¨ªº¦r¦ê¡A±N¤§«ü©wµ¹CustomFormatÄÝ©Ê¡C¥i¥H©w¸q¦h­ÓcallbackÄæ¦ì¡A¥u­nÂǥѨϥΤ£¦P­ÓX¼Æ¥Øªº¦r¦ê¡CÁ|­Ó¨Ò¤l¡A¤U­z©w¸q¤@­Ó¤é´ÁÄæ¦ì¡A¦³¨â­ÓcallbackÄæ¦ì¡G

DTPicker1.CustomFormat = "MMM d, yyy '(week 'XX')' XXX"

¦b¤U­±µ{¦¡¸Ì¡AXX°Ï³Q©w¸q¬°±q¤@¤ë1¸¹°_ªº¶g¼Æ¡A¦ÓXXX°Ï«h¬O°²¤éªº¦WºÙ¡]¦pªG¸Ó¤é¬O°²¤éªº¸Ü¡^¡C

·í©w¸qcallbackÄæ¦ì«á¡AÁÙ¥²¶·©w¸q¥¦ªº³Ì¤jªø«×¡B¥Ø«e­È©M¥¦ªº¹B§@¡]³o¬O·í³o­ÓÄæ¦ì¨ú±o¿é¤JµJÂI®É¡A«ö¤U«öÁä·|²£¥Íªº¤ÏÀ³¡^¡C¦bFormatSize¨Æ¥ó¤¤¨M©wcallbackÄæ¦ìªº³Ì¤jªø«×¡A¦Ó¦¹¨Æ¥ó·|¦]¨C­ÓcallbackÄæ¦ì¦Ó¤Þµo¡C¦pªG¦³¦h­Ó°Ï°ì¡A´N¥²¶·¨Ï¥ÎSelect Caseµ²ºc¡A¦p¤U­±ªºµ{¦¡¡G

Private Sub DTPicker1_FormatSize(ByVal CallbackField As String, _
    Size As Integer)
    Select Case CallbackField
        Case "XX"
            ' The number of weeks since January 1st (max 2 digits)
            Size = 2
        Case "XXX"
            ' The name of a holiday, if any
            Size = 16
    End Select
End Sub

·íDateTimePicker±±¨î¶µ­nÅã¥Ü¤é´Á®É¡A¨C­ÓcallbackÄæ¦ì¬Ò·|¤ÞµoFormat¨Æ¥ó¡CÂÇ¥ÑFormattedStringÄÝ©Ê¥i¶Ç¦^callbackÄæ¦ì­È¡G

Private Sub DTPicker1_Format(ByVal CallbackField As String, _
    FormattedString As String)
    Select Case CallbackField
        Case "XX"
            ' The number of weeks since January 1st (max 2 digits)
            FormattedString = DateDiff("ww", _
                DateSerial(DTPicker1.Year, 1, 1), DTPicker1.Value)
        Case "XXX"
            ' The name of a holiday, if any
            If DTPicker1.Month = 12 And DTPicker1.Day = 25 Then
                FormattedString = "Christmas"
            Else
                ' Deal here with other holidays.
            End If
    End Select
End Sub

·ícallbackÄæ¦ì¨ú±o¿é¤JµJÂI®É¡A¥iÂǥѦbCallbackkeyDown¨Æ¥ó¨ç¼Æ¤¤¼¶¼gµ{¦¡¨Ó³B²z©Ò¦³ªº«öÁä³B²z¡C³o­Ó¨Æ¥ó±µ¦¬«öÁ䪺¸ê°T¡BshiftÁ䪺ª¬ºA¡A©McallbackÄæ¦ìªº¦WºÙ¡C¤@¯ë¦Ó¨¥¡A·|Âǥѫü©w¤@­Ó·s¤é´Áµ¹CallbackDate°Ñ¼Æ¨Ó³B²z«öÁä¡G

Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, _
    ByVal Shift As Integer, ByVal CallbackField As String, _
    CallbackDate As Date)
    If CallbackField = "XX" Then
        ' Move to the previous/next week when the Up/Down key is pressed.
        If KeyCode = vbKeyUp Then
            CallbackDate = DTPicker1.Value + 7
        ElseIf KeyCode = vbKeyDown Then
            CallbackDate = DTPicker1.Value - 7
        End If
    Else
        ' No keyboard support for the Holiday field
    End If
End Sub

CoolBar±±¨î¶µ
¡@

CoolBar±±¨î¶µ¦]¬°Microsoft Internet Explorer¦Ó¼s¬°¤Hª¾¡A¥Ñ¯à¦¬¯Ç¨ä¥L±±¨î¶µªºband¶°¦X©Ò²Õ¦¨¡Aband¥i¦¬¯ÇªºªF¦è¥]¬A¯B°ÊToolbar¡BTextBox©MComboBox±±¨î¶µµ¥¡C¨Ï¥ÎªÌ¯à¦b°õ¦æ®É¨Ï¥Î·Æ¹«½Õ¾ã©M²¾°Êbandªº¤j¤p¡AÁÙ¯à§ïÅܨ䶶§Ç¡C¦bÂùÀ»bandªº¤À¹j½u¤§«á¡A·|¾¨¥i¯àªº®i¶}band©ó¨ä©ÒÄݪº¦C¤W¡C

CoolBar±±¨î¶µ¥]§tBand¶°¦X¡A¨ä¥]§t¤@­Ó¥H¤WªºBandª«¥ó¡C¨C¤@­ÓBandª«¥ó¥u¯à®e¯Ç¤@­Ó±±¨î¶µ¡A·í¨Ï¥ÎªÌ²¾°Ê©Î½Õ¾ãBand®e¾¹¤j¤p®É¡A©Ò®e¯Çªº±±¨î¶µ¤]·|¦Û°Ê²¾°Ê©M½Õ¾ã¤j¤p¡C¤£¯àÅýµLµøµ¡ªº±±¨î¶µ¦¨¬°Bandª«¥óªº¤l±±¨î¶µ¡A¦ý¥i¥H±NµLµøµ¡±±¨î¶µ©ñ¦b¥t¤@­Ó®e¾¹±±¨î¶µ¤¤—¨Ò¦pPictureBox±±¨î¶µ—¨ÃÅý«áªÌ¦¨¬°Bandª«¥óªº¤l±±¨î¶µ¡C¦P¼Ë¦a¡A¤£¯à¦b¨C­ÓBandª«¥ó¤¤¾Ö¦³¤@­Ó¥H¤Wªº¤l±±¨î¶µ¡A¦ý¥i¥H¦bBandª«¥óªº¤lPictureBox¤¤©ñ¸m¦h­Ó±±¨î¶µ¡C¡]¦b³oºØ±¡ªp¤U¡A¥²¶·¦bPicutreBoxªºResize¨Æ¥ó¨ç¼Æ¤¤¼¶¼g½Õ¾ã±±¨î¶µ¤j¤pªºµ{¦¡¡C¡^

CoolBar±±¨î¶µ¬O°ß¤@¥]§t¦bComCt332.ocxÀɮתº±±¨î¶µ¡CVisual Basic 6¬O²Ä¤@­Ó¥]§t¦¹±±¨î¶µªºª©¥»¡A¤£¹LVisual Basic 5ªº³]­pªÌ¥i¥H±qMicrosoftºô¯¸¤U¸ü¨Ï¥Î¦¹±±¨î¶µ¡C

³]©w³]­p¶¥¬qÄÝ©Ê
¡@

CoolBar±±¨î¶µ¬O½ÆÂøªº¡A¦Ó¥B¥]§t³\¦h³]­p¶¥¬qªºÄÝ©Ê¡A±z¥i¯à»Ý­n®É¶¡¤~¯à¼ô±x¡C

¤@¯ëÄÝ©Ê
¡@

©ñ¸mCoolBar±±¨î¶µ©óªí³æ¤§«á¡A­º¥ý±N¥¦¹ï»ô¨ìªí³æªºÃä½t¡C©ó¤@¯ëÄݩʵøµ¡¤¤¡A³]©wAlignÄݩʬ°1-vbAlignTop«K¯à¹F¦¨¡A¦Ó©Ò¦³ªº³]­p¶¥¬qÄݩʳ£¯à¦bÄÝ©Ê­¶¤¤°µ­×§ï¡C

OrientationÄݩʨM©w±±¨î¶µªº¤è¦V¡A¨ä­È¥i¥H¬°0-cc3OrientationHorizonal¡]¹w³]­È¡^©Î1-cc3OrientationVertical¡C­Y¤£·QÅý¨C­ÓBandªºÃä½t¦³¤ô¥­½uªº¸Ü¡A¥i¥H±NBandBorderÄݩʳ]¬°False¡A¦ý¤@¯ë·|³]¬°True¡C

¨Ï¥ÎªÌ¯à°÷¦b°õ¦æ®É²¾°Ê©Î©ì¦²¥¦ªº³Ì¥ª¤èÃä½t½u¨Ó½Õ¾ãBandª«¥óªº¤j¤p¡A¦pªG³]FixedOrderÄݩʬ°True¡A«h«OÃҨϥΪ̵Lªk§ïÅÜBandª«¥óªº¶¶§Ç¡CVariantHeight¥¬ªLÄݩʨM©wBandª«¥ó¯à§_¦³¤£¦Pªº°ª«×¡G¦pªG¬°True¡]¹w³]­È¡^¡A«h¨C¦C°ª«×¥Ñ¸Ó¦CBandª«¥ó¤§MinHeightÄݩʪº³Ì¤j­È¨M©w¡F¦pªG¬°False¡Aªí¥Ü©Ò¦³ªº¦C³£¦P°ª¡A¦]¦¹°ª«×¥ÑCoolBar±±¨î¶µ¤º©Ò¦³Bandª«¥óªºMinHeightÄݩʳ̤j­È¨M©w¡C

Bandª«¥ó
¡@

¹w³]±¡ªp¤U¡ACoolBar±±¨î¶µ¦³¤T­ÓBandª«¥ó¡A¦ý¥i¥H¦bÄÝ©Ê­¶ªºBands­¶ÅÒ¤¤¼W¥[©Î²¾°£Bandª«¥ó¡A¦p¹Ï11-8©Ò¥Ü¡C¨C¤@­ÓBand³£¯à½Õ¾ã¤j¤p¡]¦pªGStyleÄݩʬ°0cc3BandNormal¡^©Î¤£¯à¡]¦pªGStyle¬°1cc3BandFixedSize¡^¡C©T©w¼e«×«áªºBand¤£·|Åã¥Ü³Ì¥ª¤è½Õ¾ã¤j¤pªº§â¤â¡C

Bandª«¥ó¥iÅã¥Ü¦r¦ê¡]CaptionÄÝ©Ê¡^¡F¦Ó¥B¥¦¦³ªì©lªº¼e«×¡]WidthÄÝ©Ê¡^¡A³Ì¤p¼e«×¡]MinWidthÄÝ©Ê¡^©M³Ì¤p°ª«×¡]MinHeightÄÝ©Ê¡^¡C¥¦¤]¥]§tKeyÄÝ©Ê¡A¥i¥HÅý±z±qBands¶°¦X¤¤§ä¨ì¬Y­ÓBandª«¥ó¡AÁÙ¦³TagÄÝ©Ê¡A¥i¥Î¨ÓÀx¦s»PBand¥»¨­¦³Ãöªº¥ô¦ó¸ê°T¡C


¡@

¹Ï11-8 CoolBar±±¨î¶µÄÝ©Ê­¶ªºBands­¶ÅÒ¡Cª`·N­I´º¹Ï¤ù»P¨ä¤lToolbar·f°t¤W¦³°ÝÃD¡C

Bandª«¥ó³Ì­«­nªºÄݩʬOChild¡A¨ä«ü¦V¦b¯S©wBand¤¤ªº¤l±±¨î¶µ¡C­n²¾°Ê±±¨î¶µ¨ìBandª«¥ó¤º¡A­º¥ý¥²¶·Åý±±¨î¶µ¦¨¬°CoolBarªº¤l±±¨î¶µ¡C³Ì²³æªº¤èªk¬O±qCoolBar±±¨î¶µ«Ø¥ßToolbox¡A¤§«á¡A·|¦b±±¨î¶µ¦Cªí¤¤¡]¥i¦¨¬°Bandªº¤lª«¥ó¡^§ä¨ì¦¹±±¨î¶µ¦WºÙ¡C

¹w³]±¡ªp¤U¡A¾Ö¦³Bandsªº¥i¥]§t³\¦hBand¡A¦Ó¨C­ÓBandª«¥óªº¦ì¸m¥ÑBandsªº¶¶§Ç©M¥¦­Ìªº³Ì¤p¼e«×¨M©w¡C­n§ïÅÜBandªº¦ì¸m¡A¥i¥H³]NewRowÄݩʬ°False¨Ó§âBand²¾¨ì¤U¤@¦Cªº°_©l¦ì¸m¡C³Ì«á·íCoolBar±±¨î¶µ§ïÅÜ¥¦ªº¤è¦V¬°cc3OrientationVertical¡A¥i¥H³]AllowVerticalÄݩʬ°False¨Ï±oBand¬Ý¤£¨£¡C

¹Ï¹³©MÃC¦âºÞ²z
¡@

CoolBar±±¨î¶µ¤ä´©ÃC¦â©M¹Ï¤ùªº¶i¶¥ºÞ²z¡C¦pªGPictureÄݩʨS¦³­Èªº¸Ü¡A±±¨î¶µªºÃC¦â·|¥Ñ¼Ð·ÇªºForeColor©MBackColorÄݩʨM©w¡C¦pªG«ü©w¤@­ÓÂI°}¹Ïµ¹CoolBarªºPictureÄݩʮɡA³o­Ó¹Ï¹³©ñ¤j¦Ü©Ò¦³±±¨î¶µ¤ºªºBands¡A¥BBackColorÄÝ©Ê·|³Q©¿µø¡C

¬°¤FÅý³]­pªÌ«Ø¥ß»PMicrosoft Internet Explorer¬Û¦Pªº¨Ï¥ÎªÌ¤¶­±¡ACoolBar±±¨î¶µÁÙ¥]§t¤T­Óªþ¥[ªºÄÝ©Ê¡CEmbossPicture¥¬ªLÄݩʨM©w¹Ï¹³¬O§_³Q¤À¦¨¨âºØÃC¦â¡F¦pªGÄݩʭȬ°True¡A¨ä¥Y°_ªºÃC¦â±N¥ÑEmbossHighlight©MEmbossShadowÄݩʨM©w¡CCoolBar±±¨î¶µ¨Ï¥Îditheringºtºâªk¨Ó¨M©w­ì©l¹Ï¹³ªº­þ¨ÇÃC¦âÀ³¸ÓÅÜ«G©ÎÅÜ·t¡C

¹w³]±¡ªp¤U¡A©Ò¦³ªºBandª«¥ó·|Ä~©Ó¤÷CoolBar±±¨î¶µ©Ò³]ªº¹Ï¤ù¡A¦Ó³o¨Ç¹Ï¤ù·|¨Ã¦CÅã¥Ü©ó©Ò¦³ªºBands¡AµL½×Bands³Q½Õ¾ã¤j¤p©Î²¾°Ê¡C³]©wBandª«¥óªºFixedBackgroundÄݩʬ°False¡A·|³y¦¨¹Ï¤ù¤j¤p©T©w¡A§Y¨Ï¯S©wªºBand³Q²¾°Ê©Î§ïÅܤj¤p®É¥çµM¡C

¥t¤@¤è­±¡AÂǥѳ]©wUseCoolBarPictureÄݩʬ°False©M«ü©w¦Xªkªº­Èµ¹PictureÄÝ©Ê¡A¥i³]©w©Ò¦³©Î³¡¤ÀBandª«¥ó¡F¤]¥i¥HÂǥѳ]©w¨ü¼vÅTBandsªºEmbossProperty¬°True©M«ü©w¾A¦Xªº­Èµ¹EmbossHighlight©MEmbossShadowÄݩʨӨϹϤù¥Y°_¡A¦p¦P¥DCoolBar±±¨î¶µªº°µªk¯ë¡C

Bandª«¥ó¤]Ä~©Ó¤÷CoolBarªºÃC¦âÄÝ©Ê¡A°£«D³]©wBandªºUseCoolBarColors¬°False¡C¦pªG³o¼Ë°µªº¸Ü¡A¥iÂǥѳ]©wForeColor©MBackColorÄݩʨӿï¾Ü¥Î¦b¬Y¯S©wBandªºÃC¦â¡C¡]¦ý«áªÌ¥u¦³¦bBand¨S¦³Åã¥Ü¹Ï¤ù®É¡A¤~·|¯u¥¿³Q¨Ï¥Î¡C¡^

«Ü·N¥~¦a¡AµL½×CoolBar±±¨î¶µ©ÎBand±±¨î¶µ³£¨S¦³FontÄÝ©Ê¡A©Ò¥HBandªº¼ÐÃD¥~»ª§¹¥þ¨ú¨M©ó¨t²Î³]©w¡A°£¤F¨ä¤å¦rÃC¦â¥~¡]³o¥i³QForeColorÄÝ©Ê©Ò¼vÅT¡^¡C­Y­n¹ï¤å¦r¯S©Ê¦³¸û¤jªº±±¨î¡A¥i¥H¨Ï¥ÎLabel±±¨î¶µ¨Ã±N¨ä©ñ¸m¦bPictureBox±±¨î¶µ¤º¡AµM«á±N¦¹±±¨î¶µ§@¬°CoolBarªº¤l±±¨î¶µ¡C¡]°O¦íLabel±±¨î¶µ©M¨ä¥L»´¶qªº±±¨î¶µ¤£¯à¬°Bandª«¥óªº¤l±±¨î¶µ¡C¡^

°õ¦æ¶¥¬qªº¹B§@
¡@

¦b¤j³¡¤Àªº°õ¦æ¶¥¬q¤U¡AµL¶·³B²zCoolBar±±¨î¶µ¡GCoolBarª¾¹D·í¨Ï¥ÎªÌ²¾°Ê¥¦­Ì¨ì¥t¤@¦C®É¡A­n¦p¦ó½Õ¾ãBands¤j¤p¡A¥H¤Î¦p¦ó½Õ¾ã¦b¨C­ÓBand¤ºªº¤l±±¨î¶µ¡CµM¦Ó¦b¤Ö¼Æ¯S©w±¡ªp¤U¡AÁÙ¬O»Ý­n¥Îµ{¦¡¨Ó¤â°Ê³B²zCoolBar±±¨î¶µ¡C

³B²zResize¨Æ¥ó
¡@

·í¨Ï¥ÎªÌ¦b°õ¦æ®É²¾°ÊBandª«¥ó¡A¦Ó¦]¬°¦¹°Ê§@³y¦¨Band¦C³Q«Ø¥ß©Î®ø°£®É¡ACoolBar±±¨î¶µ·|¤ÞµoResize¨Æ¥ó¡C¦pªG·Q­n­«·s±Æ¦Cªí³æ¤W¨ä¥L±±¨î¶µªº¦ì¸m©ÎÁôÂá]Åã¥Ü¡^Bandª«¥ó¡A¥iµ½¥Î¦¹¨Æ¥ó¡C

¦ý¦³®É±z¤£À³¸Ó¦bResize¨Æ¥ó¤¤¼gµ{¦¡¡A¨Ò¦p¡A°²­YCoolBar±±¨î¶µ¥»¨­¥]§t¦b¨ä¥L±±¨î¶µ¤º¡A«hCoolBarªºHeightÄÝ©Ê¥i¯à¶Ç¦^¿ù»~ªº­È¡A©ÎResize¨Æ¥ó¥i¯à¤£·|³Q¤Þµo¡C°ò©ó¦¹¡A§ó¦nªº¤èªk¬O±Nµ{¦¡¼¶¼g¦bHeightChanged¨Æ¥ó¨ç¼Æ¤¤¡C·í¤ô¥­CoolBarªºHeightÄݩʩΫ«ª½CoolBarªºWidthÄݩʳQ­×§ï®É·|¤Þµo¦¹¨Æ¥ó¡C

­Yªí³æ¥]§t¨ä¥Lªº±±¨î¶µ¡A«h¹ï³o¨Ç¨Æ¥ó°µ¥X¤ÏÀ³¬O­«­nªº¡C°£«D¨Æ¥ý¹w¨¾¡A§_«h·íCoolBarÅÜ°ª®É¡A¨ä¥L¦bªí³æ¤Wªº±±¨î¶µ¥i¯à·|³QÂл\¡C¦]¦¹¡A¥i¯à§â©Ò¦³¨ä¥Lªº±±¨î¶µ¥þ©ñ¦b¬Y­Ó®e¾¹±±¨î¶µ¦pPictureBox¡A¦p¦¹¤@¨Ó¥u­n²¾°Ê³o­Ó®e¾¹§Y¥i¡C¦pªG±Ä¥Î³oºØ¤èªk¡A¤]À³¸Ó¦bªí³æªºResize©MPictureBoxªºResize¨Æ¥ó¨ç¼Æ¤¤¼¶¼gµ{¦¡¡C¤U¦Cµ{¦¡¤ù¬q¡]¦p¹Ï11-9©Ò¥Ü¡A§¹¾ãµ{¦¡ªþ¦bÀH®Ñ¥úºÐ¤¤¡^»¡©ú³o­Ó¸Ñ¨M¤èªk¡G

' Resize the PictureBox when the form resizes.
Private Sub Form_Resize()
    Picture1.Move 0, CoolBar1.Height, ScaleWidth, _
        ScaleHeight - CoolBar1.Height
End Sub
' Resize and move the PictureBox when the CoolBar's height changes.
Private Sub CoolBar1_HeightChanged(ByVal NewHeight As Single)
    ' Assumes this CoolBar is aligned to the form's top border
    Picture1.Move 0, NewHeight, ScaleWidth, ScaleHeight - NewHeight
End Sub
' Resize the controls inside the PictureBox when the latter is resized.
Private Sub Picture1_Resize()
    Label1.Move 0, 0, Picture1.ScaleWidth, Label1.Height
    Text1.Move 0, Label1.Height, Picture1.ScaleWidth, _
        Picture1.ScaleHeight - Label1.Height
End Sub


¡@

¹Ï11-9 ®i¥Üµ{¦¡Åã¥Ü¦p¦ó³B²z¥iÅܰʪºCoolBar±±¨î¶µ¡C

¼W¥[Bandª«¥ó
¡@

¦³®É¥i¯à»Ý­n¦b°õ¦æ®É¥Îµ{¦¡¨Ó¼W¥[Bandª«¥ó¡A±z¥i¥H¨Ï¥ÎBand¶°¦XªºAdd¤è¦¡¨Ó°µ¨ì¡A¦p¤U¦C»yªk¡G

Add([Index],[Key],[Caption],[Image],[NewRow],[Child],[Visible]) As Band

¨C­Ó°Ñ¼Æ¼vÅT¦P¼Ë¦WºÙªºBandÄÝ©Ê¡AChildÄÝ©Ê·|Ä~©ÓBand¤¤ªº±±¨î¶µ¡C·í¨Ï¥Î³o­Ó§Þ¥©«Ø¥ßBandª«¥ó®É¡A¥i¯à»Ý­n°ÊºA¦a«Ø¥ß¤l±±¨î¶µ¡C¦b¦¹±¡ªp¤U¡A«ü©w¥¦¦¨¬°Bandª«¥óªºChildÄÝ©Ê«e¡AÀ³¥ý­nÅý¥¦¦¨¬°CoolBar±±¨î¶µªº¤l±±¨î¶µ¡G

' Create a new ComboBox control.
Dim cb As ComboBox
Set cb = Controls.Add("VB.ComboBox", "NewCombo")
' Make it a child of the CoolBar1 control.
Set cb.Container = CoolBar1
' Create a new Band object, assigning the ComboBox to its
' Child property.
CoolBar1.Bands.Add , "NewBand" , cb.Name, , , cb

¥i¥H¨Ï¥ÎBands¶°¦XªºRemove¤è¦¡¨Ó²¾°£Bandª«¥ó¡G

' Remove the Band object created with the previous code snippet.
CoolBar1.Bands.Remove "NewBand"

¨Ï¥ÎToolbar±±¨î¶µ§@¬°¤l±±¨î¶µ
¡@

·í¨Ï¥Î¹Ï¤ù§@¬°CoolBar±±¨î¶µªº­I´º¹Ï®É¡A­nª`·N¬Y¨ÇÃþ«¬ªº¤l±±¨î¶µ¨Ã¤£¯à°t¦X±o«Ü¦n¡A¤×¨ä¬OToolbar±±¨î¶µ¡C¨Æ¹ê¤W¡A¦bToolbar±±¨î¶µ¤º¡A­I´º¹Ï¨Ã¤£·|Åã²{¡A¤Ï¦Ó³y¦¨¤£¦nªºµ²ªG¡]¨£ ¹Ï11-9 ¡^¡C©¯¹B¦a¡A¦³­Ó¸Ñ¨M¿ìªk¡A¤£¹L¥¦¥i¯à¨S±z·Q¹³¤¤ªºÂ²³æ¡C

µ§ªÌ§ä¨ìªº¸Ñ¨M¤èªk¬O¬[ºc¦b¤@­Óµ§ªÌ¼gªºÀɮפW¡A¦¹ÀÉ®×¥i¥H¦bMicrosoftºô¯¸ªºVisual Studio Owner°ÏªºCoolBar Sample±M®×¤¤§ä¨ì¡C³o­Ó½d¨Ò±M®×»¡©ú¦p¦ó¦bCoolBar±±¨î¶µ¤¤¥]§tToolbar±±¨î¶µ¡A¥H¤Î¨Ï¥Î¤@­Ó»²§Uªº¼Ò²ÕTransTBWrapper¨Ó«Ø¥ß¯B°Ê¦³µÛ³z©ú­I´ºªºToolbar¡A¦p¹Ï11-10¡C³o­Ó§Þ³N¬O¥²»Ýªº¡A¦]¬°³o­Óª©¥»ªºToolbar¡]¬°Visual Basic 5ª©¥»¡^¨Ã¤£¤ä´©¯B°Ê¼Ë¦¡¡C

¦p±z©Òª¾¡AVisual Basic 6 Toolbar±±¨î¶µ¤w¤ä´©¯B°Ê¼Ë¦¡¡A©Ò¥H¥i¥H§â¥¦¥]¦bCoolBar±±¨î¶µ¤º¡A¦Ó¬Ý°_¨Ó¤´¸ò­ì¥»ªº¤@¼Ë¡CµM¦Ó¡A·sª©Toolbar¤´¤£¤ä´©³z©ú­I´º¡C­×§ïTransTBWrapper¼Ò²ÕÅý¥¦¥i»P·sª©ªºToolbar±±¨î¶µ¬Û¤¬¹B§@ªá¤Fµ§ªÌ¤£¤Ö®É¶¡¡A¦ý²×¨s¬O¦³»ù­Èªº¡C²{¦b¥i¥H¦b±zªºÀ³¥Îµ{¦¡¤¤¨Ï¥Î·sª©ªº¼Ò²Õ¡A¤£¹L½Ð°O±o¸ÓÀɮר䣷|³QMicrosoft©Ò¤ä´©¡C


¡@

¹Ï11-10 ¸û¨Îªº®i¥Üµ{¦¡¨Ï¥ÎTransTBWrapper¼Ò²Õ¨Ó¥]§t¦³µÛ³z©ú­I´ºªºToolbar±±¨î¶µ¡C

¬°¤F°µ¨ì¹Ï11-10©Ò¥Üªº³z©ú­I´º¡A¥ý·Ç³Æ¦n¥¿±`°õ¦æªºµ{¦¡¡AµM«á§âTransTB.CtlÀÉ®×¥[¨ì±M®×¤¤¡C³o­ÓÀÉ®×¥]§tTransTBWrapper ActiveX±±¨î¶µ¡A©Ò¥H¥i¥H§â¦¹±±¨î¶µªº¹êÅé©ñ¨ì¥]§tCoolBar©MToolbar±±¨î¶µªºªí³æ¡C¦Ü¦¹¡A±z¥u»Ý­n¤@¨Ç¦bªí³æªºLoad©MUnload¨Æ¥ó¨ç¼Æªºµ{¦¡¡G

Private Sub Form_Load()
    ' Put the toolbar wrapper controls in the CoolBar band.
    Set TransTBWrapper1.Container = CoolBar1
    ' This must be the same Band that hosts the toolbar.
    Set CoolBar1.Bands(1).Child = TransTBWrapper1
    ' Put the toolbar into the toolbar wrapper.
    Set TransTBWrapper1.Toolbar = Toolbar1
End Sub
Private Sub Form_Unload(Cancel As Integer)
    ' It is VERY important to set the wrapper's Toolbar property
    ' to Nothing before the form is unloaded.
    CoolBar1.Visible = False
    Set TransTBWrapper1.Toolbar = Nothing
End Sub

ª`·N

­n«OÃÒForm_Unload¥Ã»··|³Q°õ¦æ¨ì¡F§_«h¥i¯à·|¾É­PÀ³¥Îµ{¦¡·í±¼¡C°ò©ó³o­Ó­ì¦]¡A¦bVisual Basic¾ã¦XÀô¹Ò¤¤´ú¸ÕÀ³¥Îµ{¦¡®É¡A½Ð¸g¥ÑUnload¥Dªí³æ¨Óµ²§ôµ{¦¡¡A¦Óµ´¤£­n°õ¦æEnd±Ô­z¡C¡]End±Ô­z¾É­PUnload¨Æ¥ó¤£·|¤Þµo¡C¡^


¥»³¹µ²§ô¤F©Ò¦³Visual Basic³q¥Î±±¨î¶µªº¤¶²Ð¡A¥t¥~ÁÙ¦³¤@¨ÇVisual Basic³]­p®v¥i¥H¨Ï¥Îªº±±¨î¶µ±N¦b¤U¤@³¹»¡©ú¡C