Skip to main content

TcxCustomSchedulerStorage.BeginUpdate Method

Postpones all notifications that reflect any scheduler storage component changes until an EndUpdate procedure call.

Declaration

procedure BeginUpdate; virtual;

Remarks

Every time you change scheduler storage settings, add/remove user events, resources, etc. – the storage component sends corresponding change notifications to associated components. Enclose multiple scheduler storage changes between BeginUpdate and EndUpdate calls to avoid redundant notifications and UI flickering in the associated TcxScheduler control.

BeginUpdate/EndUpdate Calls and Batch Changes

A BeginUpdate procedure call disables notifications and postpones all changes until an EndUpdate call. A subsequent EndUpdate call does the following:

  • Re-enables change notifications
  • Applies all changes made after a BeginUpdate call
  • Sends corresponding notifications in a batch
  • Redraws the associated TcxScheduler control

Note

Ensure that every BeginUpdate procedure call is followed by an EndUpdate procedure call, even if an exception occurs. Otherwise, the associated TcxScheduler control cannot interact with stored user events.

Code Example: Create User Events

The following code example creates, configures, and displays two events in a TcxScheduler control using a TcxSchedulerDBStorage component as user event storage:

uses
  System.SysUtils,  // Declares the Now function
  System.DateUtils,  // Declares the IncHour function
  cxScheduler,  // Declares the TcxScheduler class
  cxSchedulerStorage,  // Declares the TcxCustomSchedulerStorage class and related types
  cxSchedulerDBStorage;  // Declares the TcxSchedulerDBStorage class
// ...

procedure TMyForm.FormCreate(Sender: TObject);
var
  AEvent: TcxSchedulerEvent;
begin
  cxSchedulerDBStorage1.BeginUpdate;  // Initiates the following batch operation
  try
    AEvent := cxSchedulerDBStorage1.createEvent;
    AEvent.Caption := 'Event1';
    AEvent.Start := Now;
    AEvent.Finish := IncHour(Now, 2);
    AEvent.ResourceID := 1;

    AEvent := cxSchedulerDBStorage1.createEvent;
    AEvent.Caption := 'Event2';
    AEvent.Start := IncHour(Now, 3);
    AEvent.Finish := IncHour(Now, 5);
    AEvent.ResourceID := 1;

    cxSchedulerDBStorage1.PostEvents;  // Publishes created and configured user events
  finally
    cxSchedulerDBStorage1.EndUpdate;  // Calls EndUpdate regardless of the batch operation's success
  end;
end;

VCL Scheduler: User Event Creation Example

See Also