require 'vr/vruby'
require 'vr/vractivex'
require 'vr/vrlayout'
require 'vr/vrdialog'
require 'date'
#
# === 日付選択コントロール
#
class DatePickerAXControl < VRActiveXControl
ACTIVEXCINFO=["MSComCtl2.DTPicker","DDTPickerEvents"]
def date=(src_date)
self.ole_interface.Year = src_date.year
self.ole_interface.Month = src_date.month
self.ole_interface.Day = src_date.day
end
def date
return Date.new(self.ole_interface.Year,
self.ole_interface.Month,
self.ole_interface.Day)
end
end
#
# === 時間選択コントロール
#
class TimePickerAXControl < VRActiveXControl
ACTIVEXCINFO=["MSComCtl2.DTPicker","DDTPickerEvents"]
def vrinit
super
self.ole_interface.Format = 2
self.time = Time.now
end
def time=(src_time)
self.ole_interface.Hour = src_time.hour
self.ole_interface.Minute = src_time.min
self.ole_interface.Second = src_time.sec
end
def time
rtime = Time.local(Time.now.year,
Time.now.month,
Time.now.day,
self.ole_interface.Hour,
self.ole_interface.Minute,
self.ole_interface.Second)
end
end
class DateTimeSelectDialog < VRModalDialog
def _datetime_select_form_init
self.caption = 'DateTime Select'
self.move(226,181,272,102)
addControl(DatePickerAXControl,'datec',"",8,8,120,20,1342177408 | WStyle::WS_TABSTOP)
addControl(TimePickerAXControl,'timec',"",136,8,120,20,1342177408 | WStyle::WS_TABSTOP)
addControl(VRButton,'btn_ok',"Ok",8,40,80,24,1342177280 | WStyle::WS_TABSTOP)
addControl(VRButton,'btn_cancel',"Cancel",176,40,80,24,1342177280 | WStyle::WS_TABSTOP)
options.each { |key, value|
case key
when :datetime
@datec.date = value
@timec.time = value
end
}
end
def construct
_datetime_select_form_init
end
def btn_ok_clicked
date = @datec.date
time = @timec.time
datetime = DateTime.new(date.year,
date.month,
date.day,
time.hour,
time.min,
time.sec)
self.close(datetime)
end
def btn_cancel_clicked
self.close(false)
end
end
if __FILE__ == $0
options = Hash.new
options[:datetime] = DateTime.new(1999, 1, 1, 1, 1, 1)
p VRLocalScreen.modalform(nil, WStyle::WS_OVERLAPPEDWINDOW, DateTimeSelectDialog, nil, options)
VRLocalScreen.messageloop
end