tvplanit: In contact editor, split combined name field into separate fields for first and last names

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4857 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-06-28 19:50:19 +00:00
parent e575855f93
commit f2d0a36d2a
7 changed files with 173 additions and 121 deletions

View File

@ -402,7 +402,7 @@ msgid "Event"
msgstr "Ereignis"
#: vpsr.rsdlgprintpreview
msgid "Print Preview"
msgid "Print preview"
msgstr "Druckvorschau"
#: vpsr.rsdlgreseditcaption
@ -443,8 +443,8 @@ msgid "E-Mail"
msgstr "E-Mail"
#: vpsr.rsendtimelbl
msgid "End Time:"
msgstr "Ende-Zeit"
msgid "End time:"
msgstr "Ende-Zeit:"
#: vpsr.rsexclusiveeventconflict
msgid "Conflicts with another exclusive event."
@ -471,6 +471,10 @@ msgctxt "vpsr.rsfalse"
msgid "F"
msgstr "F"
#: vpsr.rsfirstnamelbl
msgid "First name:"
msgstr "Vorname:"
#: vpsr.rsfriday
msgid "Friday"
msgstr "Freitag"
@ -518,7 +522,7 @@ msgstr "Stunden"
#: vpsr.rsinifilestructure
msgid "Incorrect structure of ini file."
msgstr ""
msgstr "Falscher Aufbau der ini-Datei"
#: vpsr.rsintervallbl
msgid "Interval (days):"
@ -548,6 +552,10 @@ msgstr "Fehler: Ungültige Tabelle angegeben."
msgid "Error: Invalid Year."
msgstr "Fehler: Ungültiges Jahr"
#: vpsr.rslastnamelbl
msgid "Last name:"
msgstr "Nachname:"
#: vpsr.rslfriday
msgctxt "vpsr.rslfriday"
msgid "F"
@ -642,10 +650,6 @@ msgstr "Heute"
msgid "Error: Name cannot be empty."
msgstr "Fehler: Name muss angegeben sein."
#: vpsr.rsnamelbl
msgid "Name:"
msgstr "Name:"
#: vpsr.rsneedelementname
msgid "Please supply an Element Name"
msgstr "Bitte geben Sie einen Element-Namen an."
@ -874,11 +878,11 @@ msgid "Print controller is not owned by a TVpControlLink!"
msgstr "Print Controll hat nicht TVpControlLink als Owner"
#: vpsr.rsrecurrenceendslbl
msgid "Repeat Until:"
msgid "Repeat until:"
msgstr "Wiederholen bis:"
#: vpsr.rsrecurringlbl
msgid "Appointment Recurrence:"
msgid "Appointment recurrence:"
msgstr "Termin-Wiederholung:"
#: vpsr.rsreminder
@ -918,8 +922,8 @@ msgid "Error: Unable to update "
msgstr "Fehler: Kann nicht updaten"
#: vpsr.rsstarttimelbl
msgid "Start Time:"
msgstr "Start-Zeit"
msgid "Start time:"
msgstr "Start-Zeit:"
#: vpsr.rsstatelbl
msgid "State:"
@ -1091,7 +1095,7 @@ msgid "Y"
msgstr "Y"
#: vpsr.rszipcodelbl
msgid "Zip Code:"
msgid "Zip code:"
msgstr "Postleitzahl:"
#: vpsr.sallocsrcmemfailed
@ -1377,4 +1381,3 @@ msgstr "Unbekannte Achsen-Spezifikation: %s"
#: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element"
msgstr "Die XML-Deklaration muss vor dem ersten Element erscheinen."

View File

@ -392,7 +392,7 @@ msgid "Event"
msgstr ""
#: vpsr.rsdlgprintpreview
msgid "Print Preview"
msgid "Print preview"
msgstr ""
#: vpsr.rsdlgreseditcaption
@ -433,7 +433,7 @@ msgid "E-Mail"
msgstr ""
#: vpsr.rsendtimelbl
msgid "End Time:"
msgid "End time:"
msgstr ""
#: vpsr.rsexclusiveeventconflict
@ -461,6 +461,10 @@ msgctxt "vpsr.rsfalse"
msgid "F"
msgstr ""
#: vpsr.rsfirstnamelbl
msgid "First name:"
msgstr ""
#: vpsr.rsfriday
msgid "Friday"
msgstr ""
@ -538,6 +542,10 @@ msgstr ""
msgid "Error: Invalid Year."
msgstr ""
#: vpsr.rslastnamelbl
msgid "Last name:"
msgstr ""
#: vpsr.rslfriday
msgctxt "vpsr.rslfriday"
msgid "F"
@ -632,10 +640,6 @@ msgstr ""
msgid "Error: Name cannot be empty."
msgstr ""
#: vpsr.rsnamelbl
msgid "Name:"
msgstr ""
#: vpsr.rsneedelementname
msgid "Please supply an Element Name"
msgstr ""
@ -864,11 +868,11 @@ msgid "Print controller is not owned by a TVpControlLink!"
msgstr ""
#: vpsr.rsrecurrenceendslbl
msgid "Repeat Until:"
msgid "Repeat until:"
msgstr ""
#: vpsr.rsrecurringlbl
msgid "Appointment Recurrence:"
msgid "Appointment recurrence:"
msgstr ""
#: vpsr.rsreminder
@ -908,7 +912,7 @@ msgid "Error: Unable to update "
msgstr ""
#: vpsr.rsstarttimelbl
msgid "Start Time:"
msgid "Start time:"
msgstr ""
#: vpsr.rsstatelbl
@ -1081,7 +1085,7 @@ msgid "Y"
msgstr ""
#: vpsr.rszipcodelbl
msgid "Zip Code:"
msgid "Zip code:"
msgstr ""
#: vpsr.sallocsrcmemfailed

View File

@ -402,7 +402,9 @@ msgid "Event"
msgstr "Событие"
#: vpsr.rsdlgprintpreview
msgid "Print Preview"
#, fuzzy
#| msgid "Print Preview"
msgid "Print preview"
msgstr "Предварительный просмотр печати"
#: vpsr.rsdlgreseditcaption
@ -443,7 +445,9 @@ msgid "E-Mail"
msgstr "Электронная почта"
#: vpsr.rsendtimelbl
msgid "End Time:"
#, fuzzy
#| msgid "End Time:"
msgid "End time:"
msgstr "Время окончания:"
#: vpsr.rsexclusiveeventconflict
@ -471,6 +475,10 @@ msgctxt "vpsr.rsfalse"
msgid "F"
msgstr ""
#: vpsr.rsfirstnamelbl
msgid "First name:"
msgstr ""
#: vpsr.rsfriday
msgid "Friday"
msgstr "Пятница"
@ -548,6 +556,10 @@ msgstr "Ошибка: Не верное определение таблицы."
msgid "Error: Invalid Year."
msgstr "Ошибка: Не верный год."
#: vpsr.rslastnamelbl
msgid "Last name:"
msgstr ""
#: vpsr.rslfriday
msgctxt "vpsr.rslfriday"
msgid "F"
@ -642,10 +654,6 @@ msgstr "Сегодня"
msgid "Error: Name cannot be empty."
msgstr "Ошибка: Имя не может быть пустым."
#: vpsr.rsnamelbl
msgid "Name:"
msgstr "Имя:"
#: vpsr.rsneedelementname
msgid "Please supply an Element Name"
msgstr ""
@ -884,11 +892,13 @@ msgid "Print controller is not owned by a TVpControlLink!"
msgstr ""
#: vpsr.rsrecurrenceendslbl
msgid "Repeat Until:"
#, fuzzy
#| msgid "Repeat Until:"
msgid "Repeat until:"
msgstr "Повторять до:"
#: vpsr.rsrecurringlbl
msgid "Appointment Recurrence:"
msgid "Appointment recurrence:"
msgstr ""
#: vpsr.rsreminder
@ -928,7 +938,9 @@ msgid "Error: Unable to update "
msgstr "Ошибка обновления"
#: vpsr.rsstarttimelbl
msgid "Start Time:"
#, fuzzy
#| msgid "Start Time:"
msgid "Start time:"
msgstr "Время начала:"
#: vpsr.rsstatelbl
@ -1101,7 +1113,9 @@ msgid "Y"
msgstr ""
#: vpsr.rszipcodelbl
msgid "Zip Code:"
#, fuzzy
#| msgid "Zip Code:"
msgid "Zip code:"
msgstr "Почтовый индекс:"
#: vpsr.sallocsrcmemfailed

View File

@ -1,13 +1,13 @@
object ContactEditForm: TContactEditForm
Left = 311
Height = 320
Height = 355
Top = 245
Width = 433
HorzScrollBar.Page = 432
VertScrollBar.Page = 320
ActiveControl = tsContacts
Caption = 'ContactEdit'
ClientHeight = 320
ClientHeight = 355
ClientWidth = 433
OnCreate = FormCreate
OnKeyDown = FormKeyDown
@ -16,7 +16,7 @@ object ContactEditForm: TContactEditForm
LCLVersion = '1.7'
object tsContacts: TPageControl
Left = 0
Height = 279
Height = 314
Top = 0
Width = 433
ActivePage = tabMain
@ -26,23 +26,23 @@ object ContactEditForm: TContactEditForm
OnChange = tsContactsChange
object tabMain: TTabSheet
Caption = 'RSMasterData'
ClientHeight = 251
ClientHeight = 286
ClientWidth = 425
object NameLbl: TLabel
object LastNameLbl: TLabel
Left = 8
Height = 16
Top = 6
Width = 127
Alignment = taRightJustify
AutoSize = False
Caption = 'Name'
FocusControl = NameEdit
Caption = 'Last name'
FocusControl = LastNameEdit
ParentColor = False
end
object AddrLbl: TLabel
Left = 8
Height = 16
Top = 54
Top = 81
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -53,7 +53,7 @@ object ContactEditForm: TContactEditForm
object CityLbl: TLabel
Left = 8
Height = 16
Top = 78
Top = 105
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -64,7 +64,7 @@ object ContactEditForm: TContactEditForm
object StateLbl: TLabel
Left = 8
Height = 16
Top = 102
Top = 129
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -75,7 +75,7 @@ object ContactEditForm: TContactEditForm
object ZipLbl: TLabel
Left = 8
Height = 16
Top = 126
Top = 153
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -86,7 +86,7 @@ object ContactEditForm: TContactEditForm
object CountryLbl: TLabel
Left = 8
Height = 16
Top = 150
Top = 177
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -97,7 +97,7 @@ object ContactEditForm: TContactEditForm
object PositionLbl: TLabel
Left = 8
Height = 16
Top = 199
Top = 226
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -108,7 +108,7 @@ object ContactEditForm: TContactEditForm
object TitleLbl: TLabel
Left = 8
Height = 16
Top = 31
Top = 58
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -119,7 +119,7 @@ object ContactEditForm: TContactEditForm
object CompanyLbl: TLabel
Left = 8
Height = 16
Top = 175
Top = 202
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -130,7 +130,7 @@ object ContactEditForm: TContactEditForm
object CategoryLbl: TLabel
Left = 8
Height = 16
Top = 226
Top = 253
Width = 127
Alignment = taRightJustify
AutoSize = False
@ -138,10 +138,10 @@ object ContactEditForm: TContactEditForm
FocusControl = cboxCategory
ParentColor = False
end
object NameEdit: TEdit
object LastNameEdit: TEdit
Left = 136
Height = 23
Top = 4
Top = 6
Width = 247
MaxLength = 100
OnChange = ItemChanged
@ -150,96 +150,96 @@ object ContactEditForm: TContactEditForm
object AddressEdit: TEdit
Left = 136
Height = 23
Top = 52
Top = 79
Width = 247
MaxLength = 100
OnChange = ItemChanged
TabOrder = 2
TabOrder = 3
end
object CityEdit: TEdit
Left = 136
Height = 23
Top = 76
Top = 103
Width = 247
MaxLength = 50
OnChange = ItemChanged
TabOrder = 3
TabOrder = 4
end
object StateEdit: TEdit
Left = 168
Height = 23
Top = 100
Top = 127
Width = 247
MaxLength = 25
OnChange = ItemChanged
TabOrder = 5
TabOrder = 6
end
object ZipCodeEdit: TEdit
Left = 136
Height = 23
Top = 124
Top = 151
Width = 121
MaxLength = 10
OnChange = ItemChanged
TabOrder = 6
TabOrder = 7
end
object PositionEdit: TEdit
Left = 136
Height = 23
Top = 197
Top = 224
Width = 121
MaxLength = 50
OnChange = ItemChanged
TabOrder = 11
end
object TitleEdit: TEdit
Left = 136
Height = 23
Top = 56
Width = 121
MaxLength = 50
OnChange = ItemChanged
TabOrder = 2
end
object CompanyEdit: TEdit
Left = 136
Height = 23
Top = 200
Width = 121
MaxLength = 50
OnChange = ItemChanged
TabOrder = 10
end
object TitleEdit: TEdit
Left = 136
Height = 23
Top = 29
Width = 121
MaxLength = 50
OnChange = ItemChanged
TabOrder = 1
end
object CompanyEdit: TEdit
Left = 136
Height = 23
Top = 173
Width = 121
MaxLength = 50
OnChange = ItemChanged
TabOrder = 9
end
object cboxCategory: TComboBox
Left = 136
Height = 23
Top = 224
Top = 251
Width = 121
ItemHeight = 15
MaxLength = 65535
TabOrder = 11
TabOrder = 12
end
object cboxState: TComboBox
Left = 136
Height = 23
Top = 100
Top = 127
Width = 249
ItemHeight = 15
MaxLength = 65535
TabOrder = 4
TabOrder = 5
Visible = False
end
object edtCountry: TEdit
Left = 152
Height = 23
Top = 148
Top = 175
Width = 249
TabOrder = 8
TabOrder = 9
end
object cboxCountry: TComboBox
Left = 136
Height = 21
Top = 148
Top = 175
Width = 249
Font.Height = -11
Font.Name = 'MS Sans Serif'
@ -247,7 +247,27 @@ object ContactEditForm: TContactEditForm
MaxLength = 65535
OnChange = cboxCountryChange
ParentFont = False
TabOrder = 7
TabOrder = 8
end
object FirstNameEdit: TEdit
Left = 136
Height = 23
Top = 29
Width = 247
MaxLength = 100
OnChange = ItemChanged
TabOrder = 1
end
object FirstNameLbl: TLabel
Left = 8
Height = 16
Top = 31
Width = 127
Alignment = taRightJustify
AutoSize = False
Caption = 'First name'
FocusControl = FirstNameEdit
ParentColor = False
end
end
object tabContact: TTabSheet
@ -456,7 +476,7 @@ object ContactEditForm: TContactEditForm
object pnlBottom: TPanel
Left = 0
Height = 41
Top = 279
Top = 314
Width = 433
Align = alBottom
BevelOuter = bvNone

View File

@ -47,10 +47,14 @@ type
{ forward declarations }
TVpContactEditDialog = class;
{ TContactEditForm }
TContactEditForm = class(TForm)
FirstNameEdit: TEdit;
FirstNameLbl: TLabel;
tsContacts: TPageControl;
tabMain: TTabSheet;
NameLbl: TLabel;
LastNameLbl: TLabel;
AddrLbl: TLabel;
CityLbl: TLabel;
StateLbl: TLabel;
@ -59,7 +63,7 @@ type
PositionLbl: TLabel;
TitleLbl: TLabel;
CompanyLbl: TLabel;
NameEdit: TEdit;
LastNameEdit: TEdit;
AddressEdit: TEdit;
CityEdit: TEdit;
StateEdit: TEdit;
@ -176,7 +180,8 @@ begin
OkBtn.Caption := RSOKBtn;
CancelBtn.Caption := RSCancelBtn;
NameLbl.Caption := RSNameLbl;
LastNameLbl.Caption := RSLastNameLbl;
FirstNameLbl.Caption := RSFirstNameLbl;
TitleLbl.Caption := RSTitleLbl;
AddrLbl.Caption := RSAddressLbl;
CityLbl.Caption := RSCityLbl;
@ -196,7 +201,7 @@ end;
procedure TContactEditForm.OKBtnClick(Sender: TObject);
begin
if NameEdit.Text = '' then begin
if LastNameEdit.Text = '' then begin
raise EVpContactEditError.Create(RSNameIsRequired);
exit;
end;
@ -214,7 +219,9 @@ end;
procedure TContactEditForm.DePopulateSelf;
begin
ParseName(Contact, NameEdit.Text);
// ParseName(Contact, LastNameEdit.Text);
Contact.LastName := LastNameEdit.Text;
Contact.FirstName := FirstNameEdit.Text;
Contact.Address := AddressEdit.Text;
Contact.City := CityEdit.Text;
if cboxState.Visible then
@ -259,7 +266,8 @@ var
ct: TVpCategoryType;
begin
NameEdit.Text := AssembleName(Contact);
LastNameEdit.Text := Contact.LastName;
FirstNameEdit.Text := Contact.FirstName; //AssembleName(Contact);
AddressEdit.Text := Contact.Address;
CityEdit.Text := Contact.City;
ZipCodeEdit.Text := Contact.Zip;
@ -321,13 +329,13 @@ procedure TContactEditForm.ItemChanged(Sender: TObject);
begin
Contact.Changed := true;
{ if there is a comma in the nameedit, then it is assumed that the name is }
{ if there is a comma in the LastNameEdit, then it is assumed that the name is }
{ formatted as last, first. Since the comma & space aren't actually part of }
{ the name, we need to allow two extra characters in the namefield's width. }
if Pos(',', NameEdit.Text) > 0 then
NameEdit.MaxLength := 102
if Pos(',', LastNameEdit.Text) > 0 then
LastNameEdit.MaxLength := 102
else
NameEdit.MaxLength := 100;
LastNameEdit.MaxLength := 100;
end;
{=====}
@ -369,7 +377,7 @@ const
TopField = 8;
type
TLabelArray = array[0..9] of TLabel;
TLabelArray = array[0..10] of TLabel;
var
Labels: TLabelArray;
@ -384,16 +392,17 @@ begin
{ Note: The resizing algorithm is dependent upon the labels having their
FocusControl property set to the corresponding edit field or combobox. }
Labels[0] := NameLbl;
Labels[1] := TitleLbl;
Labels[2] := AddrLbl;
Labels[3] := CityLbl;
Labels[4] := StateLbl;
Labels[5] := ZipLbl;
Labels[6] := CountryLbl;
Labels[7] := CompanyLbl;
Labels[8] := PositionLbl;
Labels[9] := CategoryLbl;
Labels[0] := LastNameLbl;
Labels[1] := FirstNameLbl;
Labels[2] := TitleLbl;
Labels[3] := AddrLbl;
Labels[4] := CityLbl;
Labels[5] := StateLbl;
Labels[6] := ZipLbl;
Labels[7] := CountryLbl;
Labels[8] := CompanyLbl;
Labels[9] := PositionLbl;
Labels[10] := CategoryLbl;
LargestLabel := 0;
for i := Low(Labels) to High(Labels) do
@ -403,14 +412,14 @@ begin
in effect. }
for i := Low(Labels) to High(Labels) do begin
Labels[i].Width := LargestLabel;
Labels[i].FocusControl.Left := NameLbl.Left + LargestLabel + 4;
Labels[i].FocusControl.Left := LastNameLbl.Left + LargestLabel + 4;
end;
if cboxCountry.Visible then begin
WidestField := 0;
OldFont := TFont.Create;
try
Canvas.Font.Assign (cboxCountry.Font);
Canvas.Font.Assign(cboxCountry.Font);
try
for j := 0 to cboxCountry.Items.Count - 1 do begin
i := Canvas.TextWidth(cboxCountry.Items[j]);
@ -575,6 +584,7 @@ begin
end;
ResizeControls;
end;
{=====}
procedure TContactEditForm.cboxCountryChange(Sender: TObject);
@ -653,7 +663,7 @@ procedure TContactEditForm.tsContactsChange(Sender: TObject);
begin
if Visible then
if tsContacts.ActivePage = tabMain then
NameEdit.SetFocus
LastNameEdit.SetFocus
else if tsContacts.ActivePage = tabContact then
Phone1Edit.SetFocus
else if tsContacts.ActivePage = tabCustom then
@ -666,7 +676,7 @@ end;
procedure TContactEditForm.FormShow(Sender: TObject);
begin
if tsContacts.ActivePage = tabMain then
NameEdit.SetFocus;
LastNameEdit.SetFocus;
end;
{=====}

View File

@ -1042,7 +1042,7 @@ begin
end
else begin
if ALevel = 0 then
{ don't draw the gutter in the EventRest for level 0 events. }
{ don't draw the gutter in the EventRect for level 0 events. }
TPSTextOut(RenderCanvas, // wp: both cases are the same ?!
Angle,
RenderIn,

View File

@ -237,30 +237,31 @@ resourcestring
RSDescriptionLbl = 'Subject:';
RSLocationLbl = 'Location:';
RSCategoryLbl = 'Category:';
RSStartTimeLbl = 'Start Time:';
RSEndTimeLbl = 'End Time:';
RSStartTimeLbl = 'Start time:';
RSEndTimeLbl = 'End time:';
RSAlarmSet = '&Reminder';
RSRecurringLbl = 'Appointment Recurrence:';
RSRecurringLbl = 'Appointment recurrence:';
RSIntervalLbl = 'Interval (days):';
RSRecurrenceEndsLbl = 'Repeat Until:';
RSRecurrenceEndsLbl = 'Repeat until:';
RSAllDayEvent = '&All Day Event';
RSNotesLbl = 'Notes:';
{ Contact Edit Dialog Captions }
RSDlgContactEdit = 'Contact';
RSNameLbl = 'Name:';
RSLastNameLbl = 'Last name:';
RSFirstNameLbl = 'First name:';
RSTitleLbl = 'Title:';
RSAddressLbl = 'Address:';
RSCityLbl = 'City:';
RSStateLbl = 'State:';
RSCountryLbl = 'Country:';
RSZipCodeLbl = 'Zip Code:';
RSZipCodeLbl = 'Zip code:';
RSCompanyLbl = 'Company:';
RSPositionLbl = 'Position:';
RSMasterData = 'Master data';
{ Print Preview dialog captions }
RSDlgPrintPreview = 'Print Preview';
RSDlgPrintPreview = 'Print preview';
{ Task Edit Dialog Captions }
RSDlgTaskEdit = 'Task';