tvplanit: Add new event field "Location". Rename some fields for more consistency. Undo some of the changes in previous commit inspired by CodeTyphoon version.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4717 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-06-11 14:09:10 +00:00
parent 1527bdbed9
commit 74f08ceafe
14 changed files with 377 additions and 242 deletions

View File

@ -571,6 +571,10 @@ msgstr "F"
msgid "M"
msgstr "M"
#: vpsr.rslocationlbl
msgid "Location:"
msgstr "Ort:"
#: vpsr.rslsaturday
msgctxt "vpsr.rslsaturday"
msgid "S"

View File

@ -561,6 +561,10 @@ msgstr ""
msgid "M"
msgstr ""
#: vpsr.rslocationlbl
msgid "Location:"
msgstr ""
#: vpsr.rslsaturday
msgctxt "vpsr.rslsaturday"
msgid "S"

View File

@ -542,6 +542,8 @@ var
I: Integer;
Event: TVpEvent;
Qry: TAdsQuery;
F: TField;
FixedLoc, FixedLocP: String;
begin
if (Resource <> nil) and Resource.EventsDirty then begin
Qry := TAdsQuery.Create(self);
@ -566,6 +568,14 @@ begin
Qry.ParamByName('ID').AsInteger := Event.RecordID;
Qry.Open;
if Qry.FieldByName('Location') <> nil then begin
FixedLoc := 'Location, ';
FixedLocP := ':Loc, ';
end else begin
FixedLoc := '';
FixedLocP := '';
end;
if Qry.Locate('RecordID', Event.RecordID, [])
then begin
{ existing record found }
@ -576,9 +586,11 @@ begin
Qry.FieldByName('EndTime').AsDateTime := Event.EndTime;
Qry.FieldByName('ResourceID').AsInteger := Resource.ResourceID;
Qry.FieldByName('Description').AsString := Event.Description;
Qry.FieldByName('Notes').AsString := Event.Note;
F := Qry.FieldByName('Location'); // new
if F <> nil then F.AsString := Event.Location;
Qry.FieldByName('Notes') := Event.Notes;
Qry.FieldByName('Category').AsInteger := Event.Category;
Qry.FieldByName('DingPath').AsString := Event.AlarmWavPath;
Qry.FieldByName('DingPath').AsString := Event.DingPath;
Qry.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent;
Qry.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet;
Qry.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv;
@ -605,45 +617,47 @@ begin
end else begin
Qry.Close;
Qry.SQL.Text := 'INSERT INTO Events '
+ '(RecordID, StartTime, EndTime, ResourceID, Description, Notes, '
+ 'SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, '
+ '(RecordID, StartTime, EndTime, ResourceID, Description, ' + FixedLoc +
+ 'Notes, SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, '
+ 'AlarmAdvance, AlarmAdvanceType, RepeatCode, '
+ 'RepeatRangeEnd, CustomInterval, '
+ 'UserField0, UserField1, UserField2, UserField3, UserField4, '
+ 'UserField5, UserField6, UserField7, UserField8, UserField9) '
+ 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, :Notes, :SnTime, '
+ ':Cat, :DPath, :ADEvent, :ASet, :AAdvance, :AAdvanceType, '
+ ':RCode, :RRangeEnd, :CInterval, :UserField0, '
+ 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, ' + FixedLocP
+ ':Notes, :SnTime, :Cat, :DPath, :ADEvent, :ASet, :AAdvance, '
+ ':AAdvanceType, :RCode, :RRangeEnd, :CInterval, :UserField0, '
+ ':UserField1, :UserField2, :UserField3, :UserField4, '
+ ':UserField5, :UserField6, :UserField7, :UserField8, '
+ ':UserField9)';
Qry.ParamByName('RecID').AsInteger := Event.RecordID;
Qry.ParamByName('STime').AsDateTime := Event.StartTime;
Qry.ParamByName('ETime').AsDateTime := Event.EndTime;
Qry.ParamByName('ResID').AsInteger := Resource.ResourceID;
Qry.ParamByName('Desc').AsString := Event.Description;
Qry.ParamByName('Notes').AsString := Event.Note;
Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime;
Qry.ParamByName('Cat').AsInteger := Event.Category;
Qry.ParamByName('DPath').AsString := Event.AlarmWavPath;
Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent;
Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet;
Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv;
Qry.ParamByName('RecID').AsInteger := Event.RecordID;
Qry.ParamByName('STime').AsDateTime := Event.StartTime;
Qry.ParamByName('ETime').AsDateTime := Event.EndTime;
Qry.ParamByName('ResID').AsInteger := Resource.ResourceID;
Qry.ParamByName('Desc').AsString := Event.Description;
if FixedLocP <> '' then
Qry.ParamByName('Loc').AsString := Event.Location;
Qry.ParamByName('Notes').AsString := Event.Notes;
Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime;
Qry.ParamByName('Cat').AsInteger := Event.Category;
Qry.ParamByName('DPath').AsString := Event.AlarmWavPath;
Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent;
Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet;
Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv;
Qry.ParamByName('AAdvanceType').AsInteger := Ord(Event.AlarmAdvType);
Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode);
Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd;
Qry.ParamByName('CInterval').AsInteger := Event.CustInterval;
Qry.ParamByName('UserField0').AsString := Event.UserField0;
Qry.ParamByName('UserField1').AsString := Event.UserField1;
Qry.ParamByName('UserField2').AsString := Event.UserField2;
Qry.ParamByName('UserField3').AsString := Event.UserField3;
Qry.ParamByName('UserField4').AsString := Event.UserField4;
Qry.ParamByName('UserField5').AsString := Event.UserField5;
Qry.ParamByName('UserField6').AsString := Event.UserField6;
Qry.ParamByName('UserField7').AsString := Event.UserField7;
Qry.ParamByName('UserField8').AsString := Event.UserField8;
Qry.ParamByName('UserField9').AsString := Event.UserField9;
Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode);
Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd;
Qry.ParamByName('CInterval').AsInteger := Event.CustInterval;
Qry.ParamByName('UserField0').AsString := Event.UserField0;
Qry.ParamByName('UserField1').AsString := Event.UserField1;
Qry.ParamByName('UserField2').AsString := Event.UserField2;
Qry.ParamByName('UserField3').AsString := Event.UserField3;
Qry.ParamByName('UserField4').AsString := Event.UserField4;
Qry.ParamByName('UserField5').AsString := Event.UserField5;
Qry.ParamByName('UserField6').AsString := Event.UserField6;
Qry.ParamByName('UserField7').AsString := Event.UserField7;
Qry.ParamByName('UserField8').AsString := Event.UserField8;
Qry.ParamByName('UserField9').AsString := Event.UserField9;
Qry.ExecSQL;
end;
@ -666,6 +680,8 @@ var
I: Integer;
Contact: TVpContact;
Qry: TAdsQuery;
F: TField;
FixedNote, FixedNoteP: Boolean;
begin
if (Resource <> nil) and Resource.ContactsDirty then begin
{ Dump this resource's dirty contacts to the DB }
@ -692,6 +708,14 @@ begin
Qry.ParamByName('ID').AsInteger := Contact.RecordID;
Qry.Open;
if Qry.FieldByName('Note') <> nil then
FixedNote := 'Note, '
else if Qry.FieldByName('Notes') <> nil then
FixedNote := 'Notes, '
else
FixedNote := '';
if FixedNote <> '' then FixedNoteP := ':Notes, ' else FixedNoteP := '';
if Qry.Locate('RecordID', Contact.RecordID, [])
then begin
{ existing record found }
@ -714,7 +738,9 @@ begin
Qry.FieldByName('State').AsString := Contact.State;
Qry.FieldByName('Zip').AsString := Contact.Zip;
Qry.FieldByName('Country').AsString := Contact.Country;
Qry.FieldByName('Note').AsString := Contact.Note;
F := Qry.FieldByName('Notes');
if F = nil then F := Qry.FieldByName('Note'); // deprecated
if F <> nil then F.AsString := Contact.Notes;
Qry.FieldByName('Phone1').AsString := Contact.Phone1;
Qry.FieldByName('Phone2').AsString := Contact.Phone2;
Qry.FieldByName('Phone3').AsString := Contact.Phone3;
@ -753,7 +779,7 @@ begin
Qry.SQL.Text := 'INSERT INTO Contacts '
+ '(ResourceID, RecordID, FirstName, LastName, Birthdate, '
+ 'Anniversary, Title, Company, Job_Position, EMail, Address, '
+ 'City, State, Zip, Country, Note, Phone1, Phone2, Phone3, '
+ 'City, State, Zip, Country, ' + FixedNote +'Phone1, Phone2, Phone3, '
+ 'Phone4, Phone5, PhoneType1, PhoneType2, PhoneType3, PhoneType4, '
+ 'PhoneType5, Category, Custom1, Custom2, Custom3, Custom4, '
+ 'UserField0, UserField1, UserField2, UserField3, UserField4, '
@ -761,7 +787,7 @@ begin
+ 'VALUES(:ResourceID, :RecordID, :FirstName, :LastName, '
+ ':Birthdate, :Anniversary, :Title, :Company, :Job_Position, '
+ ':EMail, :Address, :City, :State, :Zip, :Country, :Note, '
+ ':EMail, :Address, :City, :State, :Zip, :Country, ' + FixedNoteP
+ ':Phone1, :Phone2, :Phone3, :Phone4, :Phone5, :PhoneType1, '
+ ':PhoneType2, :PhoneType3, :PhoneType4, :PhoneType5, :Category, '
+ ':Custom1, :Custom2, :Custom3, :Custom4, :UserField0, '
@ -785,7 +811,8 @@ begin
Qry.ParamByName('State').AsString := Contact.State;
Qry.ParamByName('Zip').AsString := Contact.Zip;
Qry.ParamByName('Country').AsString := Contact.Country;
Qry.ParamByName('Note').AsString := Contact.Note;
if FixedNoteP <> '' then
Qry.ParamByName('Notes').AsString := Contact.Notes;
Qry.ParamByName('Phone1').AsString := Contact.Phone1;
Qry.ParamByName('Phone2').AsString := Contact.Phone2;
Qry.ParamByName('Phone3').AsString := Contact.Phone3;

View File

@ -129,7 +129,7 @@ object AlarmNotifyForm: TAlarmNotifyForm
end
end
object EventDialog: TVpEventEditDialog
Version = 'v1.03'
Version = 'v1.04'
TimeFormat = tf24Hour
Options = []
Placement.Position = mpCenterTop

View File

@ -103,7 +103,8 @@ implementation
{$R *.dfm}
{$ENDIF}
uses VpSR;
uses
StrUtils, VpSR;
{ TVpNotificationDialog }
@ -147,26 +148,29 @@ end;
{ TAlarmNotifyForm }
procedure TAlarmNotifyForm.PopulateSelf;
var
fmt: String;
begin
if Event <> nil then begin
Caption := RSReminder;
// SubjectCaption.Caption := RSSubjectCaption;
// NotesCaption.Caption := RSNotesCaption;
SnoozeCaption.Caption := RSSnoozeCaption;
DismissBtn.Caption := RSDismissBtn;
SnoozeBtn.Caption := RSSnoozeBtn;
OpenItemBtn.Caption := RSOpenItemBtn;
lNotes.Caption := Event.Note;
lNotes.Caption := Event.Notes;
lSubject.Caption := Event.Description;
lTime.caption := dateTimeToStr(Event.StartTime)+' - '+dateTimeToStr(Event.EndTime);
if Now > Event.StartTime then
Self.Caption := RSOverdue + ' : '
else
Self.Caption := RSReminder + ' : ';
fmt := IfThen(trunc(Event.StartTime) = Date(), 't', 'ddddd t');
lTime.Caption := Format('%s - %s', [
FormatDateTime(fmt, Event.StartTime),
FormatDateTime(fmt, Event.EndTime)] );
if Event.Location <> '' then
lTime.Caption := lTime.Caption + ' (' + Event.Location + ')';
Self.Caption := Self.Caption + FormatDateTime(ShortDateFormat + ' '
+ ShortTimeFormat, Event.StartTime);
Caption := Format('%s : %s', [
IfThen(Now > Event.StartTime, RSOverdue, RSReminder),
FormatDateTime(fmt, Event.StartTime) ]);
SnoozeCombo.Items.Clear;
SnoozeCombo.Items.Add(RS1Minute);
@ -175,13 +179,6 @@ begin
SnoozeCombo.Items.Add(Format(RSXMinutes, [15]));
SnoozeCombo.Items.Add(Format(RSXMinutes, [30]));
SnoozeCombo.Items.Add(Format(RSXMinutes, [45]));
{
SnoozeCombo.Items.Add(RS5Minutes);
SnoozeCombo.Items.Add(RS10Minutes);
SnoozeCombo.Items.Add(RS15Minutes);
SnoozeCombo.Items.Add(RS30Minutes);
SnoozeCombo.Items.Add(RS45Minutes);
}
SnoozeCombo.Items.Add(RS1Hour);
SnoozeCombo.Items.Add(Format(RSXHours, [2]));
SnoozeCombo.Items.Add(Format(RSXHours, [3]));
@ -190,28 +187,12 @@ begin
SnoozeCombo.Items.Add(Format(RSXHours, [6]));
SnoozeCombo.Items.Add(Format(RSXHours, [7]));
SnoozeCombo.Items.Add(Format(RSXHours, [8]));
{
SnoozeCombo.Items.Add(RS2Hours);
SnoozeCombo.Items.Add(RS3Hours);
SnoozeCombo.Items.Add(RS4Hours);
SnoozeCombo.Items.Add(RS5Hours);
SnoozeCombo.Items.Add(RS6Hours);
SnoozeCombo.Items.Add(RS7Hours);
SnoozeCombo.Items.Add(RS8Hours);
}
SnoozeCombo.Items.Add(RS1Day);
SnoozeCombo.Items.Add(Format(RSXDays, [2]));
SnoozeCombo.Items.Add(Format(RSXDays, [3]));
SnoozeCombo.Items.Add(Format(RSXDays, [4]));
SnoozeCombo.Items.Add(Format(RSXDays, [5]));
SnoozeCombo.Items.Add(Format(RSXDays, [6]));
{
SnoozeCombo.Items.Add(RS2Days);
SnoozeCombo.Items.Add(RS3Days);
SnoozeCombo.Items.Add(RS4Days);
SnoozeCombo.Items.Add(RS5Days);
SnoozeCombo.Items.Add(RS6Days);
}
SnoozeCombo.Items.Add(RS1Week);
SnoozeCombo.ItemIndex := 0;
SnoozeDelay := 5 / MinutesInDay;

View File

@ -586,6 +586,8 @@ var
I: Integer;
Event: TVpEvent;
Qry: TQuery;
F: TField;
FixedLoc, FixedLocP: String;
begin
if (Resource <> nil) and Resource.EventsDirty then begin
Qry := TQuery.Create(self);
@ -610,6 +612,14 @@ begin
Qry.ParamByName('ID').AsInteger := Event.RecordID;
Qry.Open;
if Qry.FieldByName('Location') = nil then begin
FixedLoc := '';
FixedLocP := '';
end else begin
FixedLoc := 'Location, ';
FixedLocP := ':Loc, ';
end;
if Qry.Locate('RecordID', Event.RecordID, [])
then begin
{ existing record found }
@ -620,9 +630,11 @@ begin
Qry.FieldByName('EndTime').AsDateTime := Event.EndTime;
Qry.FieldByName('ResourceID').AsInteger := Resource.ResourceID;
Qry.FieldByName('Description').AsString := Event.Description;
Qry.FieldByName('Notes').AsString := Event.Note;
F := Qry.FieldByName('Location'); // newe
if F <> nil then F.AsString := Event.Location;
Qry.FieldByName('Notes').AsString := Event.Notes;
Qry.FieldByName('Category').AsInteger := Event.Category;
Qry.FieldByName('DingPath').AsString := Event.AlarmWavPath;
Qry.FieldByName('DingPath').AsString := Event.DingPath;
Qry.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent;
Qry.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet;
Qry.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv;
@ -649,45 +661,46 @@ begin
end else begin
Qry.Close;
Qry.SQL.Text := 'INSERT INTO Events '
+ '(RecordID, StartTime, EndTime, ResourceID, Description, Notes, '
+ 'SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, '
+ '(RecordID, StartTime, EndTime, ResourceID, Description, ' + FixedLocation
+ 'Notes, SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, '
+ 'AlarmAdvance, AlarmAdvanceType, RepeatCode, '
+ 'RepeatRangeEnd, CustomInterval, '
+ 'UserField0, UserField1, UserField2, UserField3, UserField4, '
+ 'UserField5, UserField6, UserField7, UserField8, UserField9) '
+ 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, :Notes, :SnTime, '
+ ':Cat, :DPath, :ADEvent, :ASet, :AAdvance, :AAdvanceType, '
+ ':RCode, :RRangeEnd, :CInterval, :UserField0, '
+ 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, ' + FixedLoc
+ ':Notes, :SnTime, :Cat, :DPath, :ADEvent, :ASet, :AAdvance, '
+ ':AAdvanceType, :RCode, :RRangeEnd, :CInterval, :UserField0, '
+ ':UserField1, :UserField2, :UserField3, :UserField4, '
+ ':UserField5, :UserField6, :UserField7, :UserField8, '
+ ':UserField9)';
Qry.ParamByName('RecID').AsInteger := Event.RecordID;
Qry.ParamByName('STime').AsDateTime := Event.StartTime;
Qry.ParamByName('ETime').AsDateTime := Event.EndTime;
Qry.ParamByName('ResID').AsInteger := Resource.ResourceID;
Qry.ParamByName('Desc').AsString := Event.Description;
Qry.ParamByName('Notes').AsString := Event.Note;
Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime;
Qry.ParamByName('Cat').AsInteger := Event.Category;
Qry.ParamByName('DPath').AsString := Event.AlarmWavPath;
Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent;
Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet;
Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv;
Qry.ParamByName('RecID').AsInteger := Event.RecordID;
Qry.ParamByName('STime').AsDateTime := Event.StartTime;
Qry.ParamByName('ETime').AsDateTime := Event.EndTime;
Qry.ParamByName('ResID').AsInteger := Resource.ResourceID;
Qry.ParamByName('Desc').AsString := Event.Description;
if FixedLocP <> '' then Qry.ParamByName('Loc').AsString := Event.Location;
Qry.ParamByName('Notes').AsString := Event.Notes;
Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime;
Qry.ParamByName('Cat').AsInteger := Event.Category;
Qry.ParamByName('DPath').AsString := Event.DingPath;
Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent;
Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet;
Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv;
Qry.ParamByName('AAdvanceType').AsInteger := Ord(Event.AlarmAdvType);
Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode);
Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd;
Qry.ParamByName('CInterval').AsInteger := Event.CustInterval;
Qry.ParamByName('UserField0').AsString := Event.UserField0;
Qry.ParamByName('UserField1').AsString := Event.UserField1;
Qry.ParamByName('UserField2').AsString := Event.UserField2;
Qry.ParamByName('UserField3').AsString := Event.UserField3;
Qry.ParamByName('UserField4').AsString := Event.UserField4;
Qry.ParamByName('UserField5').AsString := Event.UserField5;
Qry.ParamByName('UserField6').AsString := Event.UserField6;
Qry.ParamByName('UserField7').AsString := Event.UserField7;
Qry.ParamByName('UserField8').AsString := Event.UserField8;
Qry.ParamByName('UserField9').AsString := Event.UserField9;
Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode);
Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd;
Qry.ParamByName('CInterval').AsInteger := Event.CustInterval;
Qry.ParamByName('UserField0').AsString := Event.UserField0;
Qry.ParamByName('UserField1').AsString := Event.UserField1;
Qry.ParamByName('UserField2').AsString := Event.UserField2;
Qry.ParamByName('UserField3').AsString := Event.UserField3;
Qry.ParamByName('UserField4').AsString := Event.UserField4;
Qry.ParamByName('UserField5').AsString := Event.UserField5;
Qry.ParamByName('UserField6').AsString := Event.UserField6;
Qry.ParamByName('UserField7').AsString := Event.UserField7;
Qry.ParamByName('UserField8').AsString := Event.UserField8;
Qry.ParamByName('UserField9').AsString := Event.UserField9;
Qry.ExecSQL;
end;
@ -710,6 +723,8 @@ var
I: Integer;
Contact: TVpContact;
Qry: TQuery;
F: TField;
FixedNote, FixedNoteP: String;
begin
if (Resource <> nil) and Resource.ContactsDirty then begin
{ Dump this resource's dirty contacts to the DB }
@ -736,6 +751,12 @@ begin
Qry.ParamByName('ID').AsInteger := Contact.RecordID;
Qry.Open;
// Fix name change of "Note" field
if Qry.FieldByName('Notes') <> nil then FixedNote := 'Notes, ' else
if Qry.FieldByName('Note') <> nil then FixedNote := 'Note, '
else FixedNote := '';
if FixedNote <> '' then FixedNoteP := ':Notes, ' else FixeNoteP := '';
if Qry.Locate('RecordID', Contact.RecordID, [])
then begin
{ existing record found }
@ -758,7 +779,9 @@ begin
Qry.FieldByName('State').AsString := Contact.State;
Qry.FieldByName('Zip').AsString := Contact.Zip;
Qry.FieldByName('Country').AsString := Contact.Country;
Qry.FieldByName('Note').AsString := Contact.Note;
F := Qry.FieldByName('Notes');
if F = nil then F := Qry.FieldByName('Note'); // deprecated
if F <> nil then F.AsString := Contact.Notes;
Qry.FieldByName('Phone1').AsString := Contact.Phone1;
Qry.FieldByName('Phone2').AsString := Contact.Phone2;
Qry.FieldByName('Phone3').AsString := Contact.Phone3;
@ -797,7 +820,7 @@ begin
Qry.SQL.Text := 'INSERT INTO Contacts '
+ '(ResourceID, RecordID, FirstName, LastName, Birthdate, '
+ 'Anniversary, Title, Company, Job_Position, EMail, Address, '
+ 'City, State, Zip, Country, Note, Phone1, Phone2, Phone3, '
+ 'City, State, Zip, Country, ' + FixedNote + 'Phone1, Phone2, Phone3, '
+ 'Phone4, Phone5, PhoneType1, PhoneType2, PhoneType3, PhoneType4, '
+ 'PhoneType5, Category, Custom1, Custom2, Custom3, Custom4, '
+ 'UserField0, UserField1, UserField2, UserField3, UserField4, '
@ -805,7 +828,7 @@ begin
+ 'VALUES(:ResourceID, :RecordID, :FirstName, :LastName, '
+ ':Birthdate, :Anniversary, :Title, :Company, :Job_Position, '
+ ':EMail, :Address, :City, :State, :Zip, :Country, :Note, '
+ ':EMail, :Address, :City, :State, :Zip, :Country, ' + FixedNoteP
+ ':Phone1, :Phone2, :Phone3, :Phone4, :Phone5, :PhoneType1, '
+ ':PhoneType2, :PhoneType3, :PhoneType4, :PhoneType5, :Category, '
+ ':Custom1, :Custom2, :Custom3, :Custom4, :UserField0, '
@ -829,7 +852,7 @@ begin
Qry.ParamByName('State').AsString := Contact.State;
Qry.ParamByName('Zip').AsString := Contact.Zip;
Qry.ParamByName('Country').AsString := Contact.Country;
Qry.ParamByName('Note').AsString := Contact.Note;
if FixedNote <> '' then Qry.ParamByName('Notes').AsString := Contact.Notes;
Qry.ParamByName('Phone1').AsString := Contact.Phone1;
Qry.ParamByName('Phone2').AsString := Contact.Phone2;
Qry.ParamByName('Phone3').AsString := Contact.Phone3;

View File

@ -188,8 +188,6 @@ type
{ TVpEvent }
TVpEvent = class
private
FLocation: string;
protected{private}
FOwner: TVpSchedule;
FItemIndex: Integer;
@ -205,7 +203,8 @@ type
FAlertDisplayed: Boolean;
FAlarmAdvType: TVpAlarmAdvType;
FRecordID: Int64;
FNote: string;
FLocation: string;
FNotes: string;
FDescription: string;
FStartTime: TDateTime;
FEndTime: TDateTime;
@ -236,7 +235,8 @@ type
procedure SetCategory(Value: Integer);
procedure SetDescription(const Value: string);
procedure SetEndTime(Value: TDateTime);
procedure SetNote(const Value: string);
procedure SetLocation(const Value: String);
procedure SetNotes(const Value: string);
procedure SetRecordID(Value: Int64);
procedure SetStartTime(Value: TDateTime);
procedure SetCustInterval(Value: Integer);
@ -245,7 +245,8 @@ type
public
constructor Create(Owner: TVpSchedule);
destructor Destroy; override;
property AlarmWavPath: string read FDingPath write SetDingPath;
property DingPath: string read FDingPath write SetDingPath;
property AlarmWavPath: string read FDingPath write SetDingPath; deprecated 'Use "DingPath" instead';
property AlertDisplayed: Boolean read FAlertDisplayed write FAlertDisplayed;
property AllDayEvent: Boolean read FAllDayEvent write SetAllDayEvent;
property Changed: Boolean read FChanged write SetChanged;
@ -255,11 +256,12 @@ type
property StartTime : TDateTime read FStartTime write SetStartTime;
property EndTime : TDateTime read FEndTime write SetEndTime;
property Description : string read FDescription write SetDescription;
property Note : string read FNote write SetNote;
property Notes : string read FNotes write SetNotes;
property Note: String read FNotes write SetNotes; deprecated 'Use "Notes" instead';
property Category : Integer read FCategory write SetCategory;
property AlarmSet : Boolean read FAlarmSet write SetAlarmSet;
property AlarmAdv : Integer read FAlarmAdv write SetAlarmAdv;
property Location: string read FLocation write FLocation;
property Location: string read FLocation write SetLocation;
property Loading : Boolean read FLoading write FLoading;
{ 0=Minutes, 1=Hours, 2=Days }
property AlarmAdvType : TVpAlarmAdvType read FAlarmAdvType write SetAlarmAdvType;
@ -445,7 +447,7 @@ type
FState : string;
FZip : string;
FCountry : string;
FNote : string;
FNotes : string;
FPrivateRec : boolean;
FCategory : integer;
FCustom1 : string;
@ -480,7 +482,7 @@ type
procedure SetEMail(const Value: string);
procedure SetFirstName(const Value: string);
procedure SetLastName(const Value: string);
procedure SetNote(const Value: string);
procedure SetNotes(const Value: string);
procedure SetPhone1(const Value: string);
procedure SetPhone2(const Value: string);
procedure SetPhone3(const Value: string);
@ -528,7 +530,8 @@ type
property State : string read FState write SetState;
property Zip : string read FZip write SetZip;
property Country : string read FCountry write SetCountry;
property Note : string read FNote write SetNote;
property Note : string read FNotes write SetNotes; deprecated 'Use "Notes" instead';
property Notes : string read FNotes write SetNotes;
property Category : integer read FCategory write SetCategory;
property Custom1 : string read FCustom1 write SetCustom1;
property Custom2 : string read FCustom2 write SetCustom2;
@ -954,10 +957,19 @@ begin
end;
{=====}
procedure TVpEvent.SetNote(const Value: string);
procedure TVpEvent.SetLocation(const Value: String);
begin
if Value <> FNote then begin
FNote := Value;
if Value <> FLocation then begin
FLocation := Value;
Changed := true;
end;
end;
{=====}
procedure TVpEvent.SetNotes(const Value: string);
begin
if Value <> FNotes then begin
FNotes := Value;
Changed := true;
end;
end;
@ -1604,10 +1616,10 @@ begin
end;
{=====}
procedure TVpContact.SetNote(const Value: string);
procedure TVpContact.SetNotes(const Value: string);
begin
if Value <> FNote then begin
FNote := Value;
if Value <> FNotes then begin
FNotes := Value;
Changed := true;
end;
end;

View File

@ -143,7 +143,7 @@ begin
{ Resource ID }
with AddFieldDef do begin
Name := 'ResourceID';
DataType := ftAutoInc; //ftInteger;
DataType := ftInteger;
Required := true;
end;
{ Description }
@ -249,7 +249,7 @@ begin
{ Record ID }
with AddFieldDef do begin
Name := 'RecordID';
DataType := ftAutoInc; //ftInteger;
DataType := ftInteger;
Required := true;
end;
{ StartTime }
@ -277,6 +277,13 @@ begin
Size := 255;
Required := false;
end;
{ Locataion } // new
with AddFieldDef do begin
Name := 'Location';
DataType := ftString;
Size := 255;
Required := false;
end;
{ Note }
with AddFieldDef do begin
Name := 'Notes';
@ -422,7 +429,7 @@ begin
{ Record ID }
with AddFieldDef do begin
Name := 'RecordID';
DataType := ftAutoInc; //ftInteger;
DataType := ftInteger;
Required := true;
end;
{ Resource ID }
@ -515,7 +522,7 @@ begin
end;
{ Note }
with AddFieldDef do begin
Name := 'Note';
Name := 'Notes'; // was: "Note" in old version
DataType := ftString;
Size := 1024;
Required := false;
@ -703,7 +710,7 @@ begin
{ Record ID }
with AddFieldDef do begin
Name := 'RecordID';
DataType := ftAutoInc; //ftInteger;
DataType := ftInteger;
Required := true;
end;
{ Resource ID }
@ -1014,33 +1021,37 @@ end;
procedure TVpCustomDBDataStore.LoadEvents;
var
Event: TVpEvent;
F: TField;
begin
if Resource <> nil then
{ Load this resource's events into memory }
with EventsTable do begin
SetFilterCriteria(EventsTable,
True,
ResourceTable.FieldByName('ResourceID').AsInteger,
TimeRange.StartTime,
TimeRange.EndTime);
SetFilterCriteria(
EventsTable,
True,
ResourceTable.FieldByName('ResourceID').AsInteger,
TimeRange.StartTime,
TimeRange.EndTime
);
First;
while not EventsTable.EOF do begin
Event := Resource.Schedule.AddEvent(FieldByName('RecordID').AsInteger,
Event := Resource.Schedule.AddEvent(
FieldByName('RecordID').AsInteger,
FieldByName('StartTime').AsDateTime,
FieldByName('EndTime').AsDateTime);
FieldByName('EndTime').AsDateTime
);
if Event <> nil then begin
Event.Loading := true;
Event.Description := FieldByName('Description').AsString;
Event.Note := FieldByName('Notes').AsString;
F := FieldByName('Location'); // new
if F <> nil then Event.Location := F.AsString;
Event.Notes := FieldByName('Notes').AsString;
Event.Category := FieldByName('Category').AsInteger;
Event.AlarmWavPath := FieldByName('DingPath').AsString;
Event.AllDayEvent := FieldByName('AllDayEvent').AsBoolean;
Event.AlarmSet := FieldByName('AlarmSet').AsBoolean;
Event.AlarmAdv := FieldByName('AlarmAdvance').AsInteger;
Event.AlarmAdvType := TVpAlarmAdvType(
FieldByName('AlarmAdvanceType').AsInteger);
Event.AlarmAdvType := TVpAlarmAdvType(FieldByName('AlarmAdvanceType').AsInteger);
Event.SnoozeTime := FieldByName('SnoozeTime').AsDateTime;
Event.RepeatCode := TVpRepeatType(FieldByName('RepeatCode').AsInteger);
Event.RepeatRangeEnd := FieldByName('RepeatRangeEnd').AsDateTime;
@ -1068,6 +1079,7 @@ end;
procedure TVpCustomDBDataStore.LoadContacts;
var
Contact: TVpContact;
F: TField;
begin
if (Resource <> nil) then
with ContactsTable do begin
@ -1092,7 +1104,9 @@ begin
Contact.State := FieldByName('State').AsString;
Contact.Zip := FieldByName('Zip').AsString;
Contact.Country := FieldByName('Country').AsString;
Contact.Note := FieldByName('Note').AsString;
F := FieldByName('Notes');
if F = nil then F := FieldByName('Note'); // deprecated
if F <> nil then Contact.Notes := F.AsString;
Contact.Phone1 := FieldByName('Phone1').AsString;
Contact.Phone2 := FieldByName('Phone2').AsString;
Contact.Phone3 := FieldByName('Phone3').AsString;
@ -1168,6 +1182,7 @@ procedure TVpCustomDBDataStore.PostContacts;
var
I: Integer;
Contact: TVpContact;
F: TField;
begin
if (Resource <> nil) and Resource.ContactsDirty then begin
{ Dump this resource's dirty contacts to the DB }
@ -1216,7 +1231,9 @@ begin
ContactsTable.FieldByName('State').AsString := Contact.State;
ContactsTable.FieldByName('Zip').AsString := Contact.Zip;
ContactsTable.FieldByName('Country').AsString := Contact.Country;
ContactsTable.FieldByName('Note').AsString := Contact.Note;
F := ContactsTable.FieldByName('Notes');
if F = nil then F := ContactsTable.FieldByName('Note');
if F <> nil then F.AsString := Contact.Notes;
ContactsTable.FieldByName('Phone1').AsString := Contact.Phone1;
ContactsTable.FieldByName('Phone2').AsString := Contact.Phone2;
ContactsTable.FieldByName('Phone3').AsString := Contact.Phone3;
@ -1273,6 +1290,7 @@ procedure TVpCustomDBDataStore.PostEvents;
var
J: Integer;
Event: TVpEvent;
F: TField;
begin
if (Resource <> nil) and Resource.EventsDirty then begin
{ Dump this resource's dirty events to the DB }
@ -1310,9 +1328,11 @@ begin
EventsTable.FieldByName('EndTime').AsDateTime := Event.EndTime;
EventsTable.FieldByName('ResourceID').AsInteger := Resource.ResourceID;
EventsTable.FieldByName('Description').AsString := Event.Description;
EventsTable.FieldByName('Notes').AsString := Event.Note;
F := EventsTable.FieldByName('Location'); // new
if F <> nil then F.AsString := Event.Location;
EventsTable.FieldByName('Notes').AsString := Event.Notes;
EventsTable.FieldByName('Category').AsInteger := Event.Category;
EventsTable.FieldByName('DingPath').AsString := Event.AlarmWavPath;
EventsTable.FieldByName('DingPath').AsString := Event.DingPath;
EventsTable.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent;
EventsTable.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet;
EventsTable.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv;
@ -1573,6 +1593,7 @@ end;
procedure TVpCustomDBDataStore.RefreshContacts;
var
Contact: TVpContact;
F: TField;
begin
if Resource <> nil then begin
{ Clear the Contacts }
@ -1599,7 +1620,9 @@ begin
Contact.State := FieldByName('State').AsString;
Contact.Zip := FieldByName('Zip').AsString;
Contact.Country := FieldByName('Country').AsString;
Contact.Note := FieldByName('Note').AsString;
F := FieldByName('Notes');
if F = nil then F := FieldByName('Note'); // deprecated
if F <> nil then Contact.Notes := F.AsString;
Contact.Phone1 := FieldByName('Phone1').AsString;
Contact.Phone2 := FieldByName('Phone2').AsString;
Contact.Phone3 := FieldByName('Phone3').AsString;
@ -1637,6 +1660,7 @@ end;
procedure TVpCustomDBDataStore.RefreshEvents;
var
Event: TVpEvent;
F: TField;
begin
if Resource <> nil then begin
{ Clear the Events }
@ -1659,9 +1683,11 @@ begin
Event.Loading := true; {prevents the events changed flag from being set}
// Event.RecordID := FieldByName('RecordID').AsInteger;
Event.Description := FieldByName('Description').AsString;
Event.Note := FieldByName('Notes').AsString;
F := FieldByName('Location'); // new
if F <> nil then Event.Location := F.AsString;
Event.Notes := FieldByName('Notes').AsString;
Event.Category := FieldByName('Category').AsInteger;
Event.AlarmWavPath := FieldByName('DingPath').AsString;
Event.DingPath := FieldByName('DingPath').AsString;
Event.AllDayEvent := FieldByName('AllDayEvent').AsBoolean;
Event.AlarmSet := FieldByName('AlarmSet').AsBoolean;
Event.AlarmAdv := FieldByName('AlarmAdvance').AsInteger;
@ -1823,8 +1849,8 @@ var
begin
if aUseDateTime then
filter := Format('ResourceID = %d '
+ 'and (( (StartTime >= %s) and (EndTime <= %s) ) '
+ ' or ( (RepeatCode > 0) and (%s <= RepeatRangeEnd) ))',
+ 'and ( ( (StartTime >= %s) and (EndTime <= %s) ) '
+ ' or ( (RepeatCode > 0) and (%s <= RepeatRangeEnd) ) )',
[aResourceID,
QuotedStr(FormatDateTime('c', aStartDateTime)),
QuotedStr(FormatDateTime('c', aEndDateTime)),

View File

@ -78,10 +78,8 @@ type
function GetNextID(TableName: string): Int64; override;
procedure Load; override;
procedure CreateTable(TableName: string);
procedure CreateIndexDefs(const TableName : string;
IndexDefs : TIndexDefs); override;
procedure CreateFieldDefs(const TableName : string; FieldDefs : TFieldDefs);
override;
procedure CreateIndexDefs(const TableName : string; IndexDefs : TIndexDefs); override;
procedure CreateFieldDefs(const TableName : string; FieldDefs : TFieldDefs); override;
procedure PostResources; override;
procedure PostEvents; override;
@ -574,6 +572,8 @@ var
I: Integer;
Event: TVpEvent;
Qry: TDBISAMQuery;
F: TField;
FixedLoc, FixedLocP: String;
begin
if (Resource <> nil) and Resource.EventsDirty then begin
Qry := TDBISAMQuery.Create(self);
@ -599,6 +599,14 @@ begin
Qry.ParamByName('ID').AsInteger := Event.RecordID;
Qry.Open;
if Qry.FieldByName('Location') <> nil then begin
FixedLoc := 'Location, ';
FixedLocP := ':Loc, ';
end else begin
FixedLoc := '';
FixedLocP := '';
end;
if Qry.Locate('RecordID', Event.RecordID, [])
then begin
{ existing record found }
@ -609,9 +617,11 @@ begin
Qry.FieldByName('EndTime').AsDateTime := Event.EndTime;
Qry.FieldByName('ResourceID').AsInteger := Resource.ResourceID;
Qry.FieldByName('Description').AsString := Event.Description;
Qry.FieldByName('Notes').AsString := Event.Note;
F := Qry.FieldByName('Location'); // new
if F <> nil then F.AsString := Event.Location;
Qry.FieldByName('Notes').AsString := Event.Notes;
Qry.FieldByName('Category').AsInteger := Event.Category;
Qry.FieldByName('DingPath').AsString := Event.AlarmWavPath;
Qry.FieldByName('DingPath').AsString := Event.DingPath;
Qry.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent;
Qry.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet;
Qry.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv;
@ -638,45 +648,46 @@ begin
end else begin
Qry.Close;
Qry.SQL.Text := 'INSERT INTO Events '
+ '(RecordID, StartTime, EndTime, ResourceID, Description, Notes, '
+ 'SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, '
+ '(RecordID, StartTime, EndTime, ResourceID, Description, ' + FixedLoc
+ 'Notes, SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, '
+ 'AlarmAdvance, AlarmAdvanceType, RepeatCode, '
+ 'RepeatRangeEnd, CustomInterval, '
+ 'UserField0, UserField1, UserField2, UserField3, UserField4, '
+ 'UserField5, UserField6, UserField7, UserField8, UserField9) '
+ 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, :Notes, :SnTime, '
+ ':Cat, :DPath, :ADEvent, :ASet, :AAdvance, :AAdvanceType, '
+ ':RCode, :RRangeEnd, :CInterval, :UserField0, '
+ 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, ' + FixedLocP
+ ':Notes, :SnTime, :Cat, :DPath, :ADEvent, :ASet, :AAdvance, '
+ ':AAdvanceType, :RCode, :RRangeEnd, :CInterval, :UserField0, '
+ ':UserField1, :UserField2, :UserField3, :UserField4, '
+ ':UserField5, :UserField6, :UserField7, :UserField8, '
+ ':UserField9)';
Qry.ParamByName('RecID').AsInteger := Event.RecordID;
Qry.ParamByName('STime').AsDateTime := Event.StartTime;
Qry.ParamByName('ETime').AsDateTime := Event.EndTime;
Qry.ParamByName('ResID').AsInteger := Resource.ResourceID;
Qry.ParamByName('Desc').AsString := Event.Description;
Qry.ParamByName('Notes').AsString := Event.Note;
Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime;
Qry.ParamByName('Cat').AsInteger := Event.Category;
Qry.ParamByName('DPath').AsString := Event.AlarmWavPath;
Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent;
Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet;
Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv;
Qry.ParamByName('RecID').AsInteger := Event.RecordID;
Qry.ParamByName('STime').AsDateTime := Event.StartTime;
Qry.ParamByName('ETime').AsDateTime := Event.EndTime;
Qry.ParamByName('ResID').AsInteger := Resource.ResourceID;
Qry.ParamByName('Desc').AsString := Event.Description;
if FixedLocP <> '' then Qry.ParamByName('Loc').AsString := Event.Location;
Qry.ParamByName('Notes').AsString := Event.Note;
Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime;
Qry.ParamByName('Cat').AsInteger := Event.Category;
Qry.ParamByName('DPath').AsString := Event.AlarmWavPath;
Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent;
Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet;
Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv;
Qry.ParamByName('AAdvanceType').AsInteger := Ord(Event.AlarmAdvType);
Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode);
Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd;
Qry.ParamByName('CInterval').AsInteger := Event.CustInterval;
Qry.ParamByName('UserField0').AsString := Event.UserField0;
Qry.ParamByName('UserField1').AsString := Event.UserField1;
Qry.ParamByName('UserField2').AsString := Event.UserField2;
Qry.ParamByName('UserField3').AsString := Event.UserField3;
Qry.ParamByName('UserField4').AsString := Event.UserField4;
Qry.ParamByName('UserField5').AsString := Event.UserField5;
Qry.ParamByName('UserField6').AsString := Event.UserField6;
Qry.ParamByName('UserField7').AsString := Event.UserField7;
Qry.ParamByName('UserField8').AsString := Event.UserField8;
Qry.ParamByName('UserField9').AsString := Event.UserField9;
Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode);
Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd;
Qry.ParamByName('CInterval').AsInteger := Event.CustInterval;
Qry.ParamByName('UserField0').AsString := Event.UserField0;
Qry.ParamByName('UserField1').AsString := Event.UserField1;
Qry.ParamByName('UserField2').AsString := Event.UserField2;
Qry.ParamByName('UserField3').AsString := Event.UserField3;
Qry.ParamByName('UserField4').AsString := Event.UserField4;
Qry.ParamByName('UserField5').AsString := Event.UserField5;
Qry.ParamByName('UserField6').AsString := Event.UserField6;
Qry.ParamByName('UserField7').AsString := Event.UserField7;
Qry.ParamByName('UserField8').AsString := Event.UserField8;
Qry.ParamByName('UserField9').AsString := Event.UserField9;
Qry.ExecSQL;
end;
@ -705,6 +716,8 @@ var
I: Integer;
Contact: TVpContact;
Qry: TDBISAMQuery;
F: TField;
FixedNote, FixedNoteP: String;
begin
if (Resource <> nil) and Resource.ContactsDirty then begin
{ Dump this resource's dirty contacts to the DB }
@ -732,6 +745,15 @@ begin
Qry.ParamByName('ID').AsInteger := Contact.RecordID;
Qry.Open;
if Qry.FieldByName('Notes') <> nil then begin
FixedNote := 'Notes, '; FixedNoteP := ':Note, ';
end else
if Qry.FieldByName('Note') <> nil then begin
FixedNote := 'Note, '; FixedNoteP := ':Notes, ';
end else begin
FixedNote := ''; FixedNoteP := '';
end;
if Qry.Locate('RecordID', Contact.RecordID, [])
then begin
{ existing record found }
@ -750,7 +772,9 @@ begin
Qry.FieldByName('State').AsString := Contact.State;
Qry.FieldByName('Zip').AsString := Contact.Zip;
Qry.FieldByName('Country').AsString := Contact.Country;
Qry.FieldByName('Note').AsString := Contact.Note;
F := Qry.FieldByName('Notes');
if F = nil then F := Qry.FieldByName('Note'); // deprecated
if F <> nil then F.AsString := Contact.Notes;
Qry.FieldByName('Phone1').AsString := Contact.Phone1;
Qry.FieldByName('Phone2').AsString := Contact.Phone2;
Qry.FieldByName('Phone3').AsString := Contact.Phone3;
@ -786,7 +810,7 @@ begin
Qry.SQL.Text := 'INSERT INTO Contacts '
+ '(ResourceID, RecordID, FirstName, LastName, Title, Company, '
+ 'Job_Position, EMail, Address, City, State, Zip, Country, '
+ 'Note, Phone1, Phone2, Phone3, Phone4, Phone5, PhoneType1, '
+ FixedNote + 'Phone1, Phone2, Phone3, Phone4, Phone5, PhoneType1, '
+ 'PhoneType2, PhoneType3, PhoneType4, PhoneType5, Category, '
+ 'Custom1, Custom2, Custom3, Custom4, UserField0, UserField1, '
+ 'UserField2, UserField3, UserField4, UserField5, UserField6, '
@ -794,7 +818,7 @@ begin
+ 'VALUES(:ResourceID, :RecordID, :FirstName, :LastName, :Title, '
+ ':Company, :Job_Position, :EMail, :Address, :City, :State, :Zip, '
+ ':Country, :Note, :Phone1, :Phone2, :Phone3, :Phone4, :Phone5, '
+ ':Country, ' + FixedNoteP + ':Phone1, :Phone2, :Phone3, :Phone4, :Phone5, '
+ ':PhoneType1, :PhoneType2, :PhoneType3, :PhoneType4, :PhoneType5, '
+ ':Category, :Custom1, :Custom2, :Custom3, :Custom4, :UserField0, '
+ ':UserField1, :UserField2, :UserField3, :UserField4, :UserField5, '
@ -813,7 +837,7 @@ begin
Qry.ParamByName('State').AsString := Contact.State;
Qry.ParamByName('Zip').AsString := Contact.Zip;
Qry.ParamByName('Country').AsString := Contact.Country;
Qry.ParamByName('Note').AsString := Contact.Note;
if FixedNoteP <> '' then Qry.ParamByName('Notes').AsString := Contact.Notes;
Qry.ParamByName('Phone1').AsString := Contact.Phone1;
Qry.ParamByName('Phone2').AsString := Contact.Phone2;
Qry.ParamByName('Phone3').AsString := Contact.Phone3;

View File

@ -1,11 +1,11 @@
object DlgEventEdit: TDlgEventEdit
Left = 417
Height = 385
Height = 388
Top = 211
Width = 697
BorderStyle = bsToolWindow
Caption = 'Add / Edit Events'
ClientHeight = 385
ClientHeight = 388
ClientWidth = 697
Constraints.MinHeight = 378
Constraints.MinWidth = 594
@ -16,7 +16,7 @@ object DlgEventEdit: TDlgEventEdit
object Panel1: TPanel
Left = 0
Height = 41
Top = 344
Top = 347
Width = 697
Align = alBottom
BevelOuter = bvNone
@ -96,9 +96,9 @@ object DlgEventEdit: TDlgEventEdit
Anchors = [akTop, akLeft, akRight]
end
object CategoryLbl: TLabel
Left = 5
Left = 403
Height = 15
Top = 41
Top = 43
Width = 51
Caption = 'Category:'
ParentColor = False
@ -286,7 +286,7 @@ object DlgEventEdit: TDlgEventEdit
Width = 74
Caption = '&Reminder:'
OnClick = AlarmSetClick
TabOrder = 11
TabOrder = 12
end
object StartTime: TComboBox
Left = 231
@ -296,7 +296,7 @@ object DlgEventEdit: TDlgEventEdit
ItemHeight = 15
OnChangeBounds = StartTimeChange
OnExit = StartTimeExit
TabOrder = 4
TabOrder = 5
end
object EndTime: TComboBox
Left = 231
@ -306,18 +306,18 @@ object DlgEventEdit: TDlgEventEdit
ItemHeight = 15
OnChangeBounds = EndTimeChange
OnExit = EndTimeExit
TabOrder = 6
TabOrder = 7
end
object Category: TComboBox
Left = 86
Left = 484
Height = 21
Top = 38
Top = 40
Width = 182
ItemHeight = 15
OnDrawItem = CategoryDrawItem
ReadOnly = True
Style = csOwnerDrawFixed
TabOrder = 1
TabOrder = 2
end
object RecurringType: TComboBox
Left = 379
@ -327,7 +327,7 @@ object DlgEventEdit: TDlgEventEdit
ItemHeight = 15
OnChange = RecurringTypeChange
Style = csDropDownList
TabOrder = 7
TabOrder = 8
end
object IntervalUpDown: TUpDown
Left = 652
@ -339,7 +339,7 @@ object DlgEventEdit: TDlgEventEdit
Min = 0
OnClick = IntervalUpDownClick
Position = 0
TabOrder = 9
TabOrder = 10
Wrap = False
end
object AlarmAdvType: TComboBox
@ -349,7 +349,7 @@ object DlgEventEdit: TDlgEventEdit
Width = 93
ItemHeight = 15
Style = csDropDownList
TabOrder = 14
TabOrder = 15
end
object AdvanceUpDown: TUpDown
Left = 194
@ -361,7 +361,7 @@ object DlgEventEdit: TDlgEventEdit
Min = 1
OnClick = AdvanceUpDownClick
Position = 1
TabOrder = 13
TabOrder = 14
Wrap = False
end
object CBAllDay: TCheckBox
@ -371,14 +371,14 @@ object DlgEventEdit: TDlgEventEdit
Width = 89
Caption = 'All Day Event'
OnClick = CBAllDayClick
TabOrder = 2
TabOrder = 3
end
object edtUnusedPlaceholder: TEdit
Left = 587
Height = 23
Top = 104
Width = 65
TabOrder = 8
TabOrder = 9
Text = 'Placeholder control'
Visible = False
end
@ -431,7 +431,7 @@ object DlgEventEdit: TDlgEventEdit
NumGlyphs = 1
MaxLength = 0
OnChangeBounds = StartDateChange
TabOrder = 3
TabOrder = 4
end
object EndDate: TDateEdit
Left = 104
@ -482,7 +482,7 @@ object DlgEventEdit: TDlgEventEdit
NumGlyphs = 1
MaxLength = 0
OnChangeBounds = EndDateChange
TabOrder = 5
TabOrder = 6
end
object RepeatUntil: TDateEdit
Left = 440
@ -532,7 +532,7 @@ object DlgEventEdit: TDlgEventEdit
}
NumGlyphs = 1
MaxLength = 0
TabOrder = 10
TabOrder = 11
end
object AlarmAdvance: TEdit
Left = 130
@ -540,13 +540,29 @@ object DlgEventEdit: TDlgEventEdit
Top = 168
Width = 64
OnChange = AlarmAdvanceChange
TabOrder = 12
TabOrder = 13
Text = 'AlarmAdvance'
end
object LocationLbl: TLabel
Left = 5
Height = 15
Top = 43
Width = 49
Caption = 'Location:'
FocusControl = LocationEdit
ParentColor = False
end
object LocationEdit: TEdit
Left = 86
Height = 23
Top = 39
Width = 235
TabOrder = 1
end
end
object NotesMemo: TMemo
Left = 8
Height = 102
Height = 105
Top = 232
Width = 679
Anchors = [akTop, akLeft, akRight, akBottom]

View File

@ -41,7 +41,7 @@ uses
{$ENDIF}
SysUtils, {$IFDEF VERSION6}Variants,{$ENDIF} Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, VpData, VpEdPop,
VpDateEdit, ComCtrls, VpBase, VpClock, VpBaseDS, VpDlg, VpConst,
ComCtrls, VpBase, VpBaseDS, VpDlg, VpConst,
Buttons, EditBtn;
type
@ -59,6 +59,8 @@ type
TDlgEventEdit = class(TForm)
AlarmAdvance: TEdit;
LocationEdit: TEdit;
LocationLbl: TLabel;
NotesMemo: TMemo;
StartDate: TDateEdit;
EndDate: TDateEdit;
@ -307,14 +309,14 @@ begin
CBAllDay.Checked := Event.AllDayEvent;
AlarmWavPath := Event.AlarmWavPath;
StartDate.Enabled := not CBAllDay.Checked;
EndDate.Enabled := not CBAllDay.Checked;
EndTime.Enabled := not CBAllDay.Checked;
StartTime.Enabled := not CBAllDay.Checked;
DescriptionEdit.Text := Event.Description;
NotesMemo.Text := Event.Note;
LocationEdit.Text := Event.Location;
NotesMemo.Text := Event.Notes;
AlarmSet.Checked := Event.AlarmSet;
AlarmSetClick(Self);
if not Event.AlarmSet then
@ -345,7 +347,8 @@ begin
Event.EndTime := EndDate.Date + StrToTime(EndTime.Text);
Event.RepeatRangeEnd := RepeatUntil.Date;
Event.Description := DescriptionEdit.Text;
Event.Note := NotesMemo.Text;
Event.Location := LocationEdit.Text;
Event.Notes := NotesMemo.Text;
Event.Category := Category.ItemIndex;
Event.AlarmSet := AlarmSet.Checked;
Event.AlarmAdv := StrToIntDef(AlarmAdvance.Text, 0);
@ -353,7 +356,7 @@ begin
Event.RepeatCode := TVpRepeatType(RecurringType.ItemIndex);
Event.CustInterval := StrToIntDef(FCustomInterval.Text, 0);
Event.AllDayEvent := CBAllDay.Checked;
Event.AlarmWavPath := AlarmWavPath;
Event.DingPath := AlarmWavPath;
end;
{=====}
@ -502,6 +505,7 @@ begin
CancelBtn.Caption := RSCancelBtn;
AppointmentGroupBox.Caption := RSAppointmentGroupBox;
DescriptionLbl.Caption := RSDescriptionLbl;
LocationLbl.Caption := RSLocationLbl;
CategoryLbl.Caption := RSCategoryLbl;
StartTimeLbl.Caption := RSStartTimeLbl;
EndTimeLbl.Caption := RSEndTimeLbl;

View File

@ -157,10 +157,9 @@ type
procedure PurgeResource(Res: TVpResource); override;
procedure PurgeEvents(Res: TVpResource); override;
procedure PurgeContacts(Res: TVpResource); override;
procedure PurgeTasks(Res: TVpResource); override;
function GetFieldName(Mappings: TCollection;
VPField: string): string;
procedure PurgeTasks(Res: TVpResource); override;
function GetFieldName(Mappings: TCollection; VPField: string): string;
function GetNextID(TableName: string): Int64; override;
{ These are published via the TVpDataSources class, which allows them to }
@ -246,43 +245,39 @@ begin
and FContactsDataSrc.DataSet.Active
and FTasksDataSrc.DataSet.Active;
result := AllAssigned and AllActive;
Result := AllAssigned and AllActive;
end;
{=====}
function TVpFlexDataStore.GetResourceTable : TDataset;
begin
result := nil;
if (FResourceDataSrc <> nil)
and (FResourceDataSrc.DataSet <> nil)
then result := FResourceDataSrc.DataSet;
if (FResourceDataSrc <> nil) and (FResourceDataSrc.DataSet <> nil) then
Result := FResourceDataSrc.DataSet;
end;
{=====}
function TVpFlexDataStore.GetEventsTable : TDataset;
begin
result := nil;
if (FEventsDataSrc <> nil)
and (FEventsDataSrc.DataSet <> nil)
then result := FEventsDataSrc.DataSet;
if (FEventsDataSrc <> nil) and (FEventsDataSrc.DataSet <> nil) then
Result := FEventsDataSrc.DataSet;
end;
{=====}
function TVpFlexDataStore.GetContactsTable : TDataset;
begin
result := nil;
if (FContactsDataSrc <> nil)
and (FContactsDataSrc.DataSet <> nil)
then result := FContactsDataSrc.DataSet;
if (FContactsDataSrc <> nil) and (FContactsDataSrc.DataSet <> nil) then
Result := FContactsDataSrc.DataSet;
end;
{=====}
function TVpFlexDataStore.GetTasksTable : TDataset;
begin
result := nil;
if (FTasksDataSrc <> nil)
and (FTasksDataSrc.DataSet <> nil)
then result := FTasksDataSrc.DataSet;
if (FTasksDataSrc <> nil) and (FTasksDataSrc.DataSet <> nil) then
Result := FTasksDataSrc.DataSet;
end;
{=====}
@ -575,15 +570,22 @@ begin
if (FN1 <> '') then
Event.Description := FieldByName(FN1).AsString;
FN1 := GetFieldName(FEventMappings, 'Note');
FN1 := GetFieldName(FEventMappings, 'Location'); // new
if (FN1 <> '') then
Event.Note := FieldByName(FN1).AsString;
Event.Location := FieldByName(FN1).AsString;
FN1 := GetFieldName(FEventMappings, 'Notes');
if (FN1 = '') then FN1 := GetFieldName(FEventMappings, 'Note'); // deprecated
if (FN1 <> '') then
Event.Notes := FieldByName(FN1).AsString;
FN1 := GetFieldName(FEventMappings, 'Category');
if (FN1 <> '') then
Event.Category := FieldByName(FN1).AsInteger;
FN1 := GetFieldName(FEventMappings, 'AlarmWavPath');
FN1 := GetFieldName(FEventMappings, 'DingPath');
if FN1 = '' then
FN1 := GetFieldName(FEventMappings, 'AlarmWavPath'); // deprectated
if (FN1 <> '') then
Event.AlarmWavPath := FieldByName(FN1).AsString;
@ -746,9 +748,11 @@ begin
if FN <> '' then
Contact.Country := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Note');
FN := GetFieldName(FContactMappings, 'Notes');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Note'); // deprecated
if FN <> '' then
Contact.Note := FieldByName(FN).AsString;
Contact.Notes := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Phone1');
if FN <> '' then
@ -1161,15 +1165,23 @@ begin
if FN <> '' then
EventsTable.FieldByName(FN).AsString := Event.Description;
FN := GetFieldName(FEventMappings, 'Note');
FN := GetFieldName(FEventMappings, 'Location'); // new
if FN <> '' then
EventsTable.FieldByName(FN).AsString := Event.Note;
EventsTable.FieldByName(FN).AsString := Event.Location;
FN := GetFieldName(FEventMappings, 'Notes');
if FN = '' then
FN := GetFieldName(FEventMappings, 'Note'); // deprecated
if FN <> '' then
EventsTable.FieldByName(FN).AsString := Event.Notes;
FN := GetFieldName(FEventMappings, 'Category');
if FN <> '' then
EventsTable.FieldByName(FN).AsInteger := Event.Category;
FN := GetFieldName(FEventMappings, 'AlarmWavPath');
FN := GetFieldName(FEventMappings, 'DingPath');
if FN = '' then
FN := GetFieldName(FEventMappings, 'AlarmWavPath'); // deprecated
if FN <> '' then
EventsTable.FieldByName(FN).AsString := Event.AlarmWavPath;
@ -1380,9 +1392,11 @@ begin
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Country;
FN := GetFieldName(FContactMappings, 'Note');
FN := GetFieldName(FContactMappings, 'Notes');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Note'); // deprecated
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Note;
ContactsTable.FieldByName(FN).AsString := Contact.Notes;
FN := GetFieldName(FContactMappings, 'Phone1');
if FN <> '' then

View File

@ -588,5 +588,4 @@ begin
canvas.Free;
end;
end.

View File

@ -222,6 +222,7 @@ resourcestring
RSDlgEventEdit = 'Event';
RSAppointmentGroupBox = 'Appointment';
RSDescriptionLbl = 'Subject:';
RSLocationLbl = 'Location:';
RSCategoryLbl = 'Category:';
RSStartTimeLbl = 'Start Time:';
RSEndTimeLbl = 'End Time:';