[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/08/12(Fri) 23:36
投稿者名:KAN
Eメール:
URL :
タイトル:
カレンダーコントロールに関して
combo box を利用してカレンダーの月及び年を切り替える様になっているのですが、
その値の修得方法が分かりません。

Calendar1.Year と Calendar1.Month と思ったのですが、どちらも値には0が入っているのみです。

ご存じの方、宜しければアドバイス宜しくお願いします。

VB6を使用しています。

投稿時間:2005/08/13(Sat) 06:42
投稿者名:G13
Eメール:
URL :
タイトル:
Re: カレンダーコントロールに関して
> combo box を利用してカレンダーの月及び年を切り替える様になっているのですが、
> その値の修得方法が分かりません。
>
> Calendar1.Year と Calendar1.Month と思ったのですが、どちらも値には0が入っているのみです。
#私の環境では、CalendarコントロールをForm1に貼り付けて、
#Debug.Print Calendar1.Year, Calendar1.Month
#とすると、2005 8となりますけど?。

#環境:WinXP(SP2) VB6(SP6)

■確認
ComboBoxコントロール(年/月)から年/月値を取得して、Calendarコントロールに年/月を
設定するのですか?。
であれば、
その値の修得(取得?)方法は、ComboBoxからの値ということですよね。

ComboBoxにどういった形でListをAddしているのか判りませんが、以下のコードでカレン
ダーは切り替わりました。
#ComboBoxのStyleプロパティ = 2 DropDownList にしています。

Private Sub cboMonth_Click()
    With cboMonth
        Calendar1.Month = (.ListIndex + 1)
    End With
End Sub

Private Sub cboYear_Click()
    With cboYear
        Calendar1.Year = (.ListIndex + 2000)
    End With
End Sub

Private Sub Form_Load()
    Dim i As Integer

  '年(取りあえず100年分で初期値は2000年)    
    With cboYear
        .Clear
        For i = 0 To 99
            .AddItem CStr(2000 + i) & "年"
        Next i
        .ListIndex = (Calendar1.Year - 2000)
    End With
    
    With cboMonth
        .Clear
        For i = 1 To 12
            .AddItem CStr(i) & "月"
        Next i
        .ListIndex = Calendar1.Month - 1
    End With
End Sub

ListIndexは0〜順番に割り付くので、ComboBoxのClickイベントからListIndexを取得し、
その値から年/月を割り出します。

投稿時間:2005/08/13(Sat) 09:46
投稿者名:KAN
Eメール:
URL :
タイトル:
Re^2: カレンダーコントロールに関して
> #私の環境では、CalendarコントロールをForm1に貼り付けて、
> #Debug.Print Calendar1.Year, Calendar1.Month
> #とすると、2005 8となりますけど?。
>
> #環境:WinXP(SP2) VB6(SP6)
>
> ■確認
> ComboBoxコントロール(年/月)から年/月値を取得して、Calendarコントロールに年/月を
> 設定するのですか?。
> であれば、
> その値の修得(取得?)方法は、ComboBoxからの値ということですよね。
>
> ComboBoxにどういった形でListをAddしているのか判りませんが、以下のコードでカレン
> ダーは切り替わりました。
> #ComboBoxのStyleプロパティ = 2 DropDownList にしています。

G13さん、コードまで書いてもらって返信ありがとうございます。

新しくカレンダー用にComboBoxを作成すると言う事ではなく、カレンダーに標準で付属されている
ComboBoxをせっかくだから利用しようかなと考えていました。
そうすると年月といった値は、標準で設定済みなので...

投稿時間:2005/08/13(Sat) 18:09
投稿者名:G13
Eメール:
URL :
タイトル:
Re^3: カレンダーコントロールに関して
> G13さん、コードまで書いてもらって返信ありがとうございます。
>
> 新しくカレンダー用にComboBoxを作成すると言う事ではなく、カレンダーに標準で付属されている
> ComboBoxをせっかくだから利用しようかなと考えていました。
> そうすると年月といった値は、標準で設定済みなので...

誤爆失礼しましたm(__)m
けど、Formに貼り付けた時に既に本日の日付が選択されていましたね。
失礼します。

投稿時間:2005/08/13(Sat) 08:37
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: カレンダーコントロールに関して

> Calendar1.Year と Calendar1.Month と思ったのですが、どちらも値には0が入っているのみです。
>
> ご存じの方、宜しければアドバイス宜しくお願いします。

 現在表示されている範囲内で、日付が選択されていないと、Yearプロパティと
Monthプロパティには、0が入るようです。(この場合でも、Valueプロパティには
選択されている日付は返ります。)表示されている、日付をクリックして
選択すると、YearプロパティとMonthプロパティに値がセットされます。

 Mscal.ocxは、Access付属のコントロールです。Access用に作られていますので
VBで使用する場合の動作保証はありません。Common Control-2のMonthViewや
DTPickerを使ったほうがいいと思います。

 又、VBのプログラムにMscal.coxを添付して配布できるかどうかについては
正確な情報は忘れてしまいました。配布できないかもしれません、マイクロ
ソフトにご確認ください。

投稿時間:2005/08/13(Sat) 09:57
投稿者名:KAN
Eメール:
URL :
タイトル:
Re^2: カレンダーコントロールに関して
>  現在表示されている範囲内で、日付が選択されていないと、Yearプロパティと
> Monthプロパティには、0が入るようです。(この場合でも、Valueプロパティには
> 選択されている日付は返ります。)表示されている、日付をクリックして
> 選択すると、YearプロパティとMonthプロパティに値がセットされます。
>
>  Mscal.ocxは、Access付属のコントロールです。Access用に作られていますので
> VBで使用する場合の動作保証はありません。Common Control-2のMonthViewや
> DTPickerを使ったほうがいいと思います。
>
>  又、VBのプログラムにMscal.coxを添付して配布できるかどうかについては
> 正確な情報は忘れてしまいました。配布できないかもしれません、マイクロ
> ソフトにご確認ください。

Starfish さん、返信ありがとうございます。

日付を選択しないと、値が入らないなんて使えないコントロールですね。
当月は良いとしても、カレンダー月を切り替えた時などは、日付が選択してあると変ですからね。
MonthViewや DTPickerに変える事を検討してみます。

投稿時間:2005/08/16(Tue) 11:16
投稿者名:だい
URL :
タイトル:
参考: カレンダーコントロールに関して

[VB] "$(DLLSelfRegisterEx)" の登録エラー
hhttp://support.microsoft.com/default.aspx?scid=kb;ja;412867
に、
「Visual Studio 6.0 Service Pack 4 以降が適用されている場合、
MSCAL.OCX の再頒布が許諾されます。」
とあります。
再頒布される場合には、SP4以降をあててあればライセンス的にはOKのようです。

ご参考までに。