diff --git a/components/tvplanit/examples/fulldemo/demo.lpi b/components/tvplanit/examples/fulldemo/demo.lpi index ad915031e..1175d84c2 100644 --- a/components/tvplanit/examples/fulldemo/demo.lpi +++ b/components/tvplanit/examples/fulldemo/demo.lpi @@ -95,9 +95,6 @@ - - - diff --git a/components/tvplanit/languages/vpsr.de.po b/components/tvplanit/languages/vpsr.de.po index 40dfab429..59c49585e 100644 --- a/components/tvplanit/languages/vpsr.de.po +++ b/components/tvplanit/languages/vpsr.de.po @@ -675,6 +675,10 @@ msgstr "keine" msgid "(None)" msgstr "(Nichts)" +#: vpsr.rsnooverlayedevents +msgid "none" +msgstr "keine" + #: vpsr.rsnoprintformats msgid "No print formats have been defined" msgstr "Es sind keine Druckformate definiert." diff --git a/components/tvplanit/languages/vpsr.fr.po b/components/tvplanit/languages/vpsr.fr.po index 81ab54240..3f8ea5d9f 100644 --- a/components/tvplanit/languages/vpsr.fr.po +++ b/components/tvplanit/languages/vpsr.fr.po @@ -681,6 +681,10 @@ msgstr "Aucun" msgid "(None)" msgstr "(Aucun)" +#: vpsr.rsnooverlayedevents +msgid "none" +msgstr "" + #: vpsr.rsnoprintformats msgid "No print formats have been defined" msgstr "Formats d'impression non-défini" @@ -1496,3 +1500,4 @@ msgstr "Spécificateur d'axe inconnu" #: vpsr.sxmldecnotatbeg msgid "The XML declaration must appear before the first element" msgstr "La déclaration XML doit apparaître avant le premier élément" + diff --git a/components/tvplanit/languages/vpsr.nl.po b/components/tvplanit/languages/vpsr.nl.po index 149da9760..e2355393b 100644 --- a/components/tvplanit/languages/vpsr.nl.po +++ b/components/tvplanit/languages/vpsr.nl.po @@ -675,6 +675,10 @@ msgstr "Geen" msgid "(None)" msgstr "(Geen)" +#: vpsr.rsnooverlayedevents +msgid "none" +msgstr "" + #: vpsr.rsnoprintformats msgid "No print formats have been defined" msgstr "Er zijn geen afdrukformaten gedefinieerd." @@ -1490,3 +1494,4 @@ msgstr "Onbekende as specificatie: %s" #: vpsr.sxmldecnotatbeg msgid "The XML declaration must appear before the first element" msgstr "De XML declaratie moet voor het eerste element staan" + diff --git a/components/tvplanit/languages/vpsr.po b/components/tvplanit/languages/vpsr.po index 5385094a2..cd88548f3 100644 --- a/components/tvplanit/languages/vpsr.po +++ b/components/tvplanit/languages/vpsr.po @@ -665,6 +665,10 @@ msgstr "" msgid "(None)" msgstr "" +#: vpsr.rsnooverlayedevents +msgid "none" +msgstr "" + #: vpsr.rsnoprintformats msgid "No print formats have been defined" msgstr "" diff --git a/components/tvplanit/languages/vpsr.ru.po b/components/tvplanit/languages/vpsr.ru.po index be974450e..cb8287203 100644 --- a/components/tvplanit/languages/vpsr.ru.po +++ b/components/tvplanit/languages/vpsr.ru.po @@ -675,6 +675,10 @@ msgstr "Нет" msgid "(None)" msgstr "(Нет)" +#: vpsr.rsnooverlayedevents +msgid "none" +msgstr "" + #: vpsr.rsnoprintformats msgid "No print formats have been defined" msgstr "Не определён формат печати" @@ -1490,3 +1494,4 @@ msgstr "" #: vpsr.sxmldecnotatbeg msgid "The XML declaration must appear before the first element" msgstr "" + diff --git a/components/tvplanit/source/vpbaseds.pas b/components/tvplanit/source/vpbaseds.pas index 0b8fa0666..a9e431504 100644 --- a/components/tvplanit/source/vpbaseds.pas +++ b/components/tvplanit/source/vpbaseds.pas @@ -75,8 +75,8 @@ type TVpNoLocalizationFile = procedure (Sender: TObject; FileName: string) of object; - TVpDateChangedEvent = procedure (Sender: TObject; - Date: TDateTime) of object; + TVpDateChangedEvent = procedure (Sender: TObject; + Date: TDateTime) of object; { contact events } TVpContactEvent = procedure(Sender: TObject; Contact: TVpContact) of object; @@ -87,8 +87,8 @@ type TVpOwnerDrawContactEvent = procedure(Sender: TObject; const Canvas: TCanvas; R: TRect; Contact: TVpContact; var Drawn: Boolean) of object; - TVpCGColWidthChangeEvent = procedure(Sender: TObject; - NewColWidth: Integer) of object; + TVpCGColWidthChangeEvent = procedure(Sender: TObject; + NewColWidth: Integer) of object; { task events } TVpBeforeEditTask = procedure(Sender: TObject; Task: TVpTask; @@ -97,7 +97,7 @@ type TVpAfterEditTask = procedure(Sender: TObject; Task: TVpTask) of object; TVpEditTask = procedure(Sender: TObject; Task: TVpTask; - Resource: TVpResource; var AllowIt: Boolean) of object; + Resource: TVpResource; var AllowIt: Boolean) of object; TVpOwnerDrawTask = procedure(Sender: TObject; const Canvas: TCanvas; R: TRect; Task: TVpTask; var Drawn: Boolean) of object; @@ -113,8 +113,8 @@ type TVpEditEvent = procedure(Sender: TObject; Event: TVpEvent; Resource:TVpResource; var AllowIt: Boolean) of object; - TVpOnAddNewEvent = procedure (Sender: TObject; - Event: TVpEvent) of object; + TVpOnAddNewEvent = procedure (Sender: TObject; + Event: TVpEvent) of object; { resource events } @@ -229,7 +229,7 @@ type FOnDisconnect : TNotifyEvent; FOnAlert : TVpEventEvent; FOnResourceChange : TVpResourceEvent; - FOnDateChanged : TVpDateChangedEvent; + FOnDateChanged : TVpDateChangedEvent; FOnPlaySound : TVpPlaySoundEvent; procedure dsOnTimer(Sender: TObject); @@ -243,6 +243,7 @@ type procedure SetDayBuffer(Value: Integer); procedure SetRange(StartTime, EndTime: TDateTime); + procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure NotifyLinked; procedure LinkToControls(AOwner: TComponent); procedure UnlinkFromControls(AOwner: TComponent); @@ -310,8 +311,8 @@ type read FOnAlert write FOnAlert; property OnConnect: TNotifyEvent read FOnConnect write FOnConnect; - property OnDateChanged: TVpDateChangedEvent - read FOnDateChanged write FOnDateChanged; + property OnDateChanged: TVpDateChangedEvent + read FOnDateChanged write FOnDateChanged; property OnDisconnect: TNotifyEvent read FOnDisconnect write FOnDisconnect; property OnResourceChange: TVpResourceEvent @@ -324,11 +325,12 @@ type {TVpLinkableControl} TVpLinkableControl = class(TVpCustomControl) protected{private} - FDataStore : TVpCustomDataStore; - FReadOnly : Boolean; - FControlLink : TVpControlLink; - FLastPrintLine : Integer; + FDataStore: TVpCustomDataStore; + FReadOnly: Boolean; + FControlLink: TVpControlLink; + FLastPrintLine: Integer; function CheckCreateResource : Boolean; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure SetDataStore (const Value : TVpCustomDataStore); virtual; procedure SetControlLink (const Value : TVpControlLink); procedure CMEnter(var Msg: {$IFDEF DELPHI}TMessage{$ELSE}TLMessage{$ENDIF}); message CM_ENTER; @@ -350,15 +352,15 @@ type property DataStore: TVpCustomDataStore read FDataStore write SetDataStore; property ControlLink: TVpControlLink read FControlLink write SetControlLink; - property Color; + property Color; property Font; - property ParentColor; - property ParentFont; - property ParentShowHint; + property ParentColor; + property ParentFont; + property ParentShowHint; - property AfterEnter; - property AfterExit; - property OnMouseWheel; + property AfterEnter; + property AfterExit; + property OnMouseWheel; end; @@ -369,7 +371,7 @@ type FPrinter : TVpPrinter; FDataStore : TVpCustomDataStore; FOnGetVariable : TVpOnGetVariableEvent; - FOnNoLocalizationFile : TVpNoLocalizationFile; + FOnNoLocalizationFile : TVpNoLocalizationFile; FOnPageStart : TVpOnPageStartEvent; FOnPageEnd : TVpOnPageEndEvent; FLocalization : TVpLocalization; @@ -433,10 +435,10 @@ begin FResources := TVpResources.Create(Self); FTimeRange := TVpTimeRange.Create(Self); FCategoryColorMap := TVpCategoryColorMap.Create; - FActiveDate := Now; + FActiveDate := Now; FDayBuffer := 31; {One full month before and after the current date. } - FTimeRange.StartTime := Now - FDayBuffer; - FTimeRange.EndTime := Now + FDayBuffer; + FTimeRange.StartTime := Now - FDayBuffer; + FTimeRange.EndTime := Now + FDayBuffer; FPlayEventSounds := true; @@ -600,16 +602,21 @@ begin Result := FMediaFolder <> ''; end; +procedure TVpCustomDatastore.Notification(AComponent: TComponent; Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + if (Operation = opRemove) and (AComponent = FLinkedOwner) then + FLinkedOwner := nil; +end; + procedure TVpCustomDataStore.NotifyLinked; var - i : Integer; - + i: Integer; begin for i := 0 to FNotifiers.Count - 1 do - if Assigned (FNotifiers[i]) then - PostMessage (PVpWatcher (FNotifiers[i]).Handle, Vp_DataStoreChanged, 0, 0); + if Assigned(FNotifiers[i]) then + PostMessage(PVpWatcher(FNotifiers[i]).Handle, Vp_DataStoreChanged, 0, 0); end; -{=====} procedure TVpCustomDataStore.SetActiveDate(Value: TDateTime); var @@ -632,8 +639,8 @@ begin RefreshEvents; end; - if Assigned(FOnDateChanged) then - FOnDateChanged(Self, FActiveDate); + if Assigned(FOnDateChanged) then + FOnDateChanged(Self, FActiveDate); end; {=====} @@ -675,9 +682,9 @@ begin if FResource = nil then Exit; FResourceID := Value; - RefreshEvents; - RefreshContacts; - RefreshTasks; + RefreshEvents; + RefreshContacts; + RefreshTasks; if Assigned(FOnResourceChange) then FOnResourceChange(Self, FResource); if not Loading then @@ -690,12 +697,12 @@ procedure TVpCustomDataStore.SetResource(Value: TVpResource); begin if Value <> FResource then begin FResource := Value; - if FResource <> nil then begin - FResourceID := FResource.ResourceID; - RefreshEvents; - RefreshContacts; - RefreshTasks; - end else + if FResource <> nil then begin + FResourceID := FResource.ResourceID; + RefreshEvents; + RefreshContacts; + RefreshTasks; + end else FResourceID := -1; if not Loading then NotifyDependents; @@ -769,37 +776,33 @@ begin end; {=====} -procedure TVpCustomDataStore.PurgeResource(Res: TVpResource); +procedure TVpCustomDataStore.PurgeResource(Res: TVpResource); begin Unused(Res); - if not Loading then - NotifyDependents; -end; -{=====} + if not Loading then + NotifyDependents; +end; -procedure TVpCustomDataStore.PurgeEvents(Res: TVpResource); -begin - Res.Schedule.ClearEvents; - if not Loading then - NotifyDependents; -end; -{=====} +procedure TVpCustomDataStore.PurgeEvents(Res: TVpResource); +begin + Res.Schedule.ClearEvents; + if not Loading then + NotifyDependents; +end; -procedure TVpCustomDataStore.PurgeContacts(Res: TVpResource); -begin - Res.Contacts.ClearContacts; - if not Loading then - NotifyDependents; -end; -{=====} +procedure TVpCustomDataStore.PurgeContacts(Res: TVpResource); +begin + Res.Contacts.ClearContacts; + if not Loading then + NotifyDependents; +end; -procedure TVpCustomDataStore.PurgeTasks(Res: TVpResource); -begin - Res.Tasks.ClearTasks; - if not Loading then - NotifyDependents; -end; -{=====} +procedure TVpCustomDataStore.PurgeTasks(Res: TVpResource); +begin + Res.Tasks.ClearTasks; + if not Loading then + NotifyDependents; +end; procedure TVpCustomDatastore.UpdateGroupEvents; var @@ -1034,11 +1037,8 @@ begin inherited; OnChange := ResourceChanged; - - FResourceUpdateStyle := ruOnChange; - + FResourceUpdateStyle := ruOnChange; Style := csDropDownList; - DoubleBuffered := true; { If the ResourceCombo is being dropped onto a form for the first } @@ -1059,15 +1059,15 @@ end; {=====} {$IFNDEF LCL} -procedure TVpResourceCombo.CNCommand (var Msg: TWMCommand); -begin - if Msg.NotifyCode = CBN_CLOSEUP then begin - if (FResourceUpdateStyle = ruOnDropDownClose) then - ResourceChanged (Self) - else - inherited; - end else - inherited; +procedure TVpResourceCombo.CNCommand (var Msg: TWMCommand); +begin + if Msg.NotifyCode = CBN_CLOSEUP then begin + if (FResourceUpdateStyle = ruOnDropDownClose) then + ResourceChanged(Self) + else + inherited; + end else + inherited; end; {$ENDIF} {=====} @@ -1132,27 +1132,29 @@ begin //Empty on purpose end; {=====} -procedure TVpResourceCombo.SetResourceUpdateStyle ( - const v : TVpResourceUpdate); -begin - if v <> FResourceUpdateStyle then begin - FResourceUpdateStyle := v; - case FResourceUpdateStyle of - ruOnChange : begin - OnChange := ResourceChanged; - OnExit := nil; - end; - ruOnExit : begin - OnChange := nil; - OnExit := ResourceChanged; - end; - ruOnDropDownClose : begin - OnChange := nil; - OnExit := nil; - end; - end; - end; -end; +procedure TVpResourceCombo.SetResourceUpdateStyle(const v: TVpResourceUpdate); +begin + if v <> FResourceUpdateStyle then begin + FResourceUpdateStyle := v; + case FResourceUpdateStyle of + ruOnChange: + begin + OnChange := ResourceChanged; + OnExit := nil; + end; + ruOnExit: + begin + OnChange := nil; + OnExit := ResourceChanged; + end; + ruOnDropDownClose: + begin + OnChange := nil; + OnExit := nil; + end; + end; + end; +end; {=====} procedure TVpResourceCombo.SetDataStore(const Value: TVpCustomDataStore); @@ -1181,8 +1183,8 @@ var I: Integer; begin inherited; - { If the control is being dropped onto a form for the first time then } - { Auto connect to the first ControlLink component found } + { If the control is being dropped onto a form for the first time then + auto-connect to the first ControlLink component found } if (csDesigning in ComponentState) and not (csLoading in ComponentState) then begin I := 0; @@ -1204,58 +1206,69 @@ begin end; {=====} -function TVpLinkableControl.CheckCreateResource : Boolean; -var - ResEdit : TVpResourceEditDialog; - frmSelectResource : TfrmSelectResource; - -begin - Result := False; - if not Assigned (DataStore) then - Exit; - if not Assigned (DataStore.Resource) then begin - if DataStore.Resources.Count > 0 then begin - { No resource is selected, select one } - if MessageDlg (RSSelectResource, mtConfirmation, - [mbYes, mbNo], 0) = mrYes then begin - frmSelectResource := TfrmSelectResource.Create (Self); - try - frmSelectResource.VpResourceCombo1.DataStore := DataStore; - frmSelectResource.VpResourceEditDialog1.DataStore := DataStore; - if frmSelectResource.ShowModal = mrOk then begin - Result := True; - end else - Exit; - finally - frmSelectResource.Free; - end; - end else - Exit; - end else begin - { There are no resources at all, add one } - if MessageDlg (RSAddNewResource, mtConfirmation, - [mbYes, mbNo], 0) = mrYes then begin - ResEdit := TVpResourceEditDialog.Create (Self); - try - ResEdit.DataStore := DataStore; - Result := ResEdit.AddNewResource; - Exit; - finally - ResEdit.Free; - end; - end else - Exit; - end; - end else - Result := True; +function TVpLinkableControl.CheckCreateResource : Boolean; +var + ResEdit: TVpResourceEditDialog; + frmSelectResource: TfrmSelectResource; +begin + Result := False; + if not Assigned(DataStore) then + Exit; + if not Assigned(DataStore.Resource) then begin + if DataStore.Resources.Count > 0 then begin + { No resource is selected, select one } + if MessageDlg(RSSelectResource, mtConfirmation, [mbYes, mbNo], 0) = mrYes then + begin + frmSelectResource := TfrmSelectResource.Create(Self); + try + frmSelectResource.VpResourceCombo1.DataStore := DataStore; + frmSelectResource.VpResourceEditDialog1.DataStore := DataStore; + if frmSelectResource.ShowModal = mrOk then begin + Result := True; + end else + Exit; + finally + frmSelectResource.Free; + end; + end else + Exit; + end else + begin + { There are no resources at all, add one } + if MessageDlg(RSAddNewResource, mtConfirmation, [mbYes, mbNo], 0) = mrYes then + begin + ResEdit := TVpResourceEditDialog.Create(Self); + try + ResEdit.DataStore := DataStore; + Result := ResEdit.AddNewResource; + Exit; + finally + ResEdit.Free; + end; + end else + Exit; + end; + end else + Result := True; end; -{=====} -function TVpLinkableControl.GetLastPrintLine : Integer; +function TVpLinkableControl.GetLastPrintLine: Integer; begin Result := FLastPrintLine; end; -{=====} + +procedure TVpLinkableControl.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + if (Operation = opRemove) then begin + if (AComponent = FDatastore) then + FDatastore := nil; + if (AComponent = FControlLink) then + FControlLink := nil; + end; +end; + procedure TVpLinkableControl.SetDataStore(const Value: TVpCustomDataStore); begin if Value = nil then begin @@ -1398,7 +1411,7 @@ procedure TVpControlLink.Detach(Sender: TComponent); var I: Integer; begin - try + try for I := 0 to pred(DependentList.Count) do // if TVpDependentInfo(DependentList.List^[I]).Component = Sender then if TVpDependentInfo(DependentList[I]).Component = Sender then @@ -1410,9 +1423,9 @@ begin TVpLinkableControl(Sender).ControlLink := nil; Exit; end; - except - // swallow exceptions - end; + except + // swallow exceptions + end; end; {=====} @@ -1503,9 +1516,9 @@ begin if not FileExists(fn) then begin if Assigned(FOnNoLocalizationFile) then FOnNoLocalizationFile(Self, fn); - end else + end else FLocalization.LoadFromFile(fn, False); - end; + end; end; end; {=====} diff --git a/components/tvplanit/source/vpmisc.pas b/components/tvplanit/source/vpmisc.pas index bf452deaf..7d7842155 100644 --- a/components/tvplanit/source/vpmisc.pas +++ b/components/tvplanit/source/vpmisc.pas @@ -723,7 +723,7 @@ begin AMenu.Add(newItem); newSubItem := TMenuItem.Create(AMenu.Owner); - newSubItem.Caption := 'none'; + newSubItem.Caption := RSNoOverlayedEvents; newSubItem.OnClick := AEventHandler; newSubItem.GroupIndex := 1; newSubItem.AutoCheck := true; diff --git a/components/tvplanit/source/vpsr.inc b/components/tvplanit/source/vpsr.inc index 9a5c4a9fc..375b7017f 100644 --- a/components/tvplanit/source/vpsr.inc +++ b/components/tvplanit/source/vpsr.inc @@ -154,6 +154,7 @@ resourcestring RSStartEndTimeError = 'Incorrect order of start and end times. ' + 'Do you want to flip them?'; RSCannotEditOverlayedEvent= 'Cannot edit this overlayed event.'; + RSNoOverlayedEvents = 'none'; {Task Specific} RSConfirmDeleteTask = 'Delete this task from your list?';