HOWTO: Select Same Time Period for Multiple Days |
Post Reply |
Author | |
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
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
|
|
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
|
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...
|
|
sserge
Moderator Group Joined: 01 December 2004 Status: Offline Points: 1297 |
Post Options
Thanks(0)
|
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 |
|
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
|
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.
|
|
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
|
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?
|
|
sserge
Moderator Group Joined: 01 December 2004 Status: Offline Points: 1297 |
Post Options
Thanks(0)
|
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:
-- WBR, Serge |
|
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
|
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.
|
|
sserge
Moderator Group Joined: 01 December 2004 Status: Offline Points: 1297 |
Post Options
Thanks(0)
|
Yes, why not if this is suitable for you
-- WBR, Serge |
|
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
|
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!
|
|
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
|
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...
|
|
DDJJ
Senior Member Joined: 13 December 2004 Status: Offline Points: 143 |
Post Options
Thanks(0)
|
Need to delete that "m_EditInProgress = False" in the KeyDown event I think.
|
|
sserge
Moderator Group Joined: 01 December 2004 Status: Offline Points: 1297 |
Post Options
Thanks(0)
|
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 |
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |