Yes! Scheduler has a big/steep learning curve.
Here is a code snippet that may help you - I struggled with it for a long time but it is quite powerful.
- Code: Select all
Scheduler.JQSchedulerOptions.StartHour := lv_Start - 1;
Scheduler.JQSchedulerOptions.EndHour := lv_End + 1;
while not qry1.Eof do
begin
currItem := Scheduler.JQSchedulerOptions.EventItems.Add;
currItem.StartTime := qry1.FieldByName('StartTime').AsDateTime;
currItem.EndTime := IncMinute(currItem.StartTime, qry1.FieldByName('Duration').AsInteger);
currItem.Editable := (not qry1.FieldByName('DoNotBook').AsBoolean) { }
and (qry1.FieldByName('Editable').AsBoolean) and (currItem.EndTime > Now);
if qry1.FieldByName('PersonName').AsString > '' then
currItem.EventTitle := qry1.FieldByName('AppointmentFor').AsString + ' for ' + qry1.FieldByName('PersonName').AsString
else
currItem.EventTitle := qry1.FieldByName('AppointmentFor').AsString;
if qry1.FieldByName('DoNotBook').AsBoolean then
begin
currItem.EventContent := qry1.FieldByName('Notes').AsString;
currItem.EventHint := 'Do Not Book - ' + currItem.EventTitle + ': ' + currItem.EventContent;
end
else if qry1.FieldByName('PersonNumber').AsInteger > 0 then
begin
if qry1.FieldByName('Status').AsString = 'D' then
lv_HintHdr := 'Did NOT Attend'
else if qry1.FieldByName('Status').AsString = 'E' then
lv_HintHdr := 'Not Billed'
else if qry1.FieldByName('Status').AsString = 'C' then
lv_HintHdr := 'In Meeting'
else if qry1.FieldByName('Status').AsString = 'F' then
begin
if qry1.FieldByName('Status_2').AsString = 'B' then
lv_HintHdr := 'Billed'
else
lv_HintHdr := 'Completed';
end
else if qry1.FieldByName('Status').AsString = 'W' then
lv_HintHdr := 'Waiting Bill'
else
lv_HintHdr := 'Arrived';
currItem.EventHint := lv_HintHdr + ' - ' + currItem.EventTitle + ': ' + currItem.EventContent;
currItem.EventContent := qry1.FieldByName('Notes').AsString;
end
else if currItem.EndTime < Now then
begin
currItem.EventContent := qry1.FieldByName('Notes').AsString;
if qry1.FieldByName('PersonName').AsString = '' then
lv_HintHdr := 'Past'
else if currItem.EndTime < Date then
lv_HintHdr := 'Did NOT Attend'
else if not qry1.FieldByName('Arrived').IsNull and (qry1.FieldByName('Arrived').AsDateTime > 1000) then
lv_HintHdr := 'Not Arrived';
currItem.EventHint := lv_HintHdr + ' - ' + currItem.EventTitle + ': ' + currItem.EventContent;
currItem.EventContent := qry1.FieldByName('Notes').AsString;
end
else if qry1.FieldByName('PersonName').AsString = '' then
begin
currItem.EventHint := 'Open';
currItem.EventContent := '';
end
else
begin
currItem.EventContent := qry1.FieldByName('Notes').AsString;
currItem.EventHint := 'Booked - ' + currItem.EventTitle + ': ' + currItem.EventContent;
end;
currItem.ID := qry1.FieldByName('AppointmentID').AsInteger;
currItem.AllDay := qry1.FieldByName('AllDay').AsBoolean;
currItem.CrossDay := qry1.FieldByName('CrossDay').AsBoolean;
currItem.Location := qry1.FieldByName('Building').AsString + '/' + qry1.FieldByName('Room').AsString;
currItem.Subject := qry1.FieldByName('AppointmentFor').AsString;
qry1.Next;
end;
Scheduler.Update;
By no means complete but I hope it helps
Have fun