| HOWTO: Select Same Time Period for Multiple Days
 
 Printed From: Codejock Forums
 Category:  Codejock Products
 Forum Name:  Calendar
 Forum Description:  Topics Related to Codejock Calendar
 URL: http://forum.codejock.com/forum_posts.asp?TID=5203
 Printed Date: 31 October 2025 at 4:41am
 Software Version: Web Wiz Forums 12.04 - http://www.webwizforums.com
 
 
 Topic: HOWTO: Select Same Time Period for Multiple Days
 Posted By: DDJJ
 Subject: HOWTO: Select Same Time Period for Multiple Days
 Date Posted: 03 October 2006 at 11:12am
 
 
        
          | I'm having a problem figuring out how to select multiple time periods using the calendar control.   I can see how the user might select a time period that crosses two dates (select two dates in DatePicker, click on a time on the first date while then holding the SHIFT key down and selecting a time in the second day).   But, let's say a user wanted to select the period 8 AM to 11 AM for all days of one week (M - F).  I have no problem selecting M-F in DatePicker, and having the 5 days displayed in the calendar, but I can't get the 8 AM to 11 AM time frame selected for all days.   Is there a way to do this?   Thanks.   Dan |  
 
 Replies:
 Posted By: DDJJ
 Date Posted: 03 October 2006 at 11:33am
 
 
        
          | BTW, I did figure out how to select M-F in the datepicker, select 8 AM to 11 AM for Monday (and enter description), then COPY the selected event to the other four days of the week.  But is there a quicker way to do this where you enter the description once, and have it automatically copied to the other dates (same description, same time period)?   I'm guessing I'll have to provide the user with a command button to do this, but if there's an easier way...   |  
 Posted By: sserge
 Date Posted: 03 October 2006 at 5:29pm
 
 
        
          | Hi, 
 Unfortunately no multi-time periods selection is not supported (no way to do this).
 
 But:
 
 1. See recurrence events in calendar. May be this will be useful for you.
 
 2. Other way is to create a form (or a context nenu) which helps user to create such duplicated events.
 
 3. Also try drag copy events (press Ctrl button and move event by mouse).
 
 4. See notifications EventAdded, BeforeEditOperation, etc.
 Using them you can show some dialog when new event added and ask user for other days to copy event to, or even copy it automatically for all visible days (or do some other tasks ...).
 
 --
 WBR,
 Serge
 
 |  
 Posted By: DDJJ
 Date Posted: 03 October 2006 at 5:50pm
 
 
        
          | Thanks Serge.   I think I will just add a button allowing the user to copy selected events to the same time period in any other currently selected days.   A related question:   I want to give users two ways of quickly selecting a time range on the calendar using a mouse, then creating an event.  The first way is for the user to select the time range, then merely start typing (I see how this is done).   For the second way, the user selects a time range, then merely presses their Enter key(no text associated with the event), and the event is created.  Where desired, the user can then select additional time ranges, hit enter, etc. etc.   I've been playing with this for awhile (in the CalendarControl_KeyDown event) and I don't see how you can it to work.  Can you give me some clues?   Thanks.   |  
 Posted By: DDJJ
 Date Posted: 03 October 2006 at 6:06pm
 
 
        
          | To expand on my second question a bit...   We have no need to point the calendar control to a database.  In our app, we are only using the control to provide users with an easy way to enter their time ("create events" in CJ-speak), then write the time info to our app's database.   In testing this without ever pointing the control to a database, I know I've been able to create onscreen events which we can capture by merely typing something after selecting a time range.  So, I'm hoping to also be able to do so when the user just hits the Enter key.  Does this make sense?     |  
 Posted By: sserge
 Date Posted: 04 October 2006 at 8:34am
 
 
        
          | Yes, all this does make sense. However, some theory below: 
 Calendar control has 2 layers:
 Data layer (events collection, and operations on it)
 Visualization layer (displaying, selecting, editing events, etc)
 
 Calendar control always works with DataProvider (see corresponding interface).
 DataProvider can be: memory, file (xml or binary), MS Access DB, Custom.
 By default calendar creates Memory data provider.
 
 You can use DataProvider to create/add/delete/change events.
 
 ------------
 
 On Enter key down, get active selection start/end.
 Using data provider create a new event, set its start/end times (also subject or anything) and add your event to the data provider.
 
 I just played a little and think that Shift+Enter or Ctrl+Enter will be better than using simple Enter because Enter key ends subject editing and you override this.
 
 EXAMPLE:
 
 | Private Sub CalendarControl_KeyDown(KeyCode As Integer, Shift As Integer)
 
 If KeyCode = 13 And CalendarControl.ActiveView.Selection.IsValid _
 And (Shift And vbShiftMask) <> 0 Then
 
 Dim pEvent As CalendarEvent
 Set pEvent = CalendarControl.DataProvider.CreateEvent
 
 pEvent.StartTime = CalendarControl.ActiveView.Selection.Begin
 pEvent.EndTime = CalendarControl.ActiveView.Selection.End
 pEvent.AllDayEvent = CalendarControl.ActiveView.Selection.AllDay
 
 CalendarControl.DataProvider.AddEvent pEvent
 End If
 End Sub
 
 | 
 
 --
 WBR,
 Serge
 
 |  
 Posted By: DDJJ
 Date Posted: 04 October 2006 at 12:37pm
 
 
        
          | OK, so it sounds like in my situation I'm using the default data provider (memory), which is fine.   I think I'm going to just use the Enter key.  As mentioned earlier, users can either (1) select a time range, then start typing, or (2) just hit the Enter key to select the time range as an event.  In the latter case, the user does not want to attach any kind of description to the related time, just wants to make sure the time is recorded.   Make sense?   Thanks, Serge.   |  
 Posted By: sserge
 Date Posted: 04 October 2006 at 4:37pm
 
 
        
          | Yes, why not if this is suitable for you  
 --
 WBR,
 Serge
 
 |  
 Posted By: DDJJ
 Date Posted: 05 October 2006 at 11:20am
 
 
        
          | Serge, I think I'm now seeing what you meant regarding the Enter key.   If the user merely selects a time period on the calendar, then clicks the Enter key, I can handle that in code.   If on the other hand, the user selects a time period, then types something, my code for the first scenario is creating another Event, which I don't want.   Is there a way to check and see if the user has written something to the selected time period?  It's kind of odd...once the user starts typing, no Event is created I guess until after the user moves off of the selected time period (or presses the Enter key, which is where my problem is).   Let me know if I'm not describing my problem well.   Thanks!   |  
 Posted By: DDJJ
 Date Posted: 05 October 2006 at 12:04pm
 
 
        
          | How about the following?   Dim m_EditInProgress                As Boolean   Private Sub CalendarControl1_BeforeEditOperation(ByVal OpParams As XtremeCalendarControl.CalendarEditOperationParameters, bCancelOperation As Boolean)
     m_EditInProgress = True
 End Sub
   Private Sub CalendarControl1_KeyDown(KeyCode As Integer, Shift As Integer)
     Dim pEvent As CalendarEvent
 If CalendarControl1.ActiveView.GetSelectedEvents.Count = 0 Then
 If KeyCode = vbKeyReturn And    CalendarControl1.ActiveView.Selection.IsValid Then
 If Not m_EditInProgress Then
 With CalendarControl1
 Set pEvent = .DataProvider.CreateEvent
 pEvent.StartTime = .ActiveView.Selection.Begin
 pEvent.EndTime = .ActiveView.Selection.End
 pEvent.AllDayEvent = .ActiveView.Selection.AllDay
 .DataProvider.AddEvent pEvent
 End With
 Else
 m_EditInProgress = False
 End If
 End If
 End If
 End Sub   Private Sub CalendarControl1_SelectionChanged(ByVal SelType As XtremeCalendarControl.CalendarSelectionChanged)
 m_EditInProgress = False  'just to make sure...
 
 End Sub   Seems to work OK...   |  
 Posted By: DDJJ
 Date Posted: 05 October 2006 at 12:07pm
 
 
        
          | Need to delete that "m_EditInProgress = False" in the KeyDown event I think. |  
 Posted By: sserge
 Date Posted: 06 October 2006 at 4:27am
 
 
        
          | Yes, you're right. But you have to reset m_EditInProgress when inplace event editing is finished or canceled.
 
 You can do this in EventAdded, EventChanged notifications, and when ESC key is pressed (may be is some other places as well)
 
 --
 WBR,
 Serge
 
 
 |  
 
 |