tvplanit: Add new fields (email1..3, website1..2, address1..2, pathtophoto) to contact records. Update some demos.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5164 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-09-15 11:40:14 +00:00
parent 9953b56cdf
commit f8435f112c
18 changed files with 1620 additions and 332 deletions

View File

@ -164,8 +164,12 @@ object Form1: TForm1
DrawingStyle = dsFlat DrawingStyle = dsFlat
EventDayStyle = [] EventDayStyle = []
EventFont.Height = -12 EventFont.Height = -12
HeadAttributes.Color = clBtnFace
LineColor = clGray LineColor = clGray
TimeFormat = tf12Hour TimeFormat = tf12Hour
TodayAttributes.Color = clSilver
TodayAttributes.BorderPen.Color = clRed
TodayAttributes.BorderPen.Width = 3
OffDayColor = clSilver OffDayColor = clSilver
SelectedDayColor = clRed SelectedDayColor = clRed
ShowEvents = True ShowEvents = True
@ -228,11 +232,11 @@ object Form1: TForm1
end end
object TabSheet2: TTabSheet object TabSheet2: TTabSheet
Caption = 'Contacts' Caption = 'Contacts'
ClientHeight = 594 ClientHeight = 624
ClientWidth = 928 ClientWidth = 972
object VpContactButtonBar1: TVpContactButtonBar object VpContactButtonBar1: TVpContactButtonBar
Left = 0 Left = 0
Height = 594 Height = 624
Top = 0 Top = 0
Width = 40 Width = 40
DrawingStyle = dsFlat DrawingStyle = dsFlat
@ -241,9 +245,9 @@ object Form1: TForm1
end end
object VpContactGrid1: TVpContactGrid object VpContactGrid1: TVpContactGrid
Left = 40 Left = 40
Height = 594 Height = 624
Top = 0 Top = 0
Width = 888 Width = 932
DataStore = VpBufDSDataStore1 DataStore = VpBufDSDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -307,10 +311,13 @@ object Form1: TForm1
CategoryColorMap.Category8.Description = 'Category 8' CategoryColorMap.Category8.Description = 'Category 8'
CategoryColorMap.Category9.Color = clMaroon CategoryColorMap.Category9.Color = clMaroon
CategoryColorMap.Category9.Description = 'Category 9' CategoryColorMap.Category9.Description = 'Category 9'
HiddenCategories.BackgroundColor = clSilver
HiddenCategories.Color = clGray
EnableEventTimer = True EnableEventTimer = True
PlayEventSounds = True PlayEventSounds = True
AutoConnect = True AutoConnect = True
AutoCreate = True AutoCreate = True
DayBuffer = 31
UseAutoIncFields = False UseAutoIncFields = False
left = 136 left = 136
top = 192 top = 192

View File

@ -2,10 +2,10 @@ object Form1: TForm1
Left = 225 Left = 225
Height = 686 Height = 686
Top = 155 Top = 155
Width = 980 Width = 895
Caption = 'Form1' Caption = 'Form1'
ClientHeight = 686 ClientHeight = 686
ClientWidth = 980 ClientWidth = 895
OnCreate = FormCreate OnCreate = FormCreate
OnDestroy = FormDestroy OnDestroy = FormDestroy
LCLVersion = '1.7' LCLVersion = '1.7'
@ -13,11 +13,11 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 34 Height = 34
Top = 0 Top = 0
Width = 980 Width = 895
Align = alTop Align = alTop
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 34 ClientHeight = 34
ClientWidth = 980 ClientWidth = 895
TabOrder = 0 TabOrder = 0
object VpResourceCombo1: TVpResourceCombo object VpResourceCombo1: TVpResourceCombo
Left = 8 Left = 8
@ -50,7 +50,7 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 652 Height = 652
Top = 34 Top = 34
Width = 980 Width = 895
ActivePage = TabSheet1 ActivePage = TabSheet1
Align = alClient Align = alClient
TabIndex = 0 TabIndex = 0
@ -58,12 +58,12 @@ object Form1: TForm1
object TabSheet1: TTabSheet object TabSheet1: TTabSheet
Caption = 'Events and tasks' Caption = 'Events and tasks'
ClientHeight = 624 ClientHeight = 624
ClientWidth = 972 ClientWidth = 887
object VpDayView1: TVpDayView object VpDayView1: TVpDayView
Left = 0 Left = 0
Height = 624 Height = 624
Top = 0 Top = 0
Width = 301 Width = 283
DataStore = VpFirebirdDatastore1 DataStore = VpFirebirdDatastore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -97,21 +97,21 @@ object Form1: TForm1
TimeFormat = tf12Hour TimeFormat = tf12Hour
end end
object Panel2: TPanel object Panel2: TPanel
Left = 306 Left = 288
Height = 624 Height = 624
Top = 0 Top = 0
Width = 386 Width = 339
Align = alLeft Align = alLeft
BevelOuter = bvNone BevelOuter = bvNone
Caption = 'Panel2' Caption = 'Panel2'
ClientHeight = 624 ClientHeight = 624
ClientWidth = 386 ClientWidth = 339
TabOrder = 1 TabOrder = 1
object VpWeekView1: TVpWeekView object VpWeekView1: TVpWeekView
Left = 0 Left = 0
Height = 378 Height = 378
Top = 0 Top = 0
Width = 386 Width = 339
DataStore = VpFirebirdDatastore1 DataStore = VpFirebirdDatastore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -138,7 +138,7 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 241 Height = 241
Top = 383 Top = 383
Width = 386 Width = 339
DataStore = VpFirebirdDatastore1 DataStore = VpFirebirdDatastore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -170,16 +170,16 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 5 Height = 5
Top = 378 Top = 378
Width = 386 Width = 339
Align = alBottom Align = alBottom
ResizeAnchor = akBottom ResizeAnchor = akBottom
end end
end end
object VpTaskList1: TVpTaskList object VpTaskList1: TVpTaskList
Left = 697 Left = 632
Height = 624 Height = 624
Top = 0 Top = 0
Width = 275 Width = 255
DataStore = VpFirebirdDatastore1 DataStore = VpFirebirdDatastore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -204,13 +204,13 @@ object Form1: TForm1
ShowResourceName = True ShowResourceName = True
end end
object Splitter1: TSplitter object Splitter1: TSplitter
Left = 692 Left = 627
Height = 624 Height = 624
Top = 0 Top = 0
Width = 5 Width = 5
end end
object Splitter3: TSplitter object Splitter3: TSplitter
Left = 301 Left = 283
Height = 624 Height = 624
Top = 0 Top = 0
Width = 5 Width = 5
@ -305,6 +305,8 @@ object Form1: TForm1
CategoryColorMap.Category8.Description = 'Category 8' CategoryColorMap.Category8.Description = 'Category 8'
CategoryColorMap.Category9.Color = clMaroon CategoryColorMap.Category9.Color = clMaroon
CategoryColorMap.Category9.Description = 'Category 9' CategoryColorMap.Category9.Description = 'Category 9'
HiddenCategories.BackgroundColor = clSilver
HiddenCategories.Color = clGray
EnableEventTimer = True EnableEventTimer = True
PlayEventSounds = True PlayEventSounds = True
Connection = IBConnection1 Connection = IBConnection1

View File

@ -176,12 +176,25 @@ begin
'Title VARCHAR(50) ,'+ 'Title VARCHAR(50) ,'+
'Company VARCHAR(50) ,'+ 'Company VARCHAR(50) ,'+
'Job_Position VARCHAR(30), '+ 'Job_Position VARCHAR(30), '+
'Address VARCHAR(100), '+ 'AddressType1 INTEGER, '+
'City VARCHAR(50), '+ 'Address1 VARCHAR(100), '+
'State VARCHAR(25), '+ 'City1 VARCHAR(50), '+
'Zip VARCHAR(10), '+ 'State1 VARCHAR(25), '+
'Country VARCHAR(25), '+ 'Zip1 VARCHAR(10), '+
'Country1 VARCHAR(25), '+
'AddressType2 INTEGER, '+
'Address2 VARCHAR(100), '+
'City2 VARCHAR(50), '+
'State2 VARCHAR(25), '+
'Zip2 VARCHAR(10), '+
'Country2 VARCHAR(25), '+
'Notes VARCHAR, '+ 'Notes VARCHAR, '+
'EMail1 VARCHAR(100), '+
'EMail2 VARCHAR(100), '+
'EMail3 VARCHAR(100), '+
'EMailType1 INTEGER, '+
'EMailType2 INTEGER, '+
'EMailType3 INTEGER, '+
'Phone1 VARCHAR(25), '+ 'Phone1 VARCHAR(25), '+
'Phone2 VARCHAR(25), '+ 'Phone2 VARCHAR(25), '+
'Phone3 VARCHAR(25), '+ 'Phone3 VARCHAR(25), '+
@ -192,8 +205,12 @@ begin
'PhoneType3 INTEGER, '+ 'PhoneType3 INTEGER, '+
'PhoneType4 INTEGER, '+ 'PhoneType4 INTEGER, '+
'PhoneType5 INTEGER, '+ 'PhoneType5 INTEGER, '+
'Website1 VARCHAR(100), '+
'Website2 VARCHAR(100), '+
'WebsiteType1 INTEGER, '+
'WebsiteType2 INTEGER, '+
'Category INTEGER, '+ 'Category INTEGER, '+
'EMail VARCHAR(100), '+ 'PathToPhoto VARCHAR(255), '+
'Custom1 VARCHAR(100), '+ 'Custom1 VARCHAR(100), '+
'Custom2 VARCHAR(100),'+ 'Custom2 VARCHAR(100),'+
'Custom3 VARCHAR(100), '+ 'Custom3 VARCHAR(100), '+

View File

@ -51,9 +51,9 @@ object Form1: TForm1
Height = 652 Height = 652
Top = 34 Top = 34
Width = 980 Width = 980
ActivePage = TabSheet2 ActivePage = TabSheet1
Align = alClient Align = alClient
TabIndex = 1 TabIndex = 0
TabOrder = 1 TabOrder = 1
OnChange = PageControl1Change OnChange = PageControl1Change
object TabSheet1: TTabSheet object TabSheet1: TTabSheet
@ -357,6 +357,8 @@ object Form1: TForm1
CategoryColorMap.Category8.Description = 'Category 8' CategoryColorMap.Category8.Description = 'Category 8'
CategoryColorMap.Category9.Color = clMaroon CategoryColorMap.Category9.Color = clMaroon
CategoryColorMap.Category9.Description = 'Category 9' CategoryColorMap.Category9.Description = 'Category 9'
HiddenCategories.BackgroundColor = clSilver
HiddenCategories.Color = clGray
EnableEventTimer = True EnableEventTimer = True
PlayEventSounds = True PlayEventSounds = True
AutoConnect = False AutoConnect = False
@ -456,18 +458,40 @@ object Form1: TForm1
'Company' 'Company'
'Job_Position' 'Job_Position'
'Job_Position' 'Job_Position'
'Address' 'Address1'
'Address' 'Address1'
'City' 'Address2'
'City' 'Address2'
'State' 'City1'
'State' 'City1'
'Zip' 'City2'
'Zip' 'City2'
'Country' 'State1'
'Country' 'State1'
'State2'
'State2'
'Zip1'
'Zip1'
'Zip2'
'Zip2'
'Country1'
'Country1'
'Country2'
'Country2'
'Notes' 'Notes'
'Notes' 'Notes'
'EMail1'
'EMail1'
'EMail2'
'EMail2'
'EMail3'
'EMail3'
'EMailType1'
'EMailType1'
'EMailType2'
'EMailType2'
'EMailType3'
'EMailType3'
'Phone1' 'Phone1'
'Phone1' 'Phone1'
'Phone2' 'Phone2'
@ -488,10 +512,18 @@ object Form1: TForm1
'PhoneType4' 'PhoneType4'
'PhoneType5' 'PhoneType5'
'PhoneType5' 'PhoneType5'
'Website1'
'Website1'
'Website2'
'Website2'
'WebsiteType1'
'WebsiteType1'
'WebsiteType2'
'WebsiteType2'
'Category' 'Category'
'Category' 'Category'
'EMail' 'PathToPhoto'
'EMail' 'PathToPhoto'
'Custom1' 'Custom1'
'Custom1' 'Custom1'
'Custom2' 'Custom2'

View File

@ -2,10 +2,10 @@ object Form1: TForm1
Left = 344 Left = 344
Height = 686 Height = 686
Top = 169 Top = 169
Width = 980 Width = 910
Caption = 'Form1' Caption = 'Form1'
ClientHeight = 686 ClientHeight = 686
ClientWidth = 980 ClientWidth = 910
OnCreate = FormCreate OnCreate = FormCreate
OnDestroy = FormDestroy OnDestroy = FormDestroy
LCLVersion = '1.7' LCLVersion = '1.7'
@ -13,11 +13,11 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 34 Height = 34
Top = 0 Top = 0
Width = 980 Width = 910
Align = alTop Align = alTop
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 34 ClientHeight = 34
ClientWidth = 980 ClientWidth = 910
TabOrder = 0 TabOrder = 0
object VpResourceCombo1: TVpResourceCombo object VpResourceCombo1: TVpResourceCombo
Left = 8 Left = 8
@ -50,7 +50,7 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 652 Height = 652
Top = 34 Top = 34
Width = 980 Width = 910
ActivePage = TabSheet1 ActivePage = TabSheet1
Align = alClient Align = alClient
TabIndex = 0 TabIndex = 0
@ -58,12 +58,12 @@ object Form1: TForm1
object TabSheet1: TTabSheet object TabSheet1: TTabSheet
Caption = 'Events and tasks' Caption = 'Events and tasks'
ClientHeight = 624 ClientHeight = 624
ClientWidth = 972 ClientWidth = 902
object VpDayView1: TVpDayView object VpDayView1: TVpDayView
Left = 0 Left = 0
Height = 624 Height = 624
Top = 0 Top = 0
Width = 301 Width = 283
DataStore = VpFlexDataStore1 DataStore = VpFlexDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -97,21 +97,21 @@ object Form1: TForm1
TimeFormat = tf12Hour TimeFormat = tf12Hour
end end
object Panel2: TPanel object Panel2: TPanel
Left = 306 Left = 288
Height = 624 Height = 624
Top = 0 Top = 0
Width = 386 Width = 363
Align = alLeft Align = alLeft
BevelOuter = bvNone BevelOuter = bvNone
Caption = 'Panel2' Caption = 'Panel2'
ClientHeight = 624 ClientHeight = 624
ClientWidth = 386 ClientWidth = 363
TabOrder = 1 TabOrder = 1
object VpWeekView1: TVpWeekView object VpWeekView1: TVpWeekView
Left = 0 Left = 0
Height = 378 Height = 378
Top = 0 Top = 0
Width = 386 Width = 363
DataStore = VpFlexDataStore1 DataStore = VpFlexDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -138,7 +138,7 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 241 Height = 241
Top = 383 Top = 383
Width = 386 Width = 363
DataStore = VpFlexDataStore1 DataStore = VpFlexDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -170,16 +170,16 @@ object Form1: TForm1
Left = 0 Left = 0
Height = 5 Height = 5
Top = 378 Top = 378
Width = 386 Width = 363
Align = alBottom Align = alBottom
ResizeAnchor = akBottom ResizeAnchor = akBottom
end end
end end
object VpTaskList1: TVpTaskList object VpTaskList1: TVpTaskList
Left = 697 Left = 656
Height = 624 Height = 624
Top = 0 Top = 0
Width = 275 Width = 246
DataStore = VpFlexDataStore1 DataStore = VpFlexDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -204,13 +204,13 @@ object Form1: TForm1
ShowResourceName = True ShowResourceName = True
end end
object Splitter1: TSplitter object Splitter1: TSplitter
Left = 692 Left = 651
Height = 624 Height = 624
Top = 0 Top = 0
Width = 5 Width = 5
end end
object Splitter3: TSplitter object Splitter3: TSplitter
Left = 301 Left = 283
Height = 624 Height = 624
Top = 0 Top = 0
Width = 5 Width = 5
@ -297,6 +297,8 @@ object Form1: TForm1
CategoryColorMap.Category8.Description = 'Category 8' CategoryColorMap.Category8.Description = 'Category 8'
CategoryColorMap.Category9.Color = clMaroon CategoryColorMap.Category9.Color = clMaroon
CategoryColorMap.Category9.Description = 'Category 9' CategoryColorMap.Category9.Description = 'Category 9'
HiddenCategories.BackgroundColor = clSilver
HiddenCategories.Color = clGray
EnableEventTimer = True EnableEventTimer = True
PlayEventSounds = True PlayEventSounds = True
AutoConnect = False AutoConnect = False
@ -396,16 +398,32 @@ object Form1: TForm1
'Company' 'Company'
'Job_Position' 'Job_Position'
'Job_Position' 'Job_Position'
'Address' 'AddressType1'
'Address' 'AddressType1'
'City' 'AddressType2'
'City' 'AddressType2'
'State' 'Address1'
'State' 'Address1'
'Zip' 'Address2'
'Zip' 'Address2'
'Country' 'City1'
'Country' 'City1'
'City2'
'City2'
'State1'
'State1'
'State2'
'State2'
'Zip1'
'Zip1'
'Zip2'
'Zip2'
'Country1'
'Country1'
'Country2'
'Country2'
'PathToPhoto'
'PathToPhoto'
'Notes' 'Notes'
'Notes' 'Notes'
'Phone1' 'Phone1'
@ -430,8 +448,26 @@ object Form1: TForm1
'PhoneType5' 'PhoneType5'
'Category' 'Category'
'Category' 'Category'
'EMail' 'EMail1'
'EMail' 'EMail1'
'EMail2'
'EMail2'
'EMail3'
'EMail3'
'EMailType1'
'EMailType1'
'EMailType2'
'EMailType2'
'EMailType3'
'EMailType3'
'Website1'
'Website1'
'Website2'
'Website2'
'WebsiteType1'
'WebsiteType1'
'WebsiteType2'
'WebsiteType2'
'Custom1' 'Custom1'
'Custom1' 'Custom1'
'Custom2' 'Custom2'
@ -489,7 +525,6 @@ object Form1: TForm1
FieldDefs = < FieldDefs = <
item item
Name = 'ResourceID' Name = 'ResourceID'
Attributes = [faReadonly]
DataType = ftAutoInc DataType = ftAutoInc
Precision = -1 Precision = -1
end end
@ -503,7 +538,7 @@ object Form1: TForm1
Name = 'Notes' Name = 'Notes'
DataType = ftString DataType = ftString
Precision = -1 Precision = -1
Size = 255 Size = 1024
end end
item item
Name = 'ImageIndex' Name = 'ImageIndex'
@ -514,66 +549,6 @@ object Form1: TForm1
Name = 'ResourceActive' Name = 'ResourceActive'
DataType = ftBoolean DataType = ftBoolean
Precision = -1 Precision = -1
end
item
Name = 'UserField0'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField1'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField2'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField3'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField4'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField5'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField6'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField7'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField8'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField9'
DataType = ftString
Precision = -1
Size = 100
end> end>
Database = SQLite3Connection1 Database = SQLite3Connection1
Transaction = SQLTransaction1 Transaction = SQLTransaction1
@ -596,7 +571,6 @@ object Form1: TForm1
FieldDefs = < FieldDefs = <
item item
Name = 'RecordID' Name = 'RecordID'
Attributes = [faReadonly]
DataType = ftAutoInc DataType = ftAutoInc
Precision = -1 Precision = -1
end end
@ -679,7 +653,7 @@ object Form1: TForm1
Name = 'Notes' Name = 'Notes'
DataType = ftString DataType = ftString
Precision = -1 Precision = -1
Size = 255 Size = 1024
end end
item item
Name = 'Phone1' Name = 'Phone1'
@ -792,7 +766,6 @@ object Form1: TForm1
FieldDefs = < FieldDefs = <
item item
Name = 'RecordID' Name = 'RecordID'
Attributes = [faReadonly]
DataType = ftAutoInc DataType = ftAutoInc
Precision = -1 Precision = -1
end end
@ -827,7 +800,7 @@ object Form1: TForm1
Name = 'Notes' Name = 'Notes'
DataType = ftString DataType = ftString
Precision = -1 Precision = -1
Size = 255 Size = 1024
end end
item item
Name = 'Category' Name = 'Category'
@ -901,7 +874,6 @@ object Form1: TForm1
FieldDefs = < FieldDefs = <
item item
Name = 'RecordID' Name = 'RecordID'
Attributes = [faReadonly]
DataType = ftAutoInc DataType = ftAutoInc
Precision = -1 Precision = -1
end end
@ -925,7 +897,7 @@ object Form1: TForm1
Name = 'Details' Name = 'Details'
DataType = ftString DataType = ftString
Precision = -1 Precision = -1
Size = 255 Size = 1024
end end
item item
Name = 'CreatedOn' Name = 'CreatedOn'
@ -978,7 +950,6 @@ object Form1: TForm1
object SQLite3Connection1: TSQLite3Connection object SQLite3Connection1: TSQLite3Connection
Connected = False Connected = False
LoginPrompt = False LoginPrompt = False
DatabaseName = 'data.db'
KeepConnection = False KeepConnection = False
Transaction = SQLTransaction1 Transaction = SQLTransaction1
Options = [] Options = []

View File

@ -154,12 +154,21 @@ begin
'"Title" VARCHAR(50), '+ '"Title" VARCHAR(50), '+
'"Company" VARCHAR(50), '+ '"Company" VARCHAR(50), '+
'"Job_Position" VARCHAR(30), '+ '"Job_Position" VARCHAR(30), '+
'"Address" VARCHAR(100), '+ '"AddressType1" INTEGER, '+
'"City" VARCHAR(50), '+ '"Address1" VARCHAR(100), '+
'"State" VARCHAR(25), '+ '"City1" VARCHAR(50), '+
'"Zip" VARCHAR(10), '+ '"State1" VARCHAR(25), '+
'"Country" VARCHAR(25), '+ '"Zip1" VARCHAR(10), '+
'"Country1" VARCHAR(25), '+
'"AddressType2" INTEGER, '+
'"Address2" VARCHAR(100), '+
'"City2" VARCHAR(50), '+
'"State2" VARCHAR(25), '+
'"Zip2" VARCHAR(10), '+
'"Country2" VARCHAR(25), '+
'"Notes" VARCHAR(1024), '+ '"Notes" VARCHAR(1024), '+
'"PathToPhoto" VARCHAR(255), '+
'"Category" INTEGER, '+
'"Phone1" VARCHAR(25), '+ '"Phone1" VARCHAR(25), '+
'"Phone2" VARCHAR(25), '+ '"Phone2" VARCHAR(25), '+
'"Phone3" VARCHAR(25), '+ '"Phone3" VARCHAR(25), '+
@ -170,12 +179,20 @@ begin
'"PhoneType3" INTEGER, '+ '"PhoneType3" INTEGER, '+
'"PhoneType4" INTEGER, '+ '"PhoneType4" INTEGER, '+
'"PhoneType5" INTEGER, '+ '"PhoneType5" INTEGER, '+
'"Category" INTEGER, '+ '"EMail1" VARCHAR(100), '+
'"EMail" VARCHAR (100), '+ '"EMail2" VARCHAR(100), '+
'"Custom1" VARCHAR (100), '+ '"EMail3" VARCHAR(100), '+
'"Custom2" VARCHAR (100), '+ '"EMailType1" INTEGER, '+
'"Custom3" VARCHAR (100), '+ '"EMailType2" INTEGER, '+
'"Custom4" VARCHAR (100)); ' '"EMailType3" INTEGER, '+
'"Website1" VARCHAR(100), '+
'"Website2" VARCHAR(100), '+
'"WebsiteType1" INTEGER, '+
'"WebsiteType2" INTEGER, '+
'"Custom1" VARCHAR(100), '+
'"Custom2" VARCHAR(100), '+
'"Custom3" VARCHAR(100), '+
'"Custom4" VARCHAR(100)); '
); );
SQLite3Connection1.ExecuteDirect( SQLite3Connection1.ExecuteDirect(
'CREATE UNIQUE INDEX "Contacts_RecordID_idx" ON "Contacts" ("RecordID");' 'CREATE UNIQUE INDEX "Contacts_RecordID_idx" ON "Contacts" ("RecordID");'

View File

@ -119,6 +119,12 @@ msgstr "Web-Browser kann nicht gestartet werden. Bitte stellen Sie sicher, dass
msgid "Brush" msgid "Brush"
msgstr "Füllung" msgstr "Füllung"
#: vpsr.rsbusinesswebsitelabel
#, fuzzy
msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business"
msgstr "Geschäftlich"
#: vpsr.rscalendarelement #: vpsr.rscalendarelement
msgid "Calendar" msgid "Calendar"
msgstr "Kalender" msgstr "Kalender"
@ -165,6 +171,7 @@ msgid "Category %d"
msgstr "Kategorie %d" msgstr "Kategorie %d"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
msgstr "Geschäftlich" msgstr "Geschäftlich"
@ -177,6 +184,7 @@ msgid "Family"
msgstr "Familie" msgstr "Familie"
#: vpsr.rscategorylabel4 #: vpsr.rscategorylabel4
msgctxt "vpsr.rscategorylabel4"
msgid "Personal" msgid "Personal"
msgstr "Persönlich" msgstr "Persönlich"
@ -463,6 +471,18 @@ msgstr "Von Ihrem Zeitplan?"
msgid "Height" msgid "Height"
msgstr "Höhe" msgstr "Höhe"
#: vpsr.rshomeaddresslabel
#, fuzzy
msgctxt "vpsr.rshomeaddresslabel"
msgid "Home"
msgstr "Zuhause"
#: vpsr.rshomeemaillabel
#, fuzzy
msgctxt "vpsr.rshomeemaillabel"
msgid "Home"
msgstr "Zuhause"
#: vpsr.rshours #: vpsr.rshours
msgid "Hours" msgid "Hours"
msgstr "Stunden" msgstr "Stunden"
@ -716,6 +736,12 @@ msgstr "OK"
msgid "&Open Item" msgid "&Open Item"
msgstr "Eintrag ö&ffnen" msgstr "Eintrag ö&ffnen"
#: vpsr.rsotheremaillabel
#, fuzzy
msgctxt "vpsr.rsotheremaillabel"
msgid "Other"
msgstr "Andere"
#: vpsr.rsoutofrange #: vpsr.rsoutofrange
msgid "Out of range" msgid "Out of range"
msgstr "Außerhalb des zulässigen Bereichs" msgstr "Außerhalb des zulässigen Bereichs"
@ -748,6 +774,12 @@ msgstr "Prozent"
msgid "This operation cannot be undone!" msgid "This operation cannot be undone!"
msgstr "Diese Operation kann nicht rückgängig gemacht werden!" msgstr "Diese Operation kann nicht rückgängig gemacht werden!"
#: vpsr.rspersonalwebsitelabel
#, fuzzy
msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal"
msgstr "Persönlich"
#: vpsr.rsphonetypelabel1 #: vpsr.rsphonetypelabel1
msgid "Assistant" msgid "Assistant"
msgstr "Assistent" msgstr "Assistent"
@ -777,6 +809,7 @@ msgid "TTY/TDD"
msgstr "TTY/TDD" msgstr "TTY/TDD"
#: vpsr.rsphonetypelabel16 #: vpsr.rsphonetypelabel16
msgctxt "vpsr.rsphonetypelabel16"
msgid "Work" msgid "Work"
msgstr "Arbeit" msgstr "Arbeit"
@ -798,6 +831,7 @@ msgid "Company"
msgstr "Firma" msgstr "Firma"
#: vpsr.rsphonetypelabel5 #: vpsr.rsphonetypelabel5
msgctxt "vpsr.rsphonetypelabel5"
msgid "Home" msgid "Home"
msgstr "Zuhause" msgstr "Zuhause"
@ -1174,6 +1208,18 @@ msgstr "Breite"
msgid "Width:" msgid "Width:"
msgstr "Breite:" msgstr "Breite:"
#: vpsr.rsworkaddresslabel
#, fuzzy
msgctxt "vpsr.rsworkaddresslabel"
msgid "Work"
msgstr "Arbeit"
#: vpsr.rsworkemaillabel
#, fuzzy
msgctxt "vpsr.rsworkemaillabel"
msgid "Work"
msgstr "Arbeit"
#: vpsr.rsxdays #: vpsr.rsxdays
msgid "%d days" msgid "%d days"
msgstr "%d Tage" msgstr "%d Tage"
@ -1498,3 +1544,4 @@ msgstr "Unbekannte Achsen-Spezifikation: %s"
#: vpsr.sxmldecnotatbeg #: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element" msgid "The XML declaration must appear before the first element"
msgstr "Die XML-Deklaration muss vor dem ersten Element erscheinen." msgstr "Die XML-Deklaration muss vor dem ersten Element erscheinen."

View File

@ -125,6 +125,12 @@ msgstr "Échec de démarrage de votre browser internet. Veuillez verifier que vo
msgid "Brush" msgid "Brush"
msgstr "" msgstr ""
#: vpsr.rsbusinesswebsitelabel
#, fuzzy
msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business"
msgstr "Professionnel"
#: vpsr.rscalendarelement #: vpsr.rscalendarelement
msgid "Calendar" msgid "Calendar"
msgstr "" msgstr ""
@ -171,6 +177,7 @@ msgid "Category %d"
msgstr "Catégorie %d" msgstr "Catégorie %d"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
msgstr "Professionnel" msgstr "Professionnel"
@ -183,6 +190,7 @@ msgid "Family"
msgstr "Famille" msgstr "Famille"
#: vpsr.rscategorylabel4 #: vpsr.rscategorylabel4
msgctxt "vpsr.rscategorylabel4"
msgid "Personal" msgid "Personal"
msgstr "Personnel" msgstr "Personnel"
@ -469,6 +477,18 @@ msgstr "de votre agenda?"
msgid "Height" msgid "Height"
msgstr "" msgstr ""
#: vpsr.rshomeaddresslabel
#, fuzzy
msgctxt "vpsr.rshomeaddresslabel"
msgid "Home"
msgstr "Maison"
#: vpsr.rshomeemaillabel
#, fuzzy
msgctxt "vpsr.rshomeemaillabel"
msgid "Home"
msgstr "Maison"
#: vpsr.rshours #: vpsr.rshours
msgid "Hours" msgid "Hours"
msgstr "Heures" msgstr "Heures"
@ -722,6 +742,12 @@ msgstr "OK"
msgid "&Open Item" msgid "&Open Item"
msgstr "&Item ouvert" msgstr "&Item ouvert"
#: vpsr.rsotheremaillabel
#, fuzzy
msgctxt "vpsr.rsotheremaillabel"
msgid "Other"
msgstr "Autre"
#: vpsr.rsoutofrange #: vpsr.rsoutofrange
msgid "Out of range" msgid "Out of range"
msgstr "Hors de portée" msgstr "Hors de portée"
@ -754,6 +780,12 @@ msgstr ""
msgid "This operation cannot be undone!" msgid "This operation cannot be undone!"
msgstr "Ce processus est irreversible!" msgstr "Ce processus est irreversible!"
#: vpsr.rspersonalwebsitelabel
#, fuzzy
msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal"
msgstr "Personnel"
#: vpsr.rsphonetypelabel1 #: vpsr.rsphonetypelabel1
msgid "Assistant" msgid "Assistant"
msgstr "Assistante" msgstr "Assistante"
@ -783,6 +815,7 @@ msgid "TTY/TDD"
msgstr "ATS/ATM" msgstr "ATS/ATM"
#: vpsr.rsphonetypelabel16 #: vpsr.rsphonetypelabel16
msgctxt "vpsr.rsphonetypelabel16"
msgid "Work" msgid "Work"
msgstr "Travail" msgstr "Travail"
@ -804,6 +837,7 @@ msgid "Company"
msgstr "Société" msgstr "Société"
#: vpsr.rsphonetypelabel5 #: vpsr.rsphonetypelabel5
msgctxt "vpsr.rsphonetypelabel5"
msgid "Home" msgid "Home"
msgstr "Maison" msgstr "Maison"
@ -1180,6 +1214,18 @@ msgstr ""
msgid "Width:" msgid "Width:"
msgstr "" msgstr ""
#: vpsr.rsworkaddresslabel
#, fuzzy
msgctxt "vpsr.rsworkaddresslabel"
msgid "Work"
msgstr "Travail"
#: vpsr.rsworkemaillabel
#, fuzzy
msgctxt "vpsr.rsworkemaillabel"
msgid "Work"
msgstr "Travail"
#: vpsr.rsxdays #: vpsr.rsxdays
msgid "%d days" msgid "%d days"
msgstr "%d jours" msgstr "%d jours"

View File

@ -119,6 +119,12 @@ msgstr "Webbrowser kan niet gestart worden. Controleer uw systeeminstellingen."
msgid "Brush" msgid "Brush"
msgstr "" msgstr ""
#: vpsr.rsbusinesswebsitelabel
#, fuzzy
msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business"
msgstr "Zakelijk"
#: vpsr.rscalendarelement #: vpsr.rscalendarelement
msgid "Calendar" msgid "Calendar"
msgstr "" msgstr ""
@ -165,6 +171,7 @@ msgid "Category %d"
msgstr "Categorie %d" msgstr "Categorie %d"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
msgstr "Zakelijk" msgstr "Zakelijk"
@ -177,6 +184,7 @@ msgid "Family"
msgstr "Familie" msgstr "Familie"
#: vpsr.rscategorylabel4 #: vpsr.rscategorylabel4
msgctxt "vpsr.rscategorylabel4"
msgid "Personal" msgid "Personal"
msgstr "Persoonlijk" msgstr "Persoonlijk"
@ -463,6 +471,18 @@ msgstr "van uw tijdschema?"
msgid "Height" msgid "Height"
msgstr "" msgstr ""
#: vpsr.rshomeaddresslabel
#, fuzzy
msgctxt "vpsr.rshomeaddresslabel"
msgid "Home"
msgstr "Thuis"
#: vpsr.rshomeemaillabel
#, fuzzy
msgctxt "vpsr.rshomeemaillabel"
msgid "Home"
msgstr "Thuis"
#: vpsr.rshours #: vpsr.rshours
msgid "Hours" msgid "Hours"
msgstr "Uren" msgstr "Uren"
@ -716,6 +736,12 @@ msgstr "OK"
msgid "&Open Item" msgid "&Open Item"
msgstr "&Open Item" msgstr "&Open Item"
#: vpsr.rsotheremaillabel
#, fuzzy
msgctxt "vpsr.rsotheremaillabel"
msgid "Other"
msgstr "Andere"
#: vpsr.rsoutofrange #: vpsr.rsoutofrange
msgid "Out of range" msgid "Out of range"
msgstr "Buiten geldig bereik" msgstr "Buiten geldig bereik"
@ -748,6 +774,12 @@ msgstr ""
msgid "This operation cannot be undone!" msgid "This operation cannot be undone!"
msgstr "Deze operatie kan niet ongedaan gemaakt worden!" msgstr "Deze operatie kan niet ongedaan gemaakt worden!"
#: vpsr.rspersonalwebsitelabel
#, fuzzy
msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal"
msgstr "Persoonlijk"
#: vpsr.rsphonetypelabel1 #: vpsr.rsphonetypelabel1
msgid "Assistant" msgid "Assistant"
msgstr "Assistent" msgstr "Assistent"
@ -777,6 +809,7 @@ msgid "TTY/TDD"
msgstr "TTY/TDD" msgstr "TTY/TDD"
#: vpsr.rsphonetypelabel16 #: vpsr.rsphonetypelabel16
msgctxt "vpsr.rsphonetypelabel16"
msgid "Work" msgid "Work"
msgstr "Werk" msgstr "Werk"
@ -798,6 +831,7 @@ msgid "Company"
msgstr "Firma" msgstr "Firma"
#: vpsr.rsphonetypelabel5 #: vpsr.rsphonetypelabel5
msgctxt "vpsr.rsphonetypelabel5"
msgid "Home" msgid "Home"
msgstr "Thuis" msgstr "Thuis"
@ -1174,6 +1208,18 @@ msgstr ""
msgid "Width:" msgid "Width:"
msgstr "" msgstr ""
#: vpsr.rsworkaddresslabel
#, fuzzy
msgctxt "vpsr.rsworkaddresslabel"
msgid "Work"
msgstr "Werk"
#: vpsr.rsworkemaillabel
#, fuzzy
msgctxt "vpsr.rsworkemaillabel"
msgid "Work"
msgstr "Werk"
#: vpsr.rsxdays #: vpsr.rsxdays
msgid "%d days" msgid "%d days"
msgstr "%d dagen" msgstr "%d dagen"

View File

@ -109,6 +109,11 @@ msgstr ""
msgid "Brush" msgid "Brush"
msgstr "" msgstr ""
#: vpsr.rsbusinesswebsitelabel
msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business"
msgstr ""
#: vpsr.rscalendarelement #: vpsr.rscalendarelement
msgid "Calendar" msgid "Calendar"
msgstr "" msgstr ""
@ -155,6 +160,7 @@ msgid "Category %d"
msgstr "" msgstr ""
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
msgstr "" msgstr ""
@ -167,6 +173,7 @@ msgid "Family"
msgstr "" msgstr ""
#: vpsr.rscategorylabel4 #: vpsr.rscategorylabel4
msgctxt "vpsr.rscategorylabel4"
msgid "Personal" msgid "Personal"
msgstr "" msgstr ""
@ -453,6 +460,16 @@ msgstr ""
msgid "Height" msgid "Height"
msgstr "" msgstr ""
#: vpsr.rshomeaddresslabel
msgctxt "vpsr.rshomeaddresslabel"
msgid "Home"
msgstr ""
#: vpsr.rshomeemaillabel
msgctxt "vpsr.rshomeemaillabel"
msgid "Home"
msgstr ""
#: vpsr.rshours #: vpsr.rshours
msgid "Hours" msgid "Hours"
msgstr "" msgstr ""
@ -706,6 +723,11 @@ msgstr ""
msgid "&Open Item" msgid "&Open Item"
msgstr "" msgstr ""
#: vpsr.rsotheremaillabel
msgctxt "vpsr.rsotheremaillabel"
msgid "Other"
msgstr ""
#: vpsr.rsoutofrange #: vpsr.rsoutofrange
msgid "Out of range" msgid "Out of range"
msgstr "" msgstr ""
@ -738,6 +760,11 @@ msgstr ""
msgid "This operation cannot be undone!" msgid "This operation cannot be undone!"
msgstr "" msgstr ""
#: vpsr.rspersonalwebsitelabel
msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal"
msgstr ""
#: vpsr.rsphonetypelabel1 #: vpsr.rsphonetypelabel1
msgid "Assistant" msgid "Assistant"
msgstr "" msgstr ""
@ -767,6 +794,7 @@ msgid "TTY/TDD"
msgstr "" msgstr ""
#: vpsr.rsphonetypelabel16 #: vpsr.rsphonetypelabel16
msgctxt "vpsr.rsphonetypelabel16"
msgid "Work" msgid "Work"
msgstr "" msgstr ""
@ -788,6 +816,7 @@ msgid "Company"
msgstr "" msgstr ""
#: vpsr.rsphonetypelabel5 #: vpsr.rsphonetypelabel5
msgctxt "vpsr.rsphonetypelabel5"
msgid "Home" msgid "Home"
msgstr "" msgstr ""
@ -1164,6 +1193,16 @@ msgstr ""
msgid "Width:" msgid "Width:"
msgstr "" msgstr ""
#: vpsr.rsworkaddresslabel
msgctxt "vpsr.rsworkaddresslabel"
msgid "Work"
msgstr ""
#: vpsr.rsworkemaillabel
msgctxt "vpsr.rsworkemaillabel"
msgid "Work"
msgstr ""
#: vpsr.rsxdays #: vpsr.rsxdays
msgid "%d days" msgid "%d days"
msgstr "" msgstr ""

View File

@ -119,6 +119,12 @@ msgstr "Ошибка запуска браузер. Убедитесь в пра
msgid "Brush" msgid "Brush"
msgstr "" msgstr ""
#: vpsr.rsbusinesswebsitelabel
#, fuzzy
msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business"
msgstr "Дела"
#: vpsr.rscalendarelement #: vpsr.rscalendarelement
msgid "Calendar" msgid "Calendar"
msgstr "Календарь" msgstr "Календарь"
@ -165,6 +171,7 @@ msgid "Category %d"
msgstr "Категория %d" msgstr "Категория %d"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
msgstr "Дела" msgstr "Дела"
@ -177,6 +184,7 @@ msgid "Family"
msgstr "Семья" msgstr "Семья"
#: vpsr.rscategorylabel4 #: vpsr.rscategorylabel4
msgctxt "vpsr.rscategorylabel4"
msgid "Personal" msgid "Personal"
msgstr "Персонал" msgstr "Персонал"
@ -463,6 +471,18 @@ msgstr "из вашего расписания?"
msgid "Height" msgid "Height"
msgstr "Высота" msgstr "Высота"
#: vpsr.rshomeaddresslabel
#, fuzzy
msgctxt "vpsr.rshomeaddresslabel"
msgid "Home"
msgstr "Домашний"
#: vpsr.rshomeemaillabel
#, fuzzy
msgctxt "vpsr.rshomeemaillabel"
msgid "Home"
msgstr "Домашний"
#: vpsr.rshours #: vpsr.rshours
msgid "Hours" msgid "Hours"
msgstr "Часы" msgstr "Часы"
@ -716,6 +736,12 @@ msgstr ""
msgid "&Open Item" msgid "&Open Item"
msgstr "Открыть эелемент" msgstr "Открыть эелемент"
#: vpsr.rsotheremaillabel
#, fuzzy
msgctxt "vpsr.rsotheremaillabel"
msgid "Other"
msgstr "Другой"
#: vpsr.rsoutofrange #: vpsr.rsoutofrange
msgid "Out of range" msgid "Out of range"
msgstr "За пределами диапазона" msgstr "За пределами диапазона"
@ -748,6 +774,12 @@ msgstr "Процент"
msgid "This operation cannot be undone!" msgid "This operation cannot be undone!"
msgstr "" msgstr ""
#: vpsr.rspersonalwebsitelabel
#, fuzzy
msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal"
msgstr "Персонал"
#: vpsr.rsphonetypelabel1 #: vpsr.rsphonetypelabel1
msgid "Assistant" msgid "Assistant"
msgstr "Ассистент" msgstr "Ассистент"
@ -777,6 +809,7 @@ msgid "TTY/TDD"
msgstr "" msgstr ""
#: vpsr.rsphonetypelabel16 #: vpsr.rsphonetypelabel16
msgctxt "vpsr.rsphonetypelabel16"
msgid "Work" msgid "Work"
msgstr "Рабочий" msgstr "Рабочий"
@ -798,6 +831,7 @@ msgid "Company"
msgstr "Компания" msgstr "Компания"
#: vpsr.rsphonetypelabel5 #: vpsr.rsphonetypelabel5
msgctxt "vpsr.rsphonetypelabel5"
msgid "Home" msgid "Home"
msgstr "Домашний" msgstr "Домашний"
@ -1174,6 +1208,18 @@ msgstr ""
msgid "Width:" msgid "Width:"
msgstr "" msgstr ""
#: vpsr.rsworkaddresslabel
#, fuzzy
msgctxt "vpsr.rsworkaddresslabel"
msgid "Work"
msgstr "Рабочий"
#: vpsr.rsworkemaillabel
#, fuzzy
msgctxt "vpsr.rsworkemaillabel"
msgid "Work"
msgstr "Рабочий"
#: vpsr.rsxdays #: vpsr.rsxdays
msgid "%d days" msgid "%d days"
msgstr "%d дней" msgstr "%d дней"

View File

@ -817,7 +817,6 @@ end;
procedure TVpCustomDatastore.UpdateGroupEvents; procedure TVpCustomDatastore.UpdateGroupEvents;
var var
i: Integer; i: Integer;
event: TVpEvent;
id: Integer; id: Integer;
res: TVpResource; res: TVpResource;
begin begin
@ -831,15 +830,15 @@ begin
for i:=0 to Resource.Group.Count-1 do begin for i:=0 to Resource.Group.Count-1 do begin
// current resource of group // current resource of group
res := Resource.Group[i]; res := Resource.Group[i];
if res <> nil then begin if res = nil then
Continue;
id := res.ResourceID; id := res.ResourceID;
// Ignore active resource in group // Ignore active resource in resource group (it shouldn't be there anyway)
if id = ResourceID then if id = ResourceID then
Continue; Continue;
// Load events of the current resource of the group // load events of current group
LoadEventsOfResource(id); LoadEventsOfResource(id);
end; end;
end;
NotifyDependents; NotifyDependents;
end; end;

View File

@ -502,7 +502,12 @@ type
FAnniversary: TDateTime; FAnniversary: TDateTime;
FTitle: string; FTitle: string;
FCompany: string; FCompany: string;
FEmail: string; FEMail1: string;
FEMail2: String;
FEMail3: String;
FEMailType1: integer;
FEMailType2: integer;
FEMailType3: integer;
FPhone1: string; FPhone1: string;
FPhone2: string; FPhone2: string;
FPhone3: string; FPhone3: string;
@ -513,13 +518,25 @@ type
FPhoneType3: integer; FPhoneType3: integer;
FPhoneType4: integer; FPhoneType4: integer;
FPhoneType5: integer; FPhoneType5: integer;
FAddress: string; FWebsite1: String;
FCity: string; FWebsite2: String;
FState: string; FWebsiteType1: Integer;
FZip: string; FWebsiteType2: Integer;
FCountry: string; FAddressType1: Integer;
FAddressType2: Integer;
FAddress1: string;
FAddress2: String;
FCity1: string;
FCity2: String;
FState1: string;
FState2: String;
FZip1: string;
FZip2: String;
FCountry1: string;
FCountry2: String;
FNotes: string; FNotes: string;
FPrivateRec: boolean; FPrivateRec: boolean;
FPathToPhoto: String;
FCategory: integer; FCategory: integer;
FCustom1: string; FCustom1: string;
FCustom2: string; FCustom2: string;
@ -536,23 +553,34 @@ type
FUserField7: string; FUserField7: string;
FUserField8: string; FUserField8: string;
FUserField9: string; FUserField9: string;
procedure SetAddress(const Value: string); procedure SetAddress1(const Value: string);
procedure SetAddress2(const Value: String);
procedure SetAddressType1(Value: Integer);
procedure SetAddressType2(Value: Integer);
procedure SetBirthDate(Value: TDateTime); procedure SetBirthDate(Value: TDateTime);
procedure SetAnniversary(Value: TDateTime); procedure SetAnniversary(Value: TDateTime);
procedure SetCategory(Value: integer); procedure SetCategory(Value: integer);
procedure SetChanged(Value: Boolean); procedure SetChanged(Value: Boolean);
procedure SetCity(const Value: string); procedure SetCity1(const Value: string);
procedure SetCity2(const Value: String);
procedure SetCompany(const Value: string); procedure SetCompany(const Value: string);
procedure SetCountry(const Value: string); procedure SetCountry1(const Value: string);
procedure SetCountry2(const Value: string);
procedure SetCustom1(const Value: string); procedure SetCustom1(const Value: string);
procedure SetCustom2(const Value: string); procedure SetCustom2(const Value: string);
procedure SetCustom3(const Value: string); procedure SetCustom3(const Value: string);
procedure SetCustom4(const Value: string); procedure SetCustom4(const Value: string);
procedure SetDeleted(Value: Boolean); procedure SetDeleted(Value: Boolean);
procedure SetEMail(const Value: string); procedure SetEMail1(const Value: string);
procedure SetEMail2(const Value: string);
procedure SetEMail3(const Value: string);
procedure SetEMailType1(const Value: Integer);
procedure SetEMailType2(const Value: Integer);
procedure SetEMailType3(const Value: Integer);
procedure SetFirstName(const Value: string); procedure SetFirstName(const Value: string);
procedure SetLastName(const Value: string); procedure SetLastName(const Value: string);
procedure SetNotes(const Value: string); procedure SetNotes(const Value: string);
procedure SetPathToPhoto(const Value: String);
procedure SetPhone1(const Value: string); procedure SetPhone1(const Value: string);
procedure SetPhone2(const Value: string); procedure SetPhone2(const Value: string);
procedure SetPhone3(const Value: string); procedure SetPhone3(const Value: string);
@ -565,9 +593,15 @@ type
procedure SetPhoneType5(Value: integer); procedure SetPhoneType5(Value: integer);
procedure SetPosition(const Value: string); procedure SetPosition(const Value: string);
procedure SetRecordID(Value: Integer); procedure SetRecordID(Value: Integer);
procedure SetState(const Value: string); procedure SetState1(const Value: string);
procedure SetState2(const Value: string);
procedure SetTitle(const Value: string); procedure SetTitle(const Value: string);
procedure SetZip(const Value: string); procedure SetWebsite1(Value: String);
procedure SetWebsite2(Value: String);
procedure SetWebsiteType1(Value: integer);
procedure SetWebsiteType2(Value: integer);
procedure SetZip1(const Value: string);
procedure SetZip2(const Value: string);
public public
constructor Create(Owner: TVpContacts); constructor Create(Owner: TVpContacts);
destructor Destroy; override; destructor Destroy; override;
@ -590,7 +624,13 @@ type
property Anniversary: TDateTime read FAnniversary write SetAnniversary; property Anniversary: TDateTime read FAnniversary write SetAnniversary;
property Title: string read FTitle write SetTitle; property Title: string read FTitle write SetTitle;
property Company: string read FCompany write SetCompany; property Company: string read FCompany write SetCompany;
property EMail: string read FEmail write SetEMail; property EMail: string read FEmail1 write SetEMail1; deprecated 'Use "EMail1" instead';
property EMail1: String read FEmail1 write SetEMail1;
property EMail2: String read FEmail2 write SetEmail2;
property EMail3: String read FEmail3 write SetEmail3;
property EMailType1: integer read FEMailType1 write SetEMailType1;
property EMailType2: integer read FEMailType2 write SetEMailType2;
property EMailType3: integer read FEMailType3 write SetEMailType3;
property Phone1: string read FPhone1 write SetPhone1; property Phone1: string read FPhone1 write SetPhone1;
property Phone2: string read FPhone2 write SetPhone2; property Phone2: string read FPhone2 write SetPhone2;
property Phone3: string read FPhone3 write SetPhone3; property Phone3: string read FPhone3 write SetPhone3;
@ -601,13 +641,30 @@ type
property PhoneType3: integer read FPhoneType3 write SetPhoneType3; property PhoneType3: integer read FPhoneType3 write SetPhoneType3;
property PhoneType4: integer read FPhoneType4 write SetPhoneType4; property PhoneType4: integer read FPhoneType4 write SetPhoneType4;
property PhoneType5: integer read FPhoneType5 write SetPhoneType5; property PhoneType5: integer read FPhoneType5 write SetPhoneType5;
property Address: string read FAddress write SetAddress; property Website1: string read FWebsite1 write SetWebsite1;
property City: string read FCity write SetCity; property Website2: string read FWebsite2 write SetWebsite2;
property State: string read FState write SetState; property WebsiteType1: integer read FWebsiteType1 write SetWebsiteType1;
property Zip: string read FZip write SetZip; property WebsiteType2: integer read FWebsiteType2 write SetWebsiteType2;
property Country: string read FCountry write SetCountry; property Address: string read FAddress1 write SetAddress1; deprecated 'Use "Address1" instead';
property Address1: string read FAddress1 write SetAddress1;
property Address2: string read FAddress2 write SetAddress2;
property City: string read FCity1 write SetCity1; deprecated 'Use "City1" instead';
property City1: string read FCity1 write SetCity1;
property City2: string read FCity2 write SetCity2;
property State: string read FState1 write SetState1; deprecated 'Use "State1" instead';
property State1: string read FState1 write SetState1;
property State2: string read FState2 write SetState2;
property Zip: string read FZip1 write SetZip1; deprecated 'Use "Zip1" instead';
property Zip1: string read FZip1 write SetZip1;
property Zip2: string read FZip2 write SetZip2;
property Country: string read FCountry1 write SetCountry1; deprecated 'Use "Country1" instead';
property Country1: string read FCountry1 write SetCountry1;
property Country2: string read FCountry2 write SetCountry2;
property AddressType1: integer read FAddressType1 write SetAddressType1;
property AddressType2: integer read FAddressType2 write SetAddressType2;
property Note: string read FNotes write SetNotes; deprecated 'Use "Notes" instead'; property Note: string read FNotes write SetNotes; deprecated 'Use "Notes" instead';
property Notes: string read FNotes write SetNotes; property Notes: string read FNotes write SetNotes;
property PathToPhoto: String read FPathToPhoto write SetPathToPhoto;
property Category: integer read FCategory write SetCategory; property Category: integer read FCategory write SetCategory;
property Custom1: string read FCustom1 write SetCustom1; property Custom1: string read FCustom1 write SetCustom1;
property Custom2: string read FCustom2 write SetCustom2; property Custom2: string read FCustom2 write SetCustom2;
@ -1800,10 +1857,34 @@ begin
end; end;
end; end;
procedure TVpContact.SetAddress(const Value: string); procedure TVpContact.SetAddress1(const Value: string);
begin begin
if Value <> FAddress then begin if Value <> FAddress1 then begin
FAddress := Value; FAddress1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetAddress2(const Value: string);
begin
if Value <> FAddress2 then begin
FAddress2 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetAddressType1(Value: integer);
begin
if Value <> FAddressType1 then begin
FAddressType1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetAddressType2(Value: integer);
begin
if Value <> FAddressType2 then begin
FAddressType2 := Value;
Changed := true; Changed := true;
end; end;
end; end;
@ -1827,10 +1908,18 @@ begin
end; end;
end; end;
procedure TVpContact.SetCity(const Value: string); procedure TVpContact.SetCity1(const Value: string);
begin begin
if Value <> FCity then begin if Value <> FCity1 then begin
FCity := Value; FCity1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetCity2(const Value: string);
begin
if Value <> FCity2 then begin
FCity2 := Value;
Changed := true; Changed := true;
end; end;
end; end;
@ -1843,10 +1932,18 @@ begin
end; end;
end; end;
procedure TVpContact.SetCountry(const Value: string); procedure TVpContact.SetCountry1(const Value: string);
begin begin
if Value <> FCountry then begin if Value <> FCountry1 then begin
FCountry := Value; FCountry1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetCountry2(const Value: string);
begin
if Value <> FCountry2 then begin
FCountry2 := Value;
Changed := true; Changed := true;
end; end;
end; end;
@ -1891,10 +1988,50 @@ begin
end; end;
end; end;
procedure TVpContact.SetEMail(const Value: string); procedure TVpContact.SetEMail1(const Value: string);
begin begin
if Value <> FEmail then begin if Value <> FEMail1 then begin
FEMail := Value; FEMail1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetEMail2(const Value: string);
begin
if Value <> FEMail2 then begin
FEMail2 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetEMail3(const Value: string);
begin
if Value <> FEMail3 then begin
FEMail3 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetEMailType1(const Value: Integer);
begin
if Value <> FEMailType1 then begin
FEMailType1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetEMailType2(const Value: Integer);
begin
if Value <> FEMailType2 then begin
FEMailType2 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetEMailType3(const Value: Integer);
begin
if Value <> FEMailType3 then begin
FEMailType3 := Value;
Changed := true; Changed := true;
end; end;
end; end;
@ -1923,6 +2060,14 @@ begin
end; end;
end; end;
procedure TVpContact.SetPathToPhoto(const Value: string);
begin
if Value <> FPathToPhoto then begin
FPathToPhoto := Value;
Changed := true;
end;
end;
procedure TVpContact.SetPhone1(const Value: string); procedure TVpContact.SetPhone1(const Value: string);
begin begin
if Value <> FPhone1 then begin if Value <> FPhone1 then begin
@ -2019,10 +2164,18 @@ begin
end; end;
end; end;
procedure TVpContact.SetState(const Value: string); procedure TVpContact.SetState1(const Value: string);
begin begin
if Value <> FState then begin if Value <> FState1 then begin
FState := Value; FState1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetState2(const Value: string);
begin
if Value <> FState2 then begin
FState2 := Value;
Changed := true; Changed := true;
end; end;
end; end;
@ -2035,10 +2188,50 @@ begin
end; end;
end; end;
procedure TVpContact.SetZip(const Value: string); procedure TVpContact.SetWebsite1(Value: String);
begin begin
if Value <> FZip then begin if Value <> FWebsite1 then begin
FZip := Value; FWebsite1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetWebsite2(Value: String);
begin
if Value <> FWebsite1 then begin
FWebsite2 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetWebsiteType1(Value: Integer);
begin
if Value <> FWebsiteType1 then begin
FWebsiteType1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetWebsiteType2(Value: Integer);
begin
if Value <> FWebsiteType2 then begin
FWebsiteType1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetZip1(const Value: string);
begin
if Value <> FZip1 then begin
FZip1 := Value;
Changed := true;
end;
end;
procedure TVpContact.SetZip2(const Value: string);
begin
if Value <> FZip2 then begin
FZip2 := Value;
Changed := true; Changed := true;
end; end;
end; end;

View File

@ -58,8 +58,10 @@ type
{ property setters } { property setters }
procedure SetReadOnly(const Value: boolean); procedure SetReadOnly(const Value: boolean);
procedure SetFilterCriteria(aTable: TDataset; aUseDateTime: Boolean; { internal methods }
aResourceID: Integer; aStartDateTime, aEndDateTime: TDateTime); virtual; procedure LoadContact(AContact: TVpContact); virtual;
procedure SetFilterCriteria(ATable: TDataset; AUseDateTime: Boolean;
AResourceID: Integer; AStartDateTime, AEndDateTime: TDateTime); virtual;
protected {properties that may be surfaced later} protected {properties that may be surfaced later}
property ReadOnly : boolean property ReadOnly : boolean
@ -484,37 +486,84 @@ begin
Size := 30; Size := 30;
Required := false; Required := false;
end; end;
{ Address } { AddressType1 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'Address'; Name := 'AddressType1';
DataType := ftInteger;
Required := false;
end;
{ Address1 }
with AddFieldDef do begin
Name := 'Address1';
DataType := ftString; DataType := ftString;
Size := 100; Size := 100;
Required := false; Required := false;
end; end;
{ City } { City1 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'City'; Name := 'City1';
DataType := ftString; DataType := ftString;
Size := 50; Size := 50;
Required := false; Required := false;
end; end;
{ State } { State1 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'State'; Name := 'State1';
DataType := ftString; DataType := ftString;
Size := 25; Size := 25;
Required := false; Required := false;
end; end;
{ Zip } { Zip1 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'Zip'; Name := 'Zip1';
DataType := ftString; DataType := ftString;
Size := 10; Size := 10;
Required := false; Required := false;
end; end;
{ Country } { Country1 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'Country'; Name := 'Country1';
DataType := ftString;
Size := 25;
Required := false;
end;
{ AddressType2 }
with AddFieldDef do begin
Name := 'AddressType2';
DataType := ftInteger;
Required := false;
end;
{ Address2 }
with AddFieldDef do begin
Name := 'Address2';
DataType := ftString;
Size := 100;
Required := false;
end;
{ City2 }
with AddFieldDef do begin
Name := 'City2';
DataType := ftString;
Size := 50;
Required := false;
end;
{ State2 }
with AddFieldDef do begin
Name := 'State2';
DataType := ftString;
Size := 25;
Required := false;
end;
{ Zip2 }
with AddFieldDef do begin
Name := 'Zip2';
DataType := ftString;
Size := 10;
Required := false;
end;
{ Country2 }
with AddFieldDef do begin
Name := 'Country2';
DataType := ftString; DataType := ftString;
Size := 25; Size := 25;
Required := false; Required := false;
@ -561,47 +610,112 @@ begin
Size := 25; Size := 25;
Required := false; Required := false;
end; end;
{ Phone1 } { PhoneType1 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'PhoneType1'; Name := 'PhoneType1';
DataType := ftInteger; DataType := ftInteger;
Required := false; Required := false;
end; end;
{ Phone2 } { PhoneType2 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'PhoneType2'; Name := 'PhoneType2';
DataType := ftInteger; DataType := ftInteger;
Required := false; Required := false;
end; end;
{ Phone3 } { PhoneType3 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'PhoneType3'; Name := 'PhoneType3';
DataType := ftInteger; DataType := ftInteger;
Required := false; Required := false;
end; end;
{ Phone4 } { PhoneType4 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'PhoneType4'; Name := 'PhoneType4';
DataType := ftInteger; DataType := ftInteger;
Required := false; Required := false;
end; end;
{ Phone5 } { PhoneType5 }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'PhoneType5'; Name := 'PhoneType5';
DataType := ftInteger; DataType := ftInteger;
Required := false; Required := false;
end; end;
{ EMail1 }
with AddFieldDef do begin
Name := 'EMail1';
DataType := ftString;
Size := 100;
Required := false;
end;
{ EMail2 }
with AddFieldDef do begin
Name := 'EMail2';
DataType := ftString;
Size := 100;
Required := false;
end;
{ EMail3 }
with AddFieldDef do begin
Name := 'EMail3';
DataType := ftString;
Size := 100;
Required := false;
end;
{ EMailType1 }
with AddFieldDef do begin
Name := 'EMailType1';
DataType := ftInteger;
Required := false;
end;
{ EMailType2 }
with AddFieldDef do begin
Name := 'EMailType2';
DataType := ftInteger;
Required := false;
end;
{ EMailType3 }
with AddFieldDef do begin
Name := 'EMailType3';
DataType := ftInteger;
Required := false;
end;
{ Website1 }
with AddFieldDef do begin
Name := 'Website1';
DataType := ftString;
Size := 100;
Required := false;
end;
{ Website2 }
with AddFieldDef do begin
Name := 'Website2';
DataType := ftString;
Size := 100;
Required := false;
end;
{ WebsiteType1 }
with AddFieldDef do begin
Name := 'WebsiteType1';
DataType := ftInteger;
Required := false;
end;
{ WebsiteType2 }
with AddFieldDef do begin
Name := 'WebsiteType2';
DataType := ftInteger;
Required := false;
end;
{ Category } { Category }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'Category'; Name := 'Category';
DataType := ftInteger; DataType := ftInteger;
Required := false; Required := false;
end; end;
{ EMail } { PathToPhoto }
with AddFieldDef do begin with AddFieldDef do begin
Name := 'EMail'; Name := 'PathToPhoto';
DataType := ftString; DataType := ftString;
Size := 100; Size := 255;
Required := false; Required := false;
end; end;
{ Custom1 } { Custom1 }
@ -1089,11 +1203,142 @@ begin
end; {with EventsTable} end; {with EventsTable}
end; end;
{=====} {=====}
{ Loads the contact from the current cursor position of the contacts table }
procedure TVpCustomDBDataStore.LoadContact(AContact: TVpContact);
var
F: TField;
begin
with ContactsTable do
begin
AContact.RecordID := FieldByName('RecordID').AsInteger;
AContact.FirstName := FieldByName('FirstName').AsString;
AContact.LastName := FieldByName('LastName').AsString;
AContact.Birthdate := FieldByName('BirthDate').AsDateTime;
AContact.Anniversary := FieldByName('Anniversary').AsDateTime;
AContact.Title := FieldByName('Title').AsString;
AContact.Company := FieldByName('Company').AsString;
AContact.Job_Position := FieldByName('Job_Position').AsString;
AContact.Category := FieldByName('Category').AsInteger;
F := FindField('Notes');
if F = nil then F := FindField('Note'); // deprecated
if F <> nil then AContact.Notes := F.AsString;
// photo file name - new in 1.05
F := FindField('PathToPhoto');
if F <> nil then AContact.PathToPhoto := F.AsString;
// two address types - new in 1.05
F := FindField('AddressType1');
if F <> nil then AContact.AddressType1 := F.AsInteger;
F := FindField('AddressType2');
if F <> nil then AContact.AddressType2 := F.AsInteger;
F := FindField('Address1');
if F = nil then F := FindField('Address');
if F <> nil then AContact.Address1 := F.AsString;
F := FindField('Address2');
if F <> nil then AContact.Address2 := F.AsString;
F := FindField('City1');
if F = nil then F := FindField('City');
if F <> nil then AContact.City1 := F.AsString;
F := FindField('City2');
if F <> nil then AContact.City2 := F.AsString;
F := FindField('State1');
if F = nil then F := FindField('State');
if F <> nil then AContact.State1 := F.AsString;
F := FindField('State2');
if F <> nil then AContact.State2 := F.AsString;
F := FindField('Zip1');
if F = nil then F := FindField('Zip');
if F <> nil then AContact.Zip1 := F.AsString;
F := FindField('Zip2');
if F <> nil then AContact.Zip2 := F.AsString;
F := FindField('Country1');
if F = nil then F := FindField('Country');
if F <> nil then AContact.Country1 := F.AsString;
F := FindField('Country2');
if F <> nil then AContact.Country2 := F.AsString;
{
Contact.Address := FieldByName('Address').AsString;
Contact.City := FieldByName('City').AsString;
Contact.State := FieldByName('State').AsString;
Contact.Zip := FieldByName('Zip').AsString;
Contact.Country := FieldByName('Country').AsString;
}
AContact.Phone1 := FieldByName('Phone1').AsString;
AContact.Phone2 := FieldByName('Phone2').AsString;
AContact.Phone3 := FieldByName('Phone3').AsString;
AContact.Phone4 := FieldByName('Phone4').AsString;
AContact.Phone5 := FieldByName('Phone5').AsString;
AContact.PhoneType1 := FieldByName('PhoneType1').AsInteger;
AContact.PhoneType2 := FieldByName('PhoneType2').AsInteger;
AContact.PhoneType3 := FieldByName('PhoneType3').AsInteger;
AContact.PhoneType4 := FieldByName('PhoneType4').AsInteger;
AContact.PhoneType5 := FieldByName('PhoneType5').AsInteger;
// EMail fields - new in 1.05
F := FindField('EMail1');
if F = nil then F := FindField('EMail');
if F <> nil then AContact.EMail1 := F.AsString;
F := FindField('EMail2');
if F <> nil then AContact.EMail2 := F.AsString;
F := FindField('EMail3');
if F <> nil then AContact.EMail := F.AsString;
F := FindField('EMailType1');
if F <> nil then AContact.EMailType1 := F.AsInteger;
F := FindField('EMailType2');
if F <> nil then AContact.EMailType2 := F.AsInteger;
F := FindField('EMailType3');
if F <> nil then AContact.EMailType3 := F.AsInteger;
// Website fields - new in 1.05
F := FindField('Website1');
if F <> nil then AContact.Website1 := F.AsString;
F := FindField('Website2');
if F <> nil then AContact.Website2 := F.AsString;
F := FindField('WebsiteType1');
if F <> nil then AContact.WebsiteType1 := F.AsInteger;
F := FindField('WebsiteType2');
if F <> nil then AContact.WebsiteType2 := F.AsInteger;
// Custom fields
F := FindField('Custom1');
if F <> nil then AContact.Custom1 := F.AsString;
F := FindField('Custom2');
if F <> nil then AContact.Custom2 := F.AsString;
F := FindField('Custom3');
if F <> nil then AContact.Custom3 := F.AsString;
F := FindField('Custom4');
if F <> nil then AContact.Custom4 := F.AsString;
// User-defined fields
F := FindField('UserField0');
if F <> nil then AContact.UserField0 := F.AsString;
F := FindField('UserField1');
if F <> nil then AContact.UserField1 := F.AsString;
F := FindField('UserField2');
if F <> nil then AContact.UserField2 := F.AsString;
F := FindField('UserField3');
if F <> nil then AContact.UserField3 := F.AsString;
F := FindField('UserField4');
if F <> nil then AContact.UserField4 := F.AsString;
F := FindField('UserField5');
if F <> nil then AContact.UserField5 := F.AsString;
F := FindField('UserField6');
if F <> nil then AContact.UserField6 := F.AsString;
F := FindField('UserField7');
if F <> nil then AContact.UserField7 := F.AsString;
F := FindField('UserField8');
if F <> nil then AContact.UserField8 := F.AsString;
F := FindField('UserField9');
if F <> nil then AContact.UserField9 := F.AsString;
end;
end;
procedure TVpCustomDBDataStore.LoadContacts; procedure TVpCustomDBDataStore.LoadContacts;
var var
Contact: TVpContact; contact: TVpContact;
F: TField;
begin begin
if (Resource <> nil) then if (Resource <> nil) then
with ContactsTable do begin with ContactsTable do begin
@ -1103,66 +1348,14 @@ begin
); );
First; First;
while not EOF do begin while not EOF do begin
Contact := Resource.Contacts.AddContact(GetNextID(ContactsTableName)); contact := Resource.Contacts.AddContact(GetNextID(ContactsTableName));
Contact.Loading := true; contact.Loading := true;
Contact.RecordID := FieldByName('RecordID').AsInteger; LoadContact(contact);
Contact.FirstName := FieldByName('FirstName').AsString; contact.Loading := false;
Contact.LastName := FieldByName('LastName').AsString;
Contact.Birthdate := FieldByName('BirthDate').AsDateTime;
Contact.Anniversary := FieldByName('Anniversary').AsDateTime;
Contact.Title := FieldByName('Title').AsString;
Contact.Company := FieldByName('Company').AsString;
Contact.Job_Position := FieldByName('Job_Position').AsString;
Contact.EMail := FieldByName('EMail').AsString;
Contact.Address := FieldByName('Address').AsString;
Contact.City := FieldByName('City').AsString;
Contact.State := FieldByName('State').AsString;
Contact.Zip := FieldByName('Zip').AsString;
Contact.Country := FieldByName('Country').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;
Contact.Phone4 := FieldByName('Phone4').AsString;
Contact.Phone5 := FieldByName('Phone5').AsString;
Contact.PhoneType1 := FieldByName('PhoneType1').AsInteger;
Contact.PhoneType2 := FieldByName('PhoneType2').AsInteger;
Contact.PhoneType3 := FieldByName('PhoneType3').AsInteger;
Contact.PhoneType4 := FieldByName('PhoneType4').AsInteger;
Contact.PhoneType5 := FieldByName('PhoneType5').AsInteger;
Contact.Category := FieldByName('Category').AsInteger;
Contact.Custom1 := FieldByName('Custom1').AsString;
Contact.Custom2 := FieldByName('Custom2').AsString;
Contact.Custom3 := FieldByName('Custom3').AsString;
Contact.Custom4 := FieldByName('Custom4').AsString;
F := FindField('UserField0');
if F <> nil then Contact.UserField0 := F.AsString;
F := FindField('UserField1');
if F <> nil then Contact.UserField1 := F.AsString;
F := FindField('UserField2');
if F <> nil then Contact.UserField2 := F.AsString;
F := FindField('UserField3');
if F <> nil then Contact.UserField3 := F.AsString;
F := FindField('UserField4');
if F <> nil then Contact.UserField4 := F.AsString;
F := FindField('UserField5');
if F <> nil then Contact.UserField5 := F.AsString;
F := FindField('UserField6');
if F <> nil then Contact.UserField6 := F.AsString;
F := FindField('UserField7');
if F <> nil then Contact.UserField7 := F.AsString;
F := FindField('UserField8');
if F <> nil then Contact.UserField8 := F.AsString;
F := FindField('UserField9');
if F <> nil then Contact.UserField9 := F.AsString;
Contact.Loading := false;
Next; Next;
end; {while} end;
end; {with ContactsTable} end;
end; end;
{=====}
procedure TVpCustomDBDataStore.LoadTasks; procedure TVpCustomDBDataStore.LoadTasks;
var var
@ -1215,6 +1408,200 @@ begin
end; end;
{=====} {=====}
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 }
if ResourceTable.Locate('ResourceID', Resource.ResourceID, []) then begin
SetFilterCriteria(ContactsTable, False, Resource.ResourceID, 0, 0);
for I := pred(Resource.Contacts.Count) downto 0 do begin
Contact := Resource.Contacts.GetContact(I);
{ if the delete flag is set then delete the record }
{ and free the event instance }
if Contact.Deleted then begin
if ContactsTable.Locate('RecordID', Contact.RecordID, [])
then ContactsTable.Delete;
Contact.Free;
Continue;
end;
if Contact.Changed then begin
if ContactsTable.Locate('RecordID', Contact.RecordID, []) then
{ this event already exists in the database so update it }
ContactsTable.Edit
else begin
{ this record doesn't exist in the database, so it's a new event }
ContactsTable.Append;
end;
try
{ DataStore descendants that can use an autoincrement RecordID }
{ field set the RecordID to -1 by default. If the RecordID is }
{ -1 then this is a new record and we shouldn't overwrite }
{ RecordID with a bogus value }
if Contact.RecordID > -1 then
ContactsTable.FieldByName('RecordID').AsInteger := Contact.RecordID;
ContactsTable.FieldByName('ResourceID').AsInteger := Resource.ResourceID;
ContactsTable.FieldByName('FirstName').AsString := Contact.FirstName;
ContactsTable.FieldByName('LastName').AsString := Contact.LastName;
ContactsTable.FieldByName('Birthdate').AsDateTime := Contact.Birthdate;
ContactsTable.FieldByName('Anniversary').AsDateTime := Contact.Anniversary;
ContactsTable.FieldByName('Title').AsString := Contact.Title;
ContactsTable.FieldByName('Company').AsString := Contact.Company;
ContactsTable.FieldByName('Job_Position').AsString := Contact.Job_Position;
ContactsTable.FieldByName('Category').AsInteger := Contact.Category;
F := ContactsTable.FindField('Notes');
if F = nil then F := ContactsTable.FindField('Note');
if F <> nil then F.AsString := Contact.Notes;
// File name of picture -- new in 1.05
F := ContactsTable.FindField('PathToPhoto');
if F <> nil then F.AsString := Contact.PathToPhoto;
// two address types -- new in 1.05
F := ContactsTable.FindField('AddressType1');
if F <> nil then F.AsInteger := Contact.AddressType1;
F := ContactsTable.FindField('AddressType2');
if F <> nil then F.AsInteger := Contact.AddressType2;
F := ContactsTable.FindField('Address1');
if F = nil then F := ContactsTable.FindField('Address');
if F <> nil then F.AsString := Contact.Address1;
F := ContactsTable.FindField('Address2');
if F <> nil then F.AsString := Contact.Address2;
F := ContactsTable.FindField('City1');
if F = nil then F := ContactsTable.FindField('City');
if F <> nil then F.AsString := Contact.City1;
F := ContactsTable.FindField('City2');
if F <> nil then F.AsString := Contact.City2;
F := ContactsTable.FindField('State1');
if F = nil then F := ContactsTable.FindField('State');
if F <> nil then F.AsString := Contact.State1;
F := ContactsTable.FindField('State2');
if F <> nil then F.AsString := Contact.State2;
F := ContactsTable.FindField('Zip1');
if F = nil then F := ContactsTable.FindField('Zip');
if F <> nil then F.AsString := Contact.Zip1;
F := ContactsTable.FindField('Zip2');
if F <> nil then F.AsString := Contact.Zip2;
F := ContactsTable.FindField('Country1');
if F = nil then F := ContactsTable.FindField('Country');
if F <> nil then F.AsString := Contact.Country1;
F := ContactsTable.FindField('Country2');
if F <> nil then F.AsString := Contact.Country2;
{
ContactsTable.FieldByName('Address').AsString := Contact.Address;
ContactsTable.FieldByName('City').AsString := Contact.City;
ContactsTable.FieldByName('State').AsString := Contact.State;
ContactsTable.FieldByName('Zip').AsString := Contact.Zip;
ContactsTable.FieldByName('Country').AsString := Contact.Country;
}
// Telephones
ContactsTable.FieldByName('Phone1').AsString := Contact.Phone1;
ContactsTable.FieldByName('Phone2').AsString := Contact.Phone2;
ContactsTable.FieldByName('Phone3').AsString := Contact.Phone3;
ContactsTable.FieldByName('Phone4').AsString := Contact.Phone4;
ContactsTable.FieldByName('Phone5').AsString := Contact.Phone5;
ContactsTable.FieldByName('PhoneType1').AsInteger := Contact.PhoneType1;
ContactsTable.FieldByName('PhoneType2').AsInteger := Contact.PhoneType2;
ContactsTable.FieldByName('PhoneType3').AsInteger := Contact.PhoneType3;
ContactsTable.FieldByName('PhoneType4').AsInteger := Contact.PhoneType4;
ContactsTable.FieldByName('PhoneType5').AsInteger := Contact.PhoneType5;
// Three e-mail types -- new in 1.05
F := ContactsTable.FindField('EMail1');
if F = nil then F := ContactsTable.FindField('EMail');
if F <> nil then F.AsString := Contact.EMail1;
F := ContactsTable.FindField('EMail2');
if F <> nil then F.AsString := Contact.EMail2;
F := ContactsTable.FindField('EMail3');
if F <> nil then F.AsString := Contact.EMail3;
F := ContactsTable.FindField('EMailType1');
if F <> nil then F.AsInteger := Contact.EMailType1;
F := ContactsTable.FindField('EMailType2');
if F <> nil then F.AsInteger := Contact.EMailType2;
F := ContactsTable.FindField('EMailType3');
if F <> nil then F.AsInteger := Contact.EMailType3;
//ContactsTable.FieldByName('EMail').AsString := Contact.EMail;
// two websites -- new in 1.05
F := ContactsTable.FindField('Website1');
if F <> nil then F.AsString := Contact.Website1;
F := ContactsTable.FindField('Website2');
if F <> nil then F.AsString := Contact.Website2;
F := ContactsTable.FindField('WebsiteType1');
if F <> nil then F.AsInteger := Contact.WebsiteType1;
F := ContactsTable.FindField('WebsiteType2');
if F <> nil then F.AsInteger := Contact.WebsiteType2;
// Custom fields
F := ContactsTable.FindField('Custom1');
if F <> nil then F.AsString := Contact.Custom1;
F := ContactsTable.FindField('Custom2');
if F <> nil then F.AsString := Contact.Custom2;
F := ContactsTable.FindField('Custom3');
if F <> nil then F.AsString := Contact.Custom3;
F := ContactsTable.FindField('Custom4');
if F <> nil then F.AsString := Contact.Custom4;
// User-defined fields
F := ContactsTable.FindField('UserField0');
if F <> nil then F.AsString := Contact.UserField0;
F := ContactsTable.FindField('UserField1');
if F <> nil then F.AsString := Contact.UserField1;
F := ContactsTable.FindField('UserField2');
if F <> nil then F.AsString := Contact.UserField2;
F := ContactsTable.FindField('UserField3');
if F <> nil then F.AsString := Contact.UserField3;
F := ContactsTable.FindField('UserField4');
if F <> nil then F.AsString := Contact.UserField4;
F := ContactsTable.FindField('UserField5');
if F <> nil then F.AsString := Contact.UserField5;
F := ContactsTable.FindField('UserField6');
if F <> nil then F.AsString := Contact.UserField6;
F := ContactsTable.FindField('UserField7');
if F <> nil then F.AsString := Contact.UserField7;
F := ContactsTable.FindField('UserField8');
if F <> nil then F.AsString := Contact.UserField8;
F := ContactsTable.FindField('UserField9');
if F <> nil then F.AsString := Contact.UserField9;
ContactsTable.Post;
except
ContactsTable.Cancel;
raise EDBPostError.Create;
end;
{ DataStore descendants that can use an autoincrement RecordID }
{ field set the RecordID to -1 by default. If the RecordID is }
{ -1 then this is a new record and we need to assign the real }
{ record ID value from the dataset. }
if Contact.RecordID = -1 then
Contact.RecordID := ContactsTable.FieldByName('RecordID').AsInteger;
Contact.Changed := false;
end;
end;
end;
Resource.ContactsDirty := false;
if not Loading then
NotifyDependents;
if Assigned(AfterPostContacts) then
FAfterPostContacts(self);
end;
end;
{=====}
(*
procedure TVpCustomDBDataStore.PostContacts; procedure TVpCustomDBDataStore.PostContacts;
var var
I: Integer; I: Integer;
@ -1331,6 +1718,7 @@ begin
end; end;
end; end;
{=====} {=====}
*)
procedure TVpCustomDBDataStore.PostEvents; procedure TVpCustomDBDataStore.PostEvents;
var var
@ -1669,10 +2057,23 @@ end;
{=====} {=====}
procedure TVpCustomDBDataStore.RefreshContacts; procedure TVpCustomDBDataStore.RefreshContacts;
var
contact: TVpContact;
begin begin
if Resource <> nil then begin if Resource <> nil then begin
Resource.Contacts.ClearContacts; Resource.Contacts.ClearContacts;
LoadContacts; with ContactsTable do begin
SetFilterCriteria(ContactsTable, False, Resource.ResourceID, 0, 0);
First;
while not EOF do begin
contact := Resource.Contacts.AddContact(FieldByName('RecordID').AsInteger);
contact.Loading := true;
LoadContact(contact);
contact.Loading := false;
Next;
end;
end;
// LoadContacts;
end; end;
inherited; inherited;
end; end;
@ -1775,33 +2176,33 @@ end;
Format(' ... (DTOS(StartTime) >= %s) ...', [ Format(' ... (DTOS(StartTime) >= %s) ...', [
FormatDateTime('yyyymmdd') ...]) FormatDateTime('yyyymmdd') ...])
} }
procedure TVpCustomDBDataStore.SetFilterCriteria(aTable: TDataset; procedure TVpCustomDBDataStore.SetFilterCriteria(ATable: TDataset;
aUseDateTime: Boolean; aResourceID: Integer; aStartDateTime, aEndDateTime: TDateTime); AUseDateTime: Boolean; AResourceID: Integer; AStartDateTime, AEndDateTime: TDateTime);
var var
filter: String; filter: String;
begin begin
if aUseDateTime then if AUseDateTime then
{$IFDEF DELPHI} {$IFDEF DELPHI}
filter := Format('ResourceID = %d ' filter := Format('ResourceID = %d '
+ 'and ( ( (StartTime >= %s) and (EndTime <= %s) ) ' + 'and ( ( (StartTime >= %s) and (EndTime <= %s) ) '
+ ' or ( (RepeatCode > 0) and (%s <= RepeatRangeEnd) ) )', + ' or ( (RepeatCode > 0) and (%s <= RepeatRangeEnd) ) )',
[aResourceID, [AResourceID,
QuotedStr(FormatDateTime('c', aStartDateTime)), QuotedStr(FormatDateTime('c', AStartDateTime)),
QuotedStr(FormatDateTime('c', aEndDateTime)), QuotedStr(FormatDateTime('c', AEndDateTime)),
QuotedStr(FormatDateTime('c', aStartDateTime))]) QuotedStr(FormatDateTime('c', AStartDateTime))])
{$ELSE} {$ELSE}
filter := Format('ResourceID = %d ' filter := Format('ResourceID = %d '
+ 'and ( ( (DTOS(StartTime) >= %s) and (DTOS(EndTime) <= %s) ) ' + 'and ( ( (DTOS(StartTime) >= %s) and (DTOS(EndTime) <= %s) ) '
+ ' or ( (RepeatCode > 0) and (%s <= DTOS(RepeatRangeEnd)) ) )', + ' or ( (RepeatCode > 0) and (%s <= DTOS(RepeatRangeEnd)) ) )',
[aResourceID, [AResourceID,
QuotedStr(FormatDateTime('yyyymmdd', aStartDateTime)), QuotedStr(FormatDateTime('yyyymmdd', AStartDateTime)),
QuotedStr(FormatDateTime('yyyymmdd', aEndDateTime)), QuotedStr(FormatDateTime('yyyymmdd', AEndDateTime)),
QuotedStr(FormatDateTime('yyyymmdd', aStartDateTime))]) QuotedStr(FormatDateTime('yyyymmdd', AStartDateTime))])
{$ENDIF} {$ENDIF}
else else
filter := Format('ResourceID = %d', [aResourceID]); filter := Format('ResourceID = %d', [AResourceID]);
aTable.Filter := filter; ATable.Filter := filter;
aTable.Filtered := true; ATable.Filtered := true;
end; end;
{=====} {=====}

View File

@ -177,14 +177,21 @@ begin
'Birthdate DATE, '+ 'Birthdate DATE, '+
'Anniversary DATE, '+ 'Anniversary DATE, '+
'Title VARCHAR(50), '+ 'Title VARCHAR(50), '+
'Category INTEGER, '+
'Company VARCHAR(50), '+ 'Company VARCHAR(50), '+
'Job_Position VARCHAR(30), '+ 'Job_Position VARCHAR(30), '+
'Address VARCHAR(100), '+ 'AddressType1 INTEGER, '+
'City VARCHAR(50), '+ 'Address1 VARCHAR(100), '+
'State VARCHAR(25), '+ 'City1 VARCHAR(50), '+
'Zip VARCHAR(10), '+ 'State1 VARCHAR(25), '+
'Country VARCHAR(25), '+ 'Zip1 VARCHAR(10), '+
'Notes VARCHAR(1024), '+ 'Country1 VARCHAR(25), '+
'AddressType2 INTEGER, '+
'Address2 VARCHAR(100), '+
'City2 VARCHAR(50), '+
'State2 VARCHAR(25), '+
'Zip2 VARCHAR(10), '+
'Country2 VARCHAR(25), '+
'Phone1 VARCHAR(25), '+ 'Phone1 VARCHAR(25), '+
'Phone2 VARCHAR(25), '+ 'Phone2 VARCHAR(25), '+
'Phone3 VARCHAR(25), '+ 'Phone3 VARCHAR(25), '+
@ -195,8 +202,18 @@ begin
'PhoneType3 INTEGER, '+ 'PhoneType3 INTEGER, '+
'PhoneType4 INTEGER, '+ 'PhoneType4 INTEGER, '+
'PhoneType5 INTEGER, '+ 'PhoneType5 INTEGER, '+
'Category INTEGER, '+ 'EMail1 VARCHAR (100), '+
'EMail VARCHAR (100), '+ 'EMail2 VARCHAR (100), '+
'EMail3 VARCHAR (100), '+
'EMailType1 INTEGER, '+
'EMailType2 INTEGER, '+
'EMailType3 INTEGER, '+
'WebSite1 VARCHAR (100), '+
'WebSite2 VARCHAR (100), '+
'WebSiteType1 INTEGER, '+
'WebSiteType2 INTEGER, '+
'PathToPhoto VARCHAR (255), '+
'Notes VARCHAR(1024), '+
'Custom1 VARCHAR (100), '+ 'Custom1 VARCHAR (100), '+
'Custom2 VARCHAR (100), '+ 'Custom2 VARCHAR (100), '+
'Custom3 VARCHAR (100), '+ 'Custom3 VARCHAR (100), '+

View File

@ -133,19 +133,17 @@ type
procedure LoadTaskMapping(Reader: TReader); procedure LoadTaskMapping(Reader: TReader);
procedure StoreTaskMapping(Writer: TWriter); procedure StoreTaskMapping(Writer: TWriter);
{ Internal Methods } { Internal Methods }
procedure LoadContact(AContact: TVpContact); override;
procedure Loaded; override; procedure Loaded; override;
procedure SetFilterCriteria(aTable : TDataset; procedure SetFilterCriteria(ATable: TDataset; AUseDateTime: Boolean;
aUseDateTime : Boolean; AResourceID: Integer; AStartDateTime, AEndDateTime: TDateTime); override;
aResourceID : Integer;
aStartDateTime : TDateTime;
aEndDateTime : TDateTime); override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure Load; override; procedure Load; override;
procedure LoadEventsOfResource(AResID: Integer); override; procedure LoadEventsOfResource(AResID: Integer); override;
procedure LoadContacts; override; // procedure LoadContacts; override;
procedure LoadTasks; override; procedure LoadTasks; override;
// procedure RefreshEvents; override; // procedure RefreshEvents; override;
// procedure RefreshContacts; override; // procedure RefreshContacts; override;
@ -419,9 +417,8 @@ begin
Load; Load;
end end
// Load; else
begin
else begin
if FResourceDataSrc <> nil then if FResourceDataSrc <> nil then
FResourceDataSrc.DataSet.Close; FResourceDataSrc.DataSet.Close;
if FEventsDataSrc <> nil then if FEventsDataSrc <> nil then
@ -829,6 +826,293 @@ begin
end;*) end;*)
{=====} {=====}
{ Loads the contact from the current cursor position of the contacts table }
procedure TVpFlexDatastore.LoadContact(AContact: TVpContact);
var
F: TField;
FN: String;
begin
with ContactsTable do
begin
FN := GetFieldName(FContactMappings, 'RecordID');
if FN <> '' then
AContact.RecordID := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'FirstName');
if FN <> '' then
AContact.FirstName := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'LastName');
if FN <> '' then
AContact.LastName := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'BirthDate');
if FN <> '' then
AContact.Birthdate := FieldByName(FN).AsDateTime;
FN := GetFieldName(FContactMappings, 'Anniversary');
if FN <> '' then
AContact.Anniversary := FieldByName(FN).AsDateTime;
FN := GetFieldName(FContactMappings, 'Title');
if FN <> '' then
AContact.Title := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Company');
if FN <> '' then
AContact.Company := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Job_Position');
if FN <> '' then
AContact.Job_Position := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Category');
if FN <> '' then
AContact.Category := FieldByName(FN).AsInteger;
// Photo file name, new in 1.05
FN := GetFieldName(FContactMappings, 'PathToPhoto');
if FN <> '' then
AContact.PathToPhoto := FieldByName(FN).AsString;
// "Notes" instead of "Note" - new in 1.04
FN := GetFieldName(FContactMappings, 'Notes');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Note'); // "Note" is deprecated
if FN <> '' then
AContact.Notes := FieldByName(FN).AsString;
// two address types - new in 1.05
FN := GetFieldName(FContactMappings, 'AddressType1');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.AddressType1 := F.AsInteger;
end;
FN := GetFieldName(FContactMappings, 'AddressType2');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.AddressType2 := F.AsInteger;
end;
FN := GetFieldName(FContactMappings, 'Address1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Address');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.Address1 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'Address2');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.Address2 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'City1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'City');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.City1 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'City2');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.City2 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'State1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'State');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.State1 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'State2');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.State2 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'Zip1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Zip');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.Zip1 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'Zip2');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.Zip2 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'Country1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Country');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.Country1 := F.AsString;
end;
FN := GetFieldName(FContactMappings, 'Country2');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Country');
if FN <> '' then begin
F := FindField(FN);
if F <> nil then AContact.Country2 := F.AsString;
end;
// Telephone numbers
FN := GetFieldName(FContactMappings, 'Phone1');
if FN <> '' then
AContact.Phone1 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Phone2');
if FN <> '' then
AContact.Phone2 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Phone3');
if FN <> '' then
AContact.Phone3 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Phone4');
if FN <> '' then
AContact.Phone4 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Phone5');
if FN <> '' then
AContact.Phone5 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'PhoneType1');
if FN <> '' then
AContact.PhoneType1 := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'PhoneType2');
if FN <> '' then
AContact.PhoneType2 := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'PhoneType3');
if FN <> '' then
AContact.PhoneType3 := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'PhoneType4');
if FN <> '' then
AContact.PhoneType4 := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'PhoneType5');
if FN <> '' then
AContact.PhoneType5 := FieldByName(FN).AsInteger;
// EMail fields - new in 1.05
FN := GetFieldName(FContactMappings, 'EMail1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'EMail');
if FN <> '' then
AContact.EMail1 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'EMail2');
if FN <> '' then
AContact.EMail2 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'EMail3');
if FN <> '' then
AContact.EMail3 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'EMailType1');
if FN <> '' then
AContact.EMailType1 := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'EMailType2');
if FN <> '' then
AContact.EMailType2 := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'EMailType3');
if FN <> '' then
AContact.EMailType3 := FieldByName(FN).AsInteger;
// Website fields - new in 1.05
FN := GetFieldName(FContactMappings, 'WebSite1');
if FN <> '' then
AContact.Website1 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'WebSite2');
if FN <> '' then
AContact.Website2 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'WebsiteType1');
if FN <> '' then
AContact.WebsiteType1 := FieldByName(FN).AsInteger;
FN := GetFieldName(FContactMappings, 'WebsiteType2');
if FN <> '' then
AContact.WebsiteType2 := FieldByName(FN).AsInteger;
// Custom fields
FN := GetFieldName(FContactMappings, 'Custom1');
if FN <> '' then
AContact.Custom1 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Custom2');
if FN <> '' then
AContact.Custom2 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Custom3');
if FN <> '' then
AContact.Custom3 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'Custom4');
if FN <> '' then
AContact.Custom4 := FieldByName(FN).AsString;
// User-defined fields
FN := GetFieldName(FContactMappings, 'UserField0');
if FN <> '' then
AContact.UserField0 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField1');
if FN <> '' then
AContact.UserField1 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField2');
if FN <> '' then
AContact.UserField2 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField3');
if FN <> '' then
AContact.UserField3 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField4');
if FN <> '' then
AContact.UserField4 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField5');
if FN <> '' then
AContact.UserField5 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField6');
if FN <> '' then
AContact.UserField6 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField7');
if FN <> '' then
AContact.UserField7 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField8');
if FN <> '' then
AContact.UserField8 := FieldByName(FN).AsString;
FN := GetFieldName(FContactMappings, 'UserField9');
if FN <> '' then
AContact.UserField9 := FieldByName(FN).AsString;
end;
end;
(*
procedure TVpFlexDataStore.LoadContacts; procedure TVpFlexDataStore.LoadContacts;
var var
Contact: TVpContact; Contact: TVpContact;
@ -1019,7 +1303,7 @@ begin
end; {if Resource <> nil} end; {if Resource <> nil}
end; end;
{=====} {=====}
*)
procedure TVpFlexDataStore.LoadTasks; procedure TVpFlexDataStore.LoadTasks;
var var
Task: TVpTask; Task: TVpTask;
@ -1534,29 +1818,63 @@ begin
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Job_Position; ContactsTable.FieldByName(FN).AsString := Contact.Job_Position;
FN := GetFieldName(FContactMappings, 'EMail'); FN := GetFieldName(FContactMappings, 'AddressType1');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.EMail; ContactsTable.FieldByName(FN).AsInteger := Contact.AddressType1;
FN := GetFieldName(FContactMappings, 'Address1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Address'); FN := GetFieldName(FContactMappings, 'Address');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Address; ContactsTable.FieldByName(FN).AsString := Contact.Address1;
FN := GetFieldName(FContactMappings, 'City1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'City'); FN := GetFieldName(FContactMappings, 'City');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.City; ContactsTable.FieldByName(FN).AsString := Contact.City1;
FN := GetFieldName(FContactMappings, 'State1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'State'); FN := GetFieldName(FContactMappings, 'State');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.State; ContactsTable.FieldByName(FN).AsString := Contact.State1;
FN := GetFieldName(FContactMappings, 'Zip1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Zip'); FN := GetFieldName(FContactMappings, 'Zip');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Zip; ContactsTable.FieldByName(FN).AsString := Contact.Zip1;
FN := GetFieldName(FContactMappings, 'Country1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'Country'); FN := GetFieldName(FContactMappings, 'Country');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Country; ContactsTable.FieldByName(FN).AsString := Contact.Country1;
FN := GetFieldName(FContactMappings, 'AddressType2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.AddressType2;
FN := GetFieldName(FContactMappings, 'Address2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Address2;
FN := GetFieldName(FContactMappings, 'City2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.City2;
FN := GetFieldName(FContactMappings, 'State2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.State2;
FN := GetFieldName(FContactMappings, 'Zip2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Zip2;
FN := GetFieldName(FContactMappings, 'Country2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Country2;
FN := GetFieldName(FContactMappings, 'Notes'); FN := GetFieldName(FContactMappings, 'Notes');
if FN = '' then if FN = '' then
@ -1564,6 +1882,32 @@ begin
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Notes; ContactsTable.FieldByName(FN).AsString := Contact.Notes;
FN := GetFieldName(FContactMappings, 'EMail1');
if FN = '' then
FN := GetFieldName(FContactMappings, 'EMail');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.EMail1;
FN := GetFieldName(FContactMappings, 'EMail2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.EMail2;
FN := GetFieldName(FContactMappings, 'EMail3');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.EMail3;
FN := GetFieldName(FContactMappings, 'EMailType1');
if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.EMailType1;
FN := GetFieldName(FContactMappings, 'EMailType2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.EMailType2;
FN := GetFieldName(FContactMappings, 'EMailType3');
if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.EMailType3;
FN := GetFieldName(FContactMappings, 'Phone1'); FN := GetFieldName(FContactMappings, 'Phone1');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Phone1; ContactsTable.FieldByName(FN).AsString := Contact.Phone1;
@ -1604,10 +1948,30 @@ begin
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.PhoneType5; ContactsTable.FieldByName(FN).AsInteger := Contact.PhoneType5;
FN := GetFieldName(FContactMappings, 'Website1');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.WebSite1;
FN := GetFieldName(FContactMappings, 'Website2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.WebSite2;
FN := GetFieldName(FContactMappings, 'WebSiteType1');
if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.WebSiteType1;
FN := GetFieldName(FContactMappings, 'WebSiteType2');
if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.WebSiteType2;
FN := GetFieldName(FContactMappings, 'Category'); FN := GetFieldName(FContactMappings, 'Category');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsInteger := Contact.Category; ContactsTable.FieldByName(FN).AsInteger := Contact.Category;
FN := GetFieldName(FContactMappings, 'PathToPhoto');
if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.PathToPhoto;
FN := GetFieldName(FContactMappings, 'Custom1'); FN := GetFieldName(FContactMappings, 'Custom1');
if FN <> '' then if FN <> '' then
ContactsTable.FieldByName(FN).AsString := Contact.Custom1; ContactsTable.FieldByName(FN).AsString := Contact.Custom1;
@ -2292,13 +2656,12 @@ begin
end; end;
{=====} {=====}
procedure TVpFlexDataStore.SetFilterCriteria(aTable: TDataset; procedure TVpFlexDataStore.SetFilterCriteria(ATable: TDataset; AUseDateTime: Boolean;
aUseDateTime: Boolean; aResourceID: Integer; aStartDateTime, AResourceID: Integer; AStartDateTime, aEndDateTime: TDateTime);
aEndDateTime: TDateTime);
begin begin
if Assigned(OnSetFilterCriteria) then if Assigned(OnSetFilterCriteria) then
OnSetFilterCriteria(aTable, aUseDateTime, aResourceID, OnSetFilterCriteria(ATable, AUseDateTime, AResourceID,
aStartDateTime, aEndDateTime) AStartDateTime, AEndDateTime)
else else
inherited; inherited;
end; end;

View File

@ -82,6 +82,16 @@ resourcestring
RSPhoneTypeLabel16 = 'Work'; RSPhoneTypeLabel16 = 'Work';
RSPhoneTypeLabel17 = 'Work fax'; RSPhoneTypeLabel17 = 'Work fax';
RSHomeAddressLabel = 'Home';
RSWorkAddressLabel = 'Work';
RSHomeEmailLabel = 'Home';
RSWorkEMailLabel = 'Work';
RSOtherEMaillabel = 'Other';
RSPersonalWebSiteLabel = 'Personal';
RSBusinessWebSiteLabel = 'Business';
RSCategoryLabel1 = 'Business'; RSCategoryLabel1 = 'Business';
RSCategoryLabel2 = 'Clients'; RSCategoryLabel2 = 'Clients';
RSCategoryLabel3 = 'Family'; RSCategoryLabel3 = 'Family';

View File

@ -38,20 +38,46 @@ interface
{$I vpsr.inc} {$I vpsr.inc}
type type
{ For acquiring the labels that go with each telephone field } // For acquiring the labels that go with each telephone field, i.e. Home, work, fax etc... }
{ ie. Home, work, fax etc... }
TVpPhoneType = (ptAssistant, ptCallback, ptCar, ptCompany, ptHome, ptHomeFax, TVpPhoneType = (ptAssistant, ptCallback, ptCar, ptCompany, ptHome, ptHomeFax,
ptISDN, ptMobile, ptOther, ptOtherFax, ptPager, ptPrimary, ptISDN, ptMobile, ptOther, ptOtherFax, ptPager, ptPrimary,
ptRadio, ptTelex, ptTTYTDD, ptWork, ptWorkFax); ptRadio, ptTelex, ptTTYTDD, ptWork, ptWorkFax);
TVpEMailType = (mtHome, mtOther, mtWork);
TVpWebSiteType = (wtBusiness, wtPersonal);
TVpAddressType = (atHome, atWork);
TVpCategoryType = (ctBusiness, ctClients, ctFamily, ctOther, ctPersonal); TVpCategoryType = (ctBusiness, ctClients, ctFamily, ctOther, ctPersonal);
function PhoneLabel (PhoneType : TVpPhoneType) : string; function AddressLabel(AddressType: TVpAddressType): String;
function EMailLabel(EMailType: TVpEMailType): string;
function CategoryLabel (CategoryType : TVpCategoryType) : string; function PhoneLabel(PhoneType: TVpPhoneType): string;
function WebSiteLabel(WebSiteType: TVpWebSiteType): String;
function CategoryLabel(CategoryType: TVpCategoryType): string;
implementation implementation
function AddressLabel(AddressType: TVpAddressType): String;
begin
Result := '';
case AddressType of
atWork : Result := RSWorkAddressLabel;
atHome : Result := RSHomeAddressLabel;
end;
end;
function EMailLabel(EmailType: TVpEmaiLType): String;
begin
Result := '';
case EMailType of
mtHome : Result := RSHomeEMailLabel;
mtOther : Result := RSOtherEMailLabel;
mtWork : Result := RSWorkEMailLabel;
end;
end;
function PhoneLabel(PhoneType: TVpPhoneType): string; function PhoneLabel(PhoneType: TVpPhoneType): string;
begin begin
Result := ''; Result := '';
@ -76,7 +102,16 @@ begin
end; end;
end; end;
function CategoryLabel (CategoryType : TVpCategoryType) : string; function WebSiteLabel(WebsiteType: TVpWebsiteType): String;
begin
Result := '';
case WebsiteType of
wtBusiness : Result := RSBusinessWebSiteLabel;
wtPersonal : Result := RSPersonalWebsiteLabel;
end;
end;
function CategoryLabel(CategoryType: TVpCategoryType): string;
begin begin
Result := ''; Result := '';
case CategoryType of case CategoryType of