SchedulerEvent sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

SchedulerEvent sorunu

Mesaj gönderen haydarxxx »

Kod: Tümünü seç

{********************************************************************}
{                                                                    }
{       Developer Express Visual Component Library                   }
{                   ExpressScheduler                                 }
{                                                                    }
{       Copyright (c) 2003-2011 Developer Express Inc.               }
{       ALL RIGHTS RESERVED                                          }
{                                                                    }
{   The entire contents of this file is protected by U.S. and        }
{   International Copyright Laws. Unauthorized reproduction,         }
{   reverse-engineering, and distribution of all or any portion of   }
{   the code contained in this file is strictly prohibited and may   }
{   result in severe civil and criminal penalties and will be        }
{   prosecuted to the maximum extent possible under the law.         }
{                                                                    }
{   RESTRICTIONS                                                     }
{                                                                    }
{   THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES            }
{   (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE     }
{   SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS    }
{   LICENSED TO DISTRIBUTE THE EXPRESSSCHEDULER AND ALL ACCOMPANYING }
{   VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY.              }
{                                                                    }
{   THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED       }
{   FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE         }
{   COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE        }
{   AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT   }
{   AND PERMISSION FROM DEVELOPER EXPRESS INC.                       }
{                                                                    }
{   CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON        }
{   ADDITIONAL RESTRICTIONS.                                         }
{                                                                    }
{********************************************************************}

unit cxSchedulerEventEditor;

{$I cxVer.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, cxTextEdit, cxMemo, cxImageComboBox, cxCalendar,
  cxTimeEdit, cxLookAndFeelPainters, cxDropDownEdit, cxCheckBox,
  cxSpinEdit, cxMaskEdit, cxControls, cxContainer, cxEdit, cxButtons,
  cxSchedulerStorage, cxLookAndFeels, cxSchedulerCustomControls,
  cxCheckComboBox, cxGroupBox, Menus, cxGraphics, dxSkinsCore, dxSkinBlack,
  dxSkinBlue, dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom, dxSkinDarkSide,
  dxSkinFoggy, dxSkinGlassOceans, dxSkiniMaginary, dxSkinLilian,
  dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins,
  dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
  dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
  dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinPumpkin, dxSkinSeven,
  dxSkinSharp, dxSkinSilver, dxSkinSpringTime, dxSkinStardust,
  dxSkinSummer2008, dxSkinsDefaultPainters, dxSkinValentine,
  dxSkinXmas2008Blue, DBCtrls, JvExControls, JvDBLookup, ComCtrls, Grids,
  DBGrids, JvExDBGrids, JvDBGrid, JvDBUltimGrid;

type

  { TcxSchedulerCustomEditorForm }

  TcxSchedulerCustomEditorForm = class(TForm)
  private
    FEvent: TcxSchedulerControlEvent;
    FIsInternalActivation: Boolean;
    FReadOnly: Boolean;
    function GetStorage: TcxCustomSchedulerStorage;
  protected
    FModified: Boolean;
    FIsCreation: Boolean;
    procedure ApplyChanges; virtual;
    function GetFormColor: TColor; virtual;
    procedure InitializeControls; virtual;
    procedure LoadEventValuesIntoControls; virtual;
    procedure LoadValuesIntoTimeControls(const AStart, AFinish: TDateTime; AllDayEvent: Boolean); virtual;

    procedure SetReadOnly(AValue: Boolean); virtual;
    procedure UpdateEventValuesFromControls; virtual;

    property Storage: TcxCustomSchedulerStorage read GetStorage;
  public
    constructor CreateEx(AEvent: TcxSchedulerControlEvent); virtual;
    function ShowModal: Integer; override;

    property Event: TcxSchedulerControlEvent read FEvent;
    property IsInternalActivation: Boolean read FIsInternalActivation write FIsInternalActivation;
    property Modified: Boolean read FModified;
    property ReadOnly: Boolean read FReadOnly write SetReadOnly;
  end;

  { TcxSchedulerCustomEventEditor }

  TcxSchedulerCustomEventEditor = class(TcxSchedulerCustomEditorForm)
  private
    FAllowDelete: Boolean;
    FAllowHiddenEvents: Boolean;
    FAllowRecurrence: Boolean;
    FAllowShare: Boolean;
    FBiasTime: TDateTime;
    FDeleteSeries: Boolean;
    FDeleteExceptions: Boolean;
    FForceSeries: Boolean;
    FHasStorageEvent: Boolean;
    FIntersection: Boolean;
    FRecurrenceActivate: Boolean;
    FPatternStart: TDateTime;
    FPatternFinish: TDateTime;
    FRecurrenceInfo: TcxSchedulerEventRecurrenceInfo;
    FShowResources: Boolean;
    FShowTaskComplete: Boolean;
    FOnDeleteFunc: TcxOnDeleteEventFunc;
  protected
    procedure ApplyEventTime;
    function CheckIntersection: Boolean; virtual;
    procedure DeleteEvent; virtual;
    function FindAvailableTime: Boolean; virtual;
    procedure GetEditingEventTime(var AStart, AFinish: TDateTime; var AState: Integer); virtual; abstract;
    function GetResourcesPanelVisible: Boolean; virtual;
    procedure PostEvent; virtual;
    procedure SaveChanges; virtual;
    procedure SaveResourceID; virtual;
    procedure SetAllowDelete(AValue: Boolean); virtual;
    procedure SetAllowRecurrence(AValue: Boolean); virtual;
    procedure SetIntersection(AValue: Boolean); virtual;

    property DeleteExceptions: Boolean read FDeleteExceptions write FDeleteExceptions;
    property DeleteSeries: Boolean read FDeleteSeries write FDeleteSeries;
    property HasStorageEvent: Boolean read FHasStorageEvent;
    property Storage;
    property PatternStart: TDateTime read FPatternStart;
    property PatternFinish: TDateTime read FPatternFinish;
    property RecurrenceInfo: TcxSchedulerEventRecurrenceInfo read FRecurrenceInfo;
  public
    constructor CreateEx(AEvent: TcxSchedulerControlEvent); override;
    destructor Destroy; override;

    property AllowDelete: Boolean read FAllowDelete write SetAllowDelete;
    property AllowHiddenEvents: Boolean read FAllowHiddenEvents write FAllowHiddenEvents;
    property AllowRecurrence: Boolean read FAllowRecurrence write SetAllowRecurrence;
    property AllowShare: Boolean read FAllowShare write FAllowShare; 
    property BiasTime: TDateTime read FBiasTime write FBiasTime;
    property Event;
    property ForceSeries: Boolean read FForceSeries write FForceSeries;
    property Intersection: Boolean read FIntersection write SetIntersection;
    property Modified: Boolean read FModified;
    property RecurrenceActivate: Boolean read FRecurrenceActivate write FRecurrenceActivate;
    property ReadOnly;
    property ShowResources: Boolean read FShowResources write FShowResources;
    property ShowTaskComplete: Boolean read FShowTaskComplete write FShowTaskComplete;
    property OnDeleteFunc: TcxOnDeleteEventFunc read FOnDeleteFunc write FOnDeleteFunc;
  end;

  { TcxSchedulerEventEditorForm }

  TcxSchedulerEventEditorForm = class(TcxSchedulerCustomEventEditor)
    Bevel1: TBevel;
    Bevel5: TBevel;
    Bevel6: TBevel;
    btnCancel: TcxButton;
    btnDelete: TcxButton;
    btnOk: TcxButton;
    btnRecurrence: TcxButton;
    cbAllDayEvent: TcxCheckBox;
    cbReminder: TcxCheckBox;
    cbReminderMinutesBeforeStart: TcxComboBox;
    cbResources: TcxCheckComboBox;
    btnFindTime: TcxButton;
    cxGroupBox1: TcxGroupBox;
    deEnd: TcxDateEdit;
    deStart: TcxDateEdit;
    icbLabel: TcxImageComboBox;
    icbShowTimeAs: TcxImageComboBox;
    lbEndTime: TLabel;
    lbInformation: TLabel;
    lbLabel: TLabel;
    lbLocation: TLabel;
    lbResource: TLabel;
    lbShowTimeAs: TLabel;
    lbStartTime: TLabel;
    lbSubject: TLabel;
    meMessage: TcxMemo;
    pnlButtons: TPanel;
    pnlCaption: TPanel;
    pnlInformation: TPanel;
    pnlMessage: TPanel;
    pnlRecurrence: TPanel;
    pnlPlaceHolder: TPanel;
    pnlResource: TPanel;
    pnlThreeButtons: TPanel;
    pnlTime: TPanel;
    teEnd: TcxTimeEdit;
    teLocation: TcxTextEdit;
    teStart: TcxTimeEdit;
    teSubject: TcxTextEdit;
    pnlReminder: TPanel;
    Panel1: TPanel;
    pnlShowTimeAs: TPanel;
    pnlRecurrenceInfo: TPanel;
    Bevel7: TBevel;
    lbRecurrence: TLabel;
    lbRecurrencePattern: TLabel;
    pnlTaskComplete: TPanel;
    Bevel8: TBevel;
    lbTaskComplete: TLabel;
    seTaskComplete: TcxSpinEdit;
    cbxTaskStatus: TcxComboBox;
    lbTaskStatus: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    JvDBLookupCombo1: TJvDBLookupCombo;
    Label1: TLabel;
    PageControl2: TPageControl;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    TabSheet6: TTabSheet;
    TabSheet7: TTabSheet;
    TabSheet8: TTabSheet;
    TabSheet9: TTabSheet;
    TabSheet10: TTabSheet;
    TabSheet11: TTabSheet;
    TabSheet12: TTabSheet;
    TabSheet13: TTabSheet;
    TabSheet14: TTabSheet;
    TabSheet15: TTabSheet;
    TabSheet16: TTabSheet;
    TabSheet17: TTabSheet;
    TabSheet18: TTabSheet;
    TabSheet19: TTabSheet;
    TabSheet20: TTabSheet;
    TabSheet21: TTabSheet;
    TabSheet22: TTabSheet;
    TabSheet23: TTabSheet;
    TabSheet24: TTabSheet;
    TabSheet25: TTabSheet;
    TabSheet26: TTabSheet;
    TabSheet27: TTabSheet;
    TabSheet28: TTabSheet;
    TabSheet29: TTabSheet;
    JvDBUltimGrid1: TJvDBUltimGrid;
    TabSheet1: TTabSheet;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Edit4: TEdit;
    procedure OnChanged(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
    procedure cbAllDayEventPropertiesChange(Sender: TObject);
    procedure StartDateChanged(Sender: TObject);
    procedure cbReminderClick(Sender: TObject);
    procedure cbReminderMinutesBeforeStartPropertiesValidate(
      Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
      var Error: Boolean);
    procedure cbReminderMinutesBeforeStartPropertiesPopup(Sender: TObject);
    procedure OnEventTimeChanged(Sender: TObject);
    procedure btnRecurrenceClick(Sender: TObject);
    procedure OnResourceIDChanged(Sender: TObject);
    procedure btnFindTimeClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure seTaskCompleteChange(Sender: TObject);
    procedure cbxTaskStatusChange(Sender: TObject);
    procedure cbResourcesPropertiesClickCheck(Sender: TObject;
      ItemIndex: Integer; var AllowToggle: Boolean);
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure JvDBLookupCombo1Change(Sender: TObject);
    procedure TabSheet3Show(Sender: TObject);
    procedure TabSheet4Show(Sender: TObject);
    procedure JvDBUltimGrid1CellClick(Column: TColumn);
    procedure TabSheet5Show(Sender: TObject);
    procedure TabSheet6Show(Sender: TObject);
    procedure TabSheet7Show(Sender: TObject);
    procedure TabSheet8Show(Sender: TObject);
    procedure TabSheet9Show(Sender: TObject);
    procedure TabSheet10Show(Sender: TObject);
    procedure TabSheet11Show(Sender: TObject);
    procedure TabSheet12Show(Sender: TObject);
    procedure TabSheet13ContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure TabSheet14Show(Sender: TObject);
    procedure TabSheet15Show(Sender: TObject);
    procedure TabSheet16Show(Sender: TObject);
    procedure TabSheet17Show(Sender: TObject);
    procedure TabSheet18Show(Sender: TObject);
    procedure TabSheet19Show(Sender: TObject);
    procedure TabSheet20Show(Sender: TObject);
    procedure TabSheet21Show(Sender: TObject);
    procedure TabSheet22Show(Sender: TObject);
    procedure TabSheet23Show(Sender: TObject);
    procedure TabSheet24Show(Sender: TObject);
    procedure TabSheet25Show(Sender: TObject);
    procedure TabSheet26Show(Sender: TObject);
    procedure TabSheet27Show(Sender: TObject);
    procedure TabSheet28Show(Sender: TObject);
    procedure TabSheet29Show(Sender: TObject);
    procedure TabSheet1Show(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    FNeedCheckLossOfExceptions: Boolean;
    FRecurrenceInfoHeight: Integer;
    function GetEventName: string;
  protected
    FDuration: TDateTime;
    FIsUpdating: Boolean; 
    procedure ApplyChanges; override;
    function CheckIntersection: Boolean; override;
    function CheckTimeRange(var AStart, AFinish: TDateTime): Boolean; virtual;
    procedure CheckVisible; virtual;
    procedure ClearModifiedFlag; virtual;
    procedure GetEditingEventTime(var AStart, AFinish: TDateTime; var AState: Integer); override;
    function GetFormColor: TColor; override;
    function GetRecurrenceDescription: string; virtual;
    procedure InitializeControls; override;
    procedure InitLabelColor;
    procedure InitReminderPanel;
    procedure InitResources;
    procedure InitShowTimeAsPanel;
    procedure InitTaskCompletePanel;
    procedure LoadEventValuesIntoControls; override;
    procedure LoadValuesIntoTimeControls(const AStart, AFinish: TDateTime; AllDayEvent: Boolean); override;
    function IsValid: Boolean; virtual;
    procedure RefreshRecurrenceInfo; virtual;
    procedure SaveResourceID; override;
    procedure SetActiveControl; virtual;
    procedure SetAllowDelete(AValue: Boolean); override;
    procedure SetAllowRecurrence(AValue: Boolean); override;
    procedure SetCaptions; virtual;
    procedure SetReadOnly(AValue: Boolean); override;
    procedure SetReminderMinutesBeforeStart; virtual;
    procedure UpdateEventValuesFromControls; override;
  public
    constructor CreateEx(AEvent: TcxSchedulerControlEvent); override;
    function ShowModal: Integer; override;

    property AllowDelete;
    property AllowRecurrence;
    property BiasTime;
    property Event;
    property EventName: string read GetEventName;
    property ForceSeries;
    property Modified;
    property RecurrenceActivate;
    property ReadOnly;
    property OnDeleteFunc;
  end;

  TcxSchedulerEventEditor = TcxSchedulerEventEditorForm; //workaround for Delphi 2005

  TcxSchedulerEventEditorClass = class of TcxSchedulerCustomEventEditor;
  
implementation

uses
  cxClasses, cxSchedulerStrs, cxSchedulerUtils, cxSchedulerDialogs, Variants,
  DateUtils, cxDateUtils, cxVariants, cxSchedulerRecurrenceSelectionDialog, Math,kisikarti;

{$R *.dfm}

{ TcxSchedulerCustomEditorForm }

constructor TcxSchedulerCustomEditorForm.CreateEx(
  AEvent: TcxSchedulerControlEvent);
begin
  inherited Create(nil);
  FIsCreation := True;
  FEvent := AEvent;
  InitializeControls;
  LoadEventValuesIntoControls;
  FModified := False;
  FIsCreation := False; 
end;

procedure TcxSchedulerCustomEditorForm.ApplyChanges;
begin
end;

function TcxSchedulerCustomEditorForm.GetFormColor: TColor;
begin
  Result := clBtnFace;
end;

function TcxSchedulerCustomEditorForm.GetStorage: TcxCustomSchedulerStorage;
begin
  Result := Event.Storage;
end;

procedure TcxSchedulerCustomEditorForm.InitializeControls;
begin
end;

procedure TcxSchedulerCustomEditorForm.LoadEventValuesIntoControls;
begin
end;

procedure TcxSchedulerCustomEditorForm.LoadValuesIntoTimeControls(
  const AStart, AFinish: TDateTime; AllDayEvent: Boolean);
begin
end;

procedure TcxSchedulerCustomEditorForm.SetReadOnly(AValue: Boolean);
begin
  FReadOnly := AValue;
end;

function TcxSchedulerCustomEditorForm.ShowModal: Integer;
begin
  if UseSchedulerColorInDialogs then
    Color := GetFormColor;
  cxDialogsMetricsStore.InitDialog(Self);
  Result := inherited ShowModal;
  cxDialogsMetricsStore.StoreMetrics(Self);
  ApplyChanges;
end;

procedure TcxSchedulerCustomEditorForm.UpdateEventValuesFromControls;
begin
end;

{ TcxSchedulerCustomEventEditor }

constructor TcxSchedulerCustomEventEditor.CreateEx(
  AEvent: TcxSchedulerControlEvent);
begin
  FIntersection := True;
  FBiasTime := AEvent.TimeBias;
  inherited CreateEx(AEvent);
  FHasStorageEvent := not ((AEvent.Source = nil) or (AEvent.EventType = etOccurrence));
  FRecurrenceInfo := TcxSchedulerEventRecurrenceInfo.Create(AEvent);
  if Event.Pattern <> nil then
  begin
    FPatternStart := Event.Pattern.Start - FBiasTime + Event.StorageTimeBias;
    FPatternFinish := Event.Pattern.Finish - FBiasTime + Event.StorageTimeBias;
    FRecurrenceInfo.Assign(Event.Pattern.RecurrenceInfo);
  end
  else
  begin
    FPatternStart := Event.Start;
    FPatternFinish := Event.Finish;
    FRecurrenceInfo.Assign(Event.RecurrenceInfo);
  end;
end;

destructor TcxSchedulerCustomEventEditor.Destroy;
begin
  FRecurrenceInfo.Free;
  inherited Destroy;
end;

function TcxSchedulerCustomEventEditor.CheckIntersection: Boolean;
begin
  Result := Intersection;
  if not Result then
  begin
    ApplyEventTime;
    Event.SkipExceptions := FDeleteExceptions;
    Result := not Event.Conflicts(AllowHiddenEvents)
  end;
end;

procedure TcxSchedulerCustomEventEditor.DeleteEvent;
begin
  if FDeleteSeries then
    Event.Pattern.Delete
  else
    Event.Delete;

end;

function TcxSchedulerCustomEventEditor.FindAvailableTime: Boolean;
var
  AStart, AFinish: TDateTime;
begin
  Result := Storage.FindAvailableTime(Event, AllowHiddenEvents, AStart, AFinish);
  if Result then
    LoadValuesIntoTimeControls(AStart, AFinish, Event.AllDayEvent);
  if Result and (Event.EventType = etPattern) then
    ApplyEventTime;
end;

function TcxSchedulerCustomEventEditor.GetResourcesPanelVisible: Boolean;
begin
  Result := FShowResources;
end;

procedure TcxSchedulerCustomEventEditor.PostEvent;

  function GetStorageEvent: TcxSchedulerEvent;
  begin
    if not FHasStorageEvent then
      Result := Storage.CreateEvent

         else
      Result := Event.Source;
  

  end;

  procedure CheckDeleteException;
  begin
    if FDeleteExceptions and (Event.Pattern <> nil) then
      Event.Pattern.DeleteExceptions;

  end;

 function ChangeType(ADest, ASource: TcxSchedulerEvent; AType: TcxEventType;
    AEndEditing: Boolean = True; AKeepTime: Boolean = False): TcxSchedulerEvent;
  var
    AUTCStart, AUTCFinish: TDateTime;
  begin
    Result := ADest;
    Result.BeginEditing;
    AUTCStart := Result.UTCStart;
    AUTCFinish := Result.UTCFinish;
    if ASource <> nil then
      Result.Assign(ASource);
    Result.EventType := AType;
    if AKeepTime then
    begin
      Result.UTCStart := AUTCStart;
      Result.UTCFinish := AUTCFinish;
    end;
    if AEndEditing then
      Result.EndEditing;
  end;

begin
  CheckDeleteException;
  if not FModified and (Event.Source <> nil) then
    Exit;
  if Event.IsRecurring then
  begin
    if ForceSeries then
    begin
      if Event.Pattern <> nil then
        ChangeType(Event.Pattern, Event, etPattern, True, not DeleteExceptions)
      else
        ChangeType(GetStorageEvent, Event, etPattern);
    end
    else
      with ChangeType(GetStorageEvent, Event, etCustom, False) do
      try
        ParentID := Event.Pattern.ID;
      finally
        EndEditing;
      end;
  end
  else
    if Event.Pattern <> nil then
      ChangeType(Event.Pattern, Event, Event.EventType)
    else
      ChangeType(GetStorageEvent, Event, etNone);
end;

procedure TcxSchedulerCustomEventEditor.SaveChanges;
var
  AStorage: TcxCustomSchedulerStorage;
begin
//  if not Modified and (Event.Source <> nil) then Exit;
  AStorage := Storage;
  AStorage.BeginUpdate;
  try
    UpdateEventValuesFromControls;
    Event.UpdateTaskTime;
    PostEvent;

  finally
    AStorage.EndUpdate;

  end;
end;

procedure TcxSchedulerCustomEventEditor.SaveResourceID;
begin
end;

procedure TcxSchedulerCustomEventEditor.SetAllowDelete(
  AValue: Boolean);
begin
  FAllowDelete := AValue;
end;

procedure TcxSchedulerCustomEventEditor.SetAllowRecurrence(
  AValue: Boolean);
begin
  FAllowRecurrence := AValue;
end;

procedure TcxSchedulerCustomEventEditor.SetIntersection(AValue: Boolean);
begin
  if AValue <> FIntersection then
  begin
    FIntersection := AValue;
    CheckIntersection;
  end;
end;

procedure TcxSchedulerCustomEventEditor.ApplyEventTime;
var
  AState: Integer;
  AStart, AFinish: TDateTime;
begin
  GetEditingEventTime(AStart, AFinish, AState);
  Event.State :=  AState;
  Event.Start := AStart;
  Event.Finish := AFinish;
    
  if ShowResources then
    SaveResourceID;

end;

{ TcxSchedulerEventEditor }

constructor TcxSchedulerEventEditorForm.CreateEx(AEvent: TcxSchedulerControlEvent);
begin
  inherited CreateEx(AEvent);
  FAllowShare := True; 
  FNeedCheckLossOfExceptions := (AEvent.Pattern <> nil) and AEvent.Pattern.HasExceptions;
  FDuration := AEvent.Duration;
  pnlInformation.Visible := False;
  teEnd.ActiveProperties.Use24HourFormat := Is24HourTimeFormat;
  teStart.ActiveProperties.Use24HourFormat := Is24HourTimeFormat;
  ClearModifiedFlag;
end;

function TcxSchedulerEventEditorForm.ShowModal: Integer;
begin
  FRecurrenceInfoHeight := pnlRecurrenceInfo.Height;
  CheckVisible;
  SetActiveControl;
  Result := inherited ShowModal;
end;

procedure TcxSchedulerEventEditorForm.SaveResourceID;
var
  I: Integer;
begin
  Event.ResourceID := Null;
  for I := 0 to cbResources.Properties.Items.Count - 1 do
    if cbResources.States[I] = cbsChecked then
      Event.ShareWithResource(Storage.ResourceIDs[cbResources.Properties.Items[I].Tag]);

end;

procedure TcxSchedulerEventEditorForm.SetActiveControl;
begin
  if (Event.Source = nil) and teSubject.CanFocus then
    ActiveControl := teSubject
  else
    if meMessage.CanFocus then
      ActiveControl := meMessage
    else
      if deStart.CanFocus then
        ActiveControl := deStart;
end;

procedure TcxSchedulerEventEditorForm.SetAllowDelete(AValue: Boolean);
begin
  inherited;
  btnDelete.Enabled := AValue;

end;

procedure TcxSchedulerEventEditorForm.SetAllowRecurrence(AValue: Boolean);
begin
  inherited;
  pnlRecurrence.Visible := AValue;
end;

procedure TcxSchedulerEventEditorForm.ApplyChanges;
begin
  case ModalResult of
    mrAbort:
      DeleteEvent;
    mrOk:
      SaveChanges;
    mrCancel:
      begin
        Event.Cancel;
        FModified := False;
        Storage.FullRefresh;
      end;
  end;
end;

function TcxSchedulerEventEditorForm.CheckIntersection: Boolean;
begin
  Result := inherited CheckIntersection;
  pnlInformation.Visible := not Result;
  btnOk.Enabled := Result;
end;

function TcxSchedulerEventEditorForm.CheckTimeRange(var AStart, AFinish: TDateTime): Boolean;
var
  AEventStart, AEventFinish: TDateTime;
begin
  Event.GetValidTaskTimeRange(AStart, AFinish);
  AEventStart := deStart.Date + teStart.Time;
  AEventFinish := deEnd.Date + teEnd.Time;
  Result := (AStart <= AEventStart) and (AFinish >= AEventFinish);
end;

procedure TcxSchedulerEventEditorForm.CheckVisible;
var
  ATimeVisible: Boolean;
begin
  if FIsCreation then Exit;
  pnlTaskComplete.Visible := ShowTaskComplete;
  pnlResource.Visible := GetResourcesPanelVisible;
  ATimeVisible := (Event.EventType = etNone) or
    ((Event.EventType in [etOccurrence, etCustom]) and not ForceSeries);
  if ATimeVisible then
  begin
    pnlTime.Visible := True;
    pnlRecurrenceInfo.Visible := False;
  end
  else
    if Assigned(cxGetRecurrenceDescriptionStringProc) then
    begin
      RefreshRecurrenceInfo;
      pnlRecurrenceInfo.Visible := True;
      pnlTime.Visible := False;
    end;
  teStart.Time := TimeOf(Event.Start);
  teEnd.Time := TimeOf(Event.Finish);
  teStart.Visible := not cbAllDayEvent.Checked;
  teEnd.Visible := not cbAllDayEvent.Checked;
  CheckIntersection;
end;

procedure TcxSchedulerEventEditorForm.ClearModifiedFlag;

  procedure CheckComponent(AComponent: TComponent);
  begin
    if AComponent is TcxCustomEdit then
      TcxCustomEdit(AComponent).EditModified := False;
  end;

var
  I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
    CheckComponent(Components[I]);
  FModified := False;
end;

procedure TcxSchedulerEventEditorForm.GetEditingEventTime(
  var AStart, AFinish: TDateTime; var AState: Integer);
begin
  AStart := deStart.Date + teStart.Time;
  AFinish := deEnd.Date + teEnd.Time + Ord(cbAllDayEvent.Checked);
  AState := icbShowTimeAs.ItemIndex;
end;

function TcxSchedulerEventEditorForm.GetFormColor: TColor;
begin
  Result := teLocation.Style.LookAndFeel.Painter.DefaultSchedulerControlColor;
end;

function TcxSchedulerEventEditorForm.GetRecurrenceDescription: string;
begin
  Event.RecurrenceInfo.DisplayTimeBias := 0;
  if (Event.Pattern <> nil) and not DeleteExceptions then
  begin
    Event.Pattern.RecurrenceInfo.DisplayTimeBias := -Storage.TimeBias + BiasTime - DateTimeHelper.CurrentTimeZoneBias;
    Result := cxGetRecurrenceDescriptionStringProc(Event.Pattern.RecurrenceInfo, True)
  end
  else                                                
    Result := cxGetRecurrenceDescriptionStringProc(Event.RecurrenceInfo, True);
end;

procedure TcxSchedulerEventEditorForm.InitializeControls;
begin
  InitReminderPanel;
  InitShowTimeAsPanel;
  InitLabelColor;
  InitTaskCompletePanel;
  SetCaptions;
  teStart.Properties.Use24HourFormat := Is24HourTimeFormat;
  teEnd.Properties.Use24HourFormat := Is24HourTimeFormat;
end;

procedure TcxSchedulerEventEditorForm.InitReminderPanel;
begin
  pnlReminder.Visible := Storage.IsReminderAvailable and Storage.Reminders.Active;
  if pnlReminder.Visible then
    cxComboBoxPopulateWithTimeIntervals(cbReminderMinutesBeforeStart);
end;

procedure TcxSchedulerEventEditorForm.InitResources;
var
  I, J, AResourceIndex: Integer;
  AResource: TcxSchedulerStorageResourceItem;
begin
  AResourceIndex := -1;
  with cbResources.Properties.Items do
  begin
    BeginUpdate;
    Clear;
    J := 0;
    for I := 0 to Storage.ResourceCount - 1 do
    begin
      AResource := Storage.Resources.ResourceItems[I];
      if VarIsNull(AResource.ResourceID) or VarIsEmpty(AResource.ResourceID) then
        Continue;
      if (not AResource.Visible or AResource.ReadOnly) and
        not Event.IsSharedWithResource(AResource) then
        Continue;
      with TcxCheckComboBoxItem(Add) do
      begin
        Description := AResource.DisplayName;
        Enabled := not AResource.ReadOnly;
        Tag := I;
      end;
      cbResources.States[J] := TcxCheckBoxState(
        Event.IsSharedWithResource(AResource.ResourceID));
      Inc(J);
    end;
    EndUpdate;
  end;
  cbResources.ItemIndex := AResourceIndex;
end;

procedure TcxSchedulerEventEditorForm.InitShowTimeAsPanel;
const
  ATimeTypes: array[0..3] of Pointer = (@scxFree, @scxTentative, @scxBusy,
    @scxOutOfOffice);
var
  I: Integer;
  AItem: TcxImageComboboxItem;
begin
  for I := 0 to 3 do
  begin
    AItem := TcxImageComboboxItem(icbShowTimeAs.Properties.Items.Add);
    AItem.Description := cxGetResourceString(ATimeTypes[I]);
    AItem.ImageIndex := I;
    AItem.Value := I;
  end;
  icbShowTimeAs.Properties.Images := TimeLinePatterns;
end;

procedure TcxSchedulerEventEditorForm.InitTaskCompletePanel;
var
  AStatus: TcxSchedulerEventTaskStatus;
begin
  if pnlTaskComplete.Visible then
    seTaskComplete.Value := Event.TaskComplete;
  with cbxTaskStatus.Properties do
  begin
    BeginUpdate;
    try
      Items.Clear;
      for AStatus := tsNotStarted to tsDeferred do
        Items.Add(cxGetResourceString(sEventTaskStatus[Integer(AStatus)]));
    finally
      EndUpdate(True);
      cbxTaskStatus.ItemIndex := Integer(Event.TaskStatus);
    end;
  end;
end;

function TcxSchedulerEventEditorForm.IsValid: Boolean;
var
  AStart, AFinish: TDateTime;
begin
  Result := not (DateTimeHelper.RoundTime(deStart.Date + teStart.Time) >
    DateTimeHelper.RoundTime(deEnd.Date + teEnd.Time));
  if not Result then
  begin
    MessageDlg(cxGetResourceString(@scxWrongTimeBounds), mtWarning, [mbOk], 0);
    if deEnd.CanFocusEx then
      ActiveControl := deEnd;
  end
  else
  begin
    Result := CheckTimeRange(AStart, AFinish);
    if not Result then
    begin
      MessageDlg(Format(cxGetResourceString(@scxTaskWrongTimeBounds),
        [cxDateTimeToText(AStart), cxDateTimeToText(AFinish)]), mtWarning, [mbOk], 0);
      if deStart.CanFocusEx then
        ActiveControl := deStart;
    end;
  end;
end;

procedure TcxSchedulerEventEditorForm.RefreshRecurrenceInfo;
var
  ADelta: Integer;
begin
  if Assigned(cxGetRecurrenceDescriptionStringProc) then
  begin
    lbRecurrencePattern.Caption := GetRecurrenceDescription;
    ADelta := cxGetLabelGrowDelta(lbRecurrencePattern);
    if ADelta > 0 then
      pnlRecurrenceInfo.Height := FRecurrenceInfoHeight + ADelta;
  end;
end;

procedure TcxSchedulerEventEditorForm.LoadEventValuesIntoControls;
begin
  teSubject.Text := Event.Caption;
  teSubject.Enabled := Storage.IsCaptionAvailable;

  teLocation.Text := Event.Location;
  teLocation.Enabled := Storage.IsLocationAvailable;

  icbLabel.Enabled := Storage.IsLabelColorAvailable and (EventLabels.Count > 0);
  icbLabel.ItemIndex := EventLabels.IndexOfColor(Event.LabelColor);

  meMessage.Text := Event.Message;
  meMessage.Enabled := Storage.IsMessageAvailable;

  LoadValuesIntoTimeControls(Event.Start, Event.Finish, Event.AllDayEvent);

  icbShowTimeAs.ItemIndex := Integer(Event.State);
  icbShowTimeAs.Enabled := Storage.IsStateAvailable;

  cbReminder.Checked := Event.Reminder;
  cbReminderMinutesBeforeStart.Text := cxMinutesToTextProc(Event.ReminderMinutesBeforeStart);
  cbReminderMinutesBeforeStart.Enabled := cbReminder.Checked;

  InitResources;

end;

procedure TcxSchedulerEventEditorForm.LoadValuesIntoTimeControls(
  const AStart, AFinish: TDateTime; AllDayEvent: Boolean);
begin
  deStart.Date := DateOf(AStart);
  teStart.Time := TimeOf(AStart);
  deEnd.Date := DateOf(AFinish) - Ord(AllDayEvent);
  teEnd.Time := TimeOf(AFinish);
  cbAllDayEvent.Checked := AllDayEvent;
end;

procedure TcxSchedulerEventEditorForm.InitLabelColor;
var
  I: Integer;
  AItem: TcxImageComboboxItem;
begin
  icbLabel.Enabled := Storage.IsLabelColorAvailable and (EventLabels.Count > 0);
  for I := 0 to EventLabels.Count - 1 do
  begin
    AItem := TcxImageComboboxItem(icbLabel.Properties.Items.Add);
    AItem.Description := EventLabels[I].Caption;
    AItem.ImageIndex := I;
    AItem.Value := EventLabels[I].Color;
  end;
  icbLabel.Properties.Images := EventLabels.Images;
end;

procedure TcxSchedulerEventEditorForm.SetCaptions;
begin
  Caption := cxGetResourceString(@scxEvent) + ' - ' + EventName;
  // events
  lbInformation.Caption := cxGetResourceString(@scxEventsConflict);
  lbResource.Caption := cxGetResourceString(@scxResource);
  lbSubject.Caption := cxGetResourceString(@scxSubject);
  lbLocation.Caption := cxGetResourceString(@scxLocation);
  lbLabel.Caption := cxGetResourceString(@scxLabel);
  lbShowTimeAs.Caption := cxGetResourceString(@scxShowTimeAs);
  lbStartTime.Caption := cxGetResourceString(@scxStartTime);
  lbEndTime.Caption := cxGetResourceString(@scxEndTime);
  cbAllDayEvent.Caption := cxGetResourceString(@scxAllDayEvent);
  cbReminder.Caption := cxGetResourceString(@scxReminder);
  lbRecurrence.Caption := cxGetResourceString(@scxRecurrenceLabel);
  lbTaskComplete.Caption := cxGetResourceString(@scxTaskComplete);
  lbTaskStatus.Caption := cxGetResourceString(@scxTaskStatus);
  // buttons
  btnFindTime.Caption := cxGetResourceString(@scxFindAvailableTime);
  btnOk.Caption := cxGetResourceString(@scxOk);
  btnCancel.Caption := cxGetResourceString(@scxCancel);
  btnDelete.Caption := cxGetResourceString(@scxDelete);
  btnRecurrence.Caption := cxGetResourceString(@scxRecurrence);
  btnRecurrence.Enabled := Storage.IsRecurrenceAvailable;
end;

procedure TcxSchedulerEventEditorForm.UpdateEventValuesFromControls;  //olmadı
begin

  if teSubject.EditModified then
    Event.Caption := teSubject.Text;
  if teLocation.EditModified then
    Event.Location := teLocation.Text;
  if meMessage.EditModified then
    Event.Message := meMessage.Text;
  if (Event.EventType = etNone) or (Event.Source = nil)
    or ((Event.EventType = etPattern) and not Event.Source.IsRecurring) or not ForceSeries then
  begin
    Event.Start := deStart.Date;
    Event.Finish := deEnd.Date + Ord(cbAllDayEvent.Checked);
    if not cbAllDayEvent.Checked then
    begin
      Event.Start := Event.Start + teStart.Time;
      Event.Finish := Event.Finish + teEnd.Time;
    end;
    if cbAllDayEvent.EditModified then
      Event.AllDayEvent := cbAllDayEvent.Checked;
  end;
  if icbShowTimeAs.EditModified then
    Event.State := icbShowTimeAs.ItemIndex;
  if icbLabel.EditModified and (icbLabel.ItemIndex <> -1) then
    Event.LabelColor := EventLabels[icbLabel.ItemIndex].Color;
  if pnlResource.Visible and cbResources.EditModified then
    SaveResourceID;
  if pnlReminder.Visible then
  begin
    if cbReminder.EditModified then
      Event.Reminder := cbReminder.Checked;
    if cbReminderMinutesBeforeStart.EditModified then
      SetReminderMinutesBeforeStart;
  end;

end;

function TcxSchedulerEventEditorForm.GetEventName: string;  //açılış uyarısı
begin
  Result := cxGetResourceString(@scxUntitled);
  if Event.Caption <> '' then
    Result := Event.Caption;

end;

procedure TcxSchedulerEventEditorForm.OnChanged(Sender: TObject);
begin
  FModified := True;
  CheckIntersection;
end;

procedure TcxSchedulerEventEditorForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
var
  AMsgRes: Integer;
begin
  CanClose := (ModalResult = mrOk) or not Modified or
    ((ModalResult = mrCancel) and not btnOk.Enabled);
  if not CanClose then
  begin
    if ModalResult = mrAbort then
      CanClose := MessageDlg(cxGetResourceString(@scxDeleteConfirmation),
        mtWarning, [mbYes, mbNo], 0) = mrYes
    else
      if ModalResult = mrCancel then
      begin
        AMsgRes := MessageDlg(cxGetResourceString(@scxExitConfirmation),
          mtWarning, [mbYes, mbNo, mbCancel], 0);
        CanClose := AMsgRes in [mrYes, mrNo];
        if AMsgRes = mrYes then
        begin
          if (Event.Pattern <> nil) and (Event.EventType = etNone) then
            Event.Pattern.DeleteExceptions;
          ModalResult := mrOk;
        end;
      end;
    if not CanClose then
      ModalResult := mrNone;
  end;
  if ModalResult = mrOk then
    CanClose := IsValid;
end;

procedure TcxSchedulerEventEditorForm.FormKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_ESCAPE) and not HasOpenedPopupWindow(ActiveControl) then
  begin
    ModalResult := mrCancel;
    Key := 0;
  end;
end;


//isim seçili geliyor sql ekledim
procedure TcxSchedulerEventEditorForm.FormActivate(Sender: TObject);
begin
  OnActivate := nil;
  if RecurrenceActivate then
    btnRecurrenceClick(nil);

    Form2.IBQuery1.Close;  //isim seçili geliyor sql ekledim
        Form2.IBQuery1.SQL.Clear;
        Form2.IBQuery1.SQL.Add('Select * From KISIKARTI');
        Form2.IBQuery1.SQL.Add('Where ADISOYADI Like '''+Event.Caption+'%'+'''');
        Form2.IBQuery1.Open;
end;

procedure TcxSchedulerEventEditorForm.cbAllDayEventPropertiesChange(
  Sender: TObject);
var
  ACanCorrect: Boolean;
begin
  ACanCorrect := icbShowTimeAs.ItemIndex = cxOriginalEventStates[Event.AllDayEvent];
  Event.AllDayEvent := cbAllDayEvent.Checked;
  if ACanCorrect then
  begin
    icbShowTimeAs.ItemIndex := cxOriginalEventStates[Event.AllDayEvent];
    icbShowTimeAs.EditModified := True;
  end;
  FModified := True;
  CheckVisible;
end;

procedure TcxSchedulerEventEditorForm.StartDateChanged(Sender: TObject);
begin
  OnChanged(nil);
  deEnd.Date := deStart.Date + DateOf(FDuration) - Ord(cbAllDayEvent.Checked);
  if cbAllDayEvent.Checked and (FDuration < 1) then
    deEnd.Date := deEnd.Date + 1;
  FDuration := (DateOf(deEnd.Date) + TimeOf(teEnd.Time)) -
    (DateOf(deStart.Date) + TimeOf(teStart.Time)) +  Ord(cbAllDayEvent.Checked);
end;

procedure TcxSchedulerEventEditorForm.SetReadOnly(AValue: Boolean);
begin
  if FReadOnly <> AValue then
  begin
    pnlCaption.Enabled := not AValue;
    pnlReminder.Enabled := not AValue;
    pnlTime.Enabled := not AValue;
    pnlResource.Enabled := not AValue;
    pnlTaskComplete.Enabled := not AValue;
    meMessage.Properties.ReadOnly := AValue;
    btnCancel.Enabled := not AValue;
    btnDelete.Enabled := not AValue and btnDelete.Enabled;
    icbShowTimeAs.Enabled := not AValue;
    icbLabel.Enabled := not AValue;
    FReadOnly := AValue;
  end;
end;

procedure TcxSchedulerEventEditorForm.SetReminderMinutesBeforeStart;
var
  AMinutes: Integer;
begin
  if cxTextToMinutesProc(cbReminderMinutesBeforeStart.Text, AMinutes) then
    Event.ReminderMinutesBeforeStart := AMinutes;
end;

procedure TcxSchedulerEventEditorForm.cbReminderClick(Sender: TObject);
begin
  FModified := True;
  cbReminderMinutesBeforeStart.Enabled := cbReminder.Checked;
end;

procedure TcxSchedulerEventEditorForm.cbReminderMinutesBeforeStartPropertiesValidate(
  Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
  var Error: Boolean);
var
  AMinutes: Integer;
begin
  Error := not cxTextToMinutesProc(VarToStr(DisplayValue), AMinutes);
  if not Error then
  begin
    DisplayValue := cxMinutesToTextProc(AMinutes);
    cxComboBoxCaretToEnd(TcxComboBox(Sender));
  end
  else
    ErrorText := cxGetResourceString(@scxInvalidNumber);
end;

procedure TcxSchedulerEventEditorForm.cbReminderMinutesBeforeStartPropertiesPopup(
  Sender: TObject);
var
  AMinutes: Integer;
  AText: string;
begin
  AText := cbReminderMinutesBeforeStart.Text;
  if cxTextToMinutesProc(AText, AMinutes) then
  begin
    cbReminderMinutesBeforeStart.Text := cxMinutesToTextProc(AMinutes);
    cbReminderMinutesBeforeStart.EditModified := not SameText(AText, cbReminderMinutesBeforeStart.Text);
    cxComboBoxCaretToEnd(cbReminderMinutesBeforeStart);
    cxComboBoxSetNearestTimeInterval(cbReminderMinutesBeforeStart, AMinutes);
  end;
end;

procedure TcxSchedulerEventEditorForm.OnEventTimeChanged(Sender: TObject);
begin
  OnChanged(Sender);
  CheckIntersection;
end;

procedure TcxSchedulerEventEditorForm.btnRecurrenceClick(Sender: TObject);
var
  AModified: Boolean;
  AStart, AFinish, ADateTime: TDateTime;
begin
  AModified := False;
  AStart := Event.Start;
  AFinish := Event.Finish;
  if (Event.EventType = etNone) then
  begin
    Event.AllDayEvent := cbAllDayEvent.Checked;
    Event.Start := deStart.Date + teStart.Time;
    Event.Finish := deEnd.Date + teEnd.Time + Ord(cbAllDayEvent.Checked);
  end
  else
  begin
    Event.Start := PatternStart;
    Event.Finish := PatternFinish;
  end;
  Event.RecurrenceInfo.Assign(RecurrenceInfo);
  if cxShowRecurrenceEditor(Event, icbShowTimeAs.Style.LookAndFeel, AModified,
    ReadOnly, FNeedCheckLossOfExceptions, True) then
  begin
    if not ReadOnly then
    begin
      cbAllDayEvent.Checked := Event.AllDayEvent;
      FPatternStart := Event.Start;
      FPatternFinish := Event.Finish;
      FRecurrenceInfo.Assign(Event.RecurrenceInfo);
      ADateTime := Event.Start;
      deStart.Date := DateOf(ADateTime);
      teStart.Time := TimeOf(ADateTime);
      ADateTime := FPatternFinish;
      deEnd.Date := DateOf(ADateTime) - Ord(cbAllDayEvent.Checked);
      teEnd.Time := TimeOf(ADateTime);
      DeleteExceptions := True;
      FNeedCheckLossOfExceptions := False;
      FForceSeries := True;
    end;
  end
  else
  begin
    Event.Start := AStart;
    Event.Finish := AFinish;
    DeleteExceptions := not ReadOnly and (DeleteExceptions or
      ((Event.Pattern <> nil) and (Event.EventType = etNone)));
  end;
  FModified := not ReadOnly and (FModified or AModified);
  CheckVisible;
end;

procedure TcxSchedulerEventEditorForm.OnResourceIDChanged(Sender: TObject);
begin
  FModified := True;
  CheckIntersection;
end;

procedure TcxSchedulerEventEditorForm.btnDeleteClick(Sender: TObject);
var
  AOccurrence: Boolean;
begin
     button2.Click;
  if not Assigned(FOnDeleteFunc) or FOnDeleteFunc(Event) then
  begin
    if (Event.Pattern <> nil) and Event.IsRecurring then
      if not ForceSeries then
      begin
        if not cxShowRecurrenceSelectionDialog(Event, rsmDeleting, btnOk.LookAndFeel,
          AOccurrence) then Exit;
        DeleteSeries := not AOccurrence;


      end
      else

        DeleteSeries := True;
    ModalResult := mrAbort;


  end;

end;

procedure TcxSchedulerEventEditorForm.btnFindTimeClick(Sender: TObject);
begin
  if not FindAvailableTime then
     MessageBox(0, PChar(cxGetResourceString(@scxNoAvailableFreeTime)), nil, MB_ICONINFORMATION or MB_OK);
  CheckIntersection;
  if pnlRecurrenceInfo.Visible then
    RefreshRecurrenceInfo;
  teSubject.SetFocus;  
end;

procedure TcxSchedulerEventEditorForm.seTaskCompleteChange(
  Sender: TObject);
begin
  FModified := True;
  Event.TaskComplete := seTaskComplete.Value;
  FIsUpdating := True;
  try
    cbxTaskStatus.ItemIndex := Integer(Event.TaskStatus);
  finally
    FIsUpdating := False;
  end;
end;

procedure TcxSchedulerEventEditorForm.cbxTaskStatusChange(
  Sender: TObject);
begin
  FModified := True;
  if FIsUpdating then Exit;
  FIsUpdating := True;
  try
    Event.TaskStatus := TcxSchedulerEventTaskStatus(cbxTaskStatus.ItemIndex);
    seTaskComplete.Value := Event.TaskComplete;
  finally
    FIsUpdating := False;
  end;
end;

type
  TcxCheckComboBoxAccess = class(TcxCheckComboBox);

procedure TcxSchedulerEventEditorForm.cbResourcesPropertiesClickCheck(
  Sender: TObject; ItemIndex: Integer; var AllowToggle: Boolean);
var
  I: Integer;
begin
  if not AllowShare then
  begin
    cbResources.Properties.OnClickCheck := nil;
    for I := 0 to cbResources.Properties.Items.Count - 1 do
      if I <> ItemIndex then
        cbResources.SetItemState(I, cbsUnchecked);
    TcxCheckComboBoxAccess(cbResources).LookupData.ActiveControl.Refresh;
    cbResources.Properties.OnClickCheck := cbResourcesPropertiesClickCheck;
  end;
end;

procedure TcxSchedulerEventEditorForm.Edit1Change(Sender: TObject);
begin
Event.caption:= edit1.Text;
teSubject.Text:= Event.caption;
end;

procedure TcxSchedulerEventEditorForm.FormCreate(Sender: TObject);
begin
edit1.Text:= Event.Caption;
edit2.Text:=Event.Location;
edit3.Text:=deStart.text;
edit4.Text:=teStart.Text;
end;

procedure TcxSchedulerEventEditorForm.Edit2Change(Sender: TObject);
begin
Event.Location:= edit2.Text;
teLocation.Text:= Event.Location;
end;

procedure TcxSchedulerEventEditorForm.JvDBLookupCombo1Change(
  Sender: TObject);
begin
 edit2.Text:=JvDBLookupCombo1.Value;
end;


procedure TcxSchedulerEventEditorForm.Button1Click(Sender: TObject);
begin
showmessage('kayıt eklenecek');
form2.IBQuery6.Append;
form2.IBQuery6.FieldByName('BASLANGIC').AsDateTime:=strtodate(deStart.text);
form2.IBQuery6.FieldByName('BASSAAT').AsDateTime:=strtotime(teStart.text);
form2.IBQuery6.FieldByName('BITIS').AsDateTime:=strtodate(deEnd.text);
form2.IBQuery6.FieldByName('BITSAAT').AsDateTime:=strtotime(teEnd.text);
form2.IBQuery6.FieldByName('YAPILACAKISLEM').AsString:=Edit2.text;
form2.IBQuery6.FieldByName('NOT').AsString:='Aktif';
form2.IBQuery6.post;
end;

procedure TcxSchedulerEventEditorForm.Button2Click(Sender: TObject);
begin
showmessage('kayıt sil');

Form2.IBQuery7.close;
Form2.IBQuery7.SQL.Clear;
Form2.IBQuery7.SQL.Add('Select KISIKARTI.ADISOYADI,RANDEVULARI.BASLANGIC,RANDEVULARI.BASSAAT  FROM  KISIKARTI ');
Form2.IBQuery7.SQL.Add('LEFT JOIN   RANDEVULARI  ON  KISIKARTI.IDKART=RANDEVULARI.IDKART ');
Form2.IBQuery7.SQL.Add('where    BASLANGIC='+quotedstr(edit3.Text)+' AND BASSAAT='+quotedstr(edit4.text)+' ');
Form2.IBQuery7.Open;
Form2.IBQuery7.fetchall;
Form2.IBQuery6.edit ;
Form2.IBQuery6.FieldByName('NOT').AsString:='İptal';
Form2.IBQuery6.Post;
form2.IBQuery6.ApplyUpdates;

end;

initialization
  RegisterClass(TBevel);

end.

cxSchedulerEventEditorFormuna 1-2 kod eklemek istiyorum.Ama yukarıdaki kodların içinden çıkamadım
Yapmak istediğim şu Ok butonuna basıldığında button1.click; button1 deki kodları çalıştırsın

Kod: Tümünü seç

showmessage('kayıt eklenecek');
form2.IBQuery6.Append;
form2.IBQuery6.FieldByName('BASLANGIC').AsDateTime:=strtodate(deStart.text);
form2.IBQuery6.FieldByName('BASSAAT').AsDateTime:=strtotime(teStart.text);
form2.IBQuery6.FieldByName('BITIS').AsDateTime:=strtodate(deEnd.text);
form2.IBQuery6.FieldByName('BITSAAT').AsDateTime:=strtotime(teEnd.text);
form2.IBQuery6.FieldByName('YAPILACAKISLEM').AsString:=Edit2.text;
form2.IBQuery6.FieldByName('NOT').AsString:='Aktif';
form2.IBQuery6.post;
deleteye basıldığında button2.click; button 2 deki kodları çalıştırsın.Gerçi delete dedim ama tabloya veri ekleyecek

Kod: Tümünü seç

showmessage('kayıt sil');

Form2.IBQuery7.close;
Form2.IBQuery7.SQL.Clear;
Form2.IBQuery7.SQL.Add('Select KISIKARTI.ADISOYADI,RANDEVULARI.BASLANGIC,RANDEVULARI.BASSAAT  FROM  KISIKARTI ');
Form2.IBQuery7.SQL.Add('LEFT JOIN   RANDEVULARI  ON  KISIKARTI.IDKART=RANDEVULARI.IDKART ');
Form2.IBQuery7.SQL.Add('where    BASLANGIC='+quotedstr(edit3.Text)+' AND BASSAAT='+quotedstr(edit4.text)+' ');
Form2.IBQuery7.Open;
Form2.IBQuery7.fetchall;
Form2.IBQuery6.edit ;
Form2.IBQuery6.FieldByName('NOT').AsString:='İptal';
Form2.IBQuery6.Post;
form2.IBQuery6.ApplyUpdates;
olayını yapsın istiyorum.Ama bu post ve delete işlemini yukarıdaki kod satırından nereye yazmalıyım.Yada bu işlemin yöntemi nedir.Lütfen yardım
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: SchedulerEvent sorunu

Mesaj gönderen vkamadan »

Merhaba ,
dxScheduler in olay düzenleme dialog penceresini kendinize göre uyarlayıp eklemeler yapabilirsiniz aşağıdaki linkte anlatıyor.

http://www.devexpress.com/Support/Center/p/A2352.aspx

İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: SchedulerEvent sorunu

Mesaj gönderen haydarxxx »

Kod: Tümünü seç

 UpdateEventValuesFromControls;
    Event.UpdateTaskTime;
 
    PostEvent;
ve

Kod: Tümünü seç

 if FDeleteSeries then
    Event.Pattern.Delete
  else
    Event.Delete;
bölümlerinden düzenledim.Teşekkürler vkamadan
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Re: SchedulerEvent sorunu

Mesaj gönderen haydarxxx »

tekrar ben

Kod: Tümünü seç

if FDeleteSeries then
    Event.Pattern.Delete
  else
    Event.Delete;
eventına

Kod: Tümünü seç

if FDeleteSeries then
    Event.Pattern.Delete
  else
    Event.Delete;
Form2.IBQuery7.close;
Form2.IBQuery7.SQL.Clear;
Form2.IBQuery7.SQL.Add('Select KISIKARTI.ADISOYADI,RANDEVULARI.BASLANGIC,RANDEVULARI.IDRANDEVU,RANDEVULARI.DURUM,RANDEVULARI.IDKART FROM  KISIKARTI ');
Form2.IBQuery7.SQL.Add(' LEFT OUTER JOIN  RANDEVULARI  ON  KISIKARTI.IDKART=RANDEVULARI.IDKART ');
Form2.IBQuery7.SQL.Add('where    BASLANGIC=edit3.text ');
Form2.IBQuery7.Open;

Form2.IBQuery7.edit ;
Form2.IBQuery7.FieldByName('DURUM').AsString:='İptal Edildi';
Form2.IBQuery7.Post;
Form2.IBQuery6.ApplyUpdates;
kayıt silinirken form2.deki tabloya bilgi girmek istiyorum.fakat evet çalıştığında
Dinamic SQL Error
SQL eror code =-206
Coulumn unkonown
EDIT3.TEXT
At line3,Colums26.
hatası alıyorum.Edit3 text te 15.05.2012 şeklinde tarih var BASLANGIC sorgu alanımda tarih ayarlı.BASLANGIC=Event.Start (start datetime içeren bir alan) denedim eventten tarih alsın diye ondanda hata aldım
BASLANGIC='+Edit3.text+' denedim
Build
[Error] cxSchedulerEventEditor.pas(476): Undeclared identifier: 'Edit3'
[Error] cxSchedulerEventEditor.pas(476): Statement expected, but expression of type 'TCaption' found
[Fatal Error] rdv.dpr(10): Could not compile used unit 'cxSchedulerEventEditor.pas'
hatası alıyorum Bu delete eventinde nasıl sorgu ekleyebilirim.Lütfen bir yardım :mrgreen:
Cevapla