📄 fcontact.pas
字号:
(*
# (C) Copyright 2003
# Miha Vrhovnik, miha.vrhovnik@cordia.si
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
# The Initial Developer of the Original Code is Miha Vrhovnik (Slovenia).
# Portions created by Miha Vrhovnik are Copyright (c)2003.
# All Rights Reserved.
#==============================================================================
# Contributor(s):
#==============================================================================
# History: see whats new.txt from distribution package
#==============================================================================
*)
unit fContact;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, GR32_Image, StdCtrls, ExtDlgs, XPMenu, ExtCtrls, ComCtrls,
Buttons, VirtualTrees, OmniXMLConf, addrBk, MFEdit, Mask, VSTEdit, ActnList,
ImgList, StrUtils;
type
TfrmContact = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Panel1: TPanel;
cmdOK: TButton;
cmdCancel: TButton;
diOpenPicture: TOpenPictureDialog;
GroupBox1: TGroupBox;
imgAuthor: TImage32;
Label8: TLabel;
txtFirstName: TEdit;
Label24: TLabel;
txtMiddleName: TEdit;
Label10: TLabel;
txtLastName: TEdit;
Label23: TLabel;
txtNickname: TEdit;
cmdPicture: TButton;
Label1: TLabel;
cmboxGender: TComboBox;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Label2: TLabel;
txtHomeTelephone: TEdit;
Label3: TLabel;
txtHomeMobile: TEdit;
Label7: TLabel;
txtHomeFax: TEdit;
Label6: TLabel;
txtHomePager: TEdit;
dtBirthday: TDateTimePicker;
Label13: TLabel;
dtAnniversary: TDateTimePicker;
Label14: TLabel;
Label9: TLabel;
Label11: TLabel;
txtHomeZIP: TEdit;
Label12: TLabel;
txtHomeState: TEdit;
Label5: TLabel;
txtHomeHomepage: TEdit;
txtCustom1: TEdit;
txtCustom2: TEdit;
txtCustomLabel1: TEdit;
txtCustomLabel2: TEdit;
txtWorkDepartment: TEdit;
txtWorkJobTitle: TEdit;
txtWorkCompany: TEdit;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label20: TLabel;
txtWorkExtension: TEdit;
txtHomeCountry: TEdit;
Label28: TLabel;
diOpen: TOpenDialog;
TabSheet6: TTabSheet;
txtNotes: TMemo;
Label15: TLabel;
Label19: TLabel;
txtWorkTelephone: TEdit;
Label21: TLabel;
txtWorkMobile: TEdit;
Label22: TLabel;
txtWorkFax: TEdit;
Label25: TLabel;
txtWorkPager: TEdit;
Label26: TLabel;
Label27: TLabel;
txtWorkZIP: TEdit;
Label31: TLabel;
txtWorkState: TEdit;
Label32: TLabel;
txtWorkCountry: TEdit;
Label33: TLabel;
txtWorkHomepage: TEdit;
Label34: TLabel;
txtHomeExtension: TEdit;
lstChat: TVirtualStringTree;
Label4: TLabel;
txtEmails: TMemo;
Label35: TLabel;
Label36: TLabel;
cmdChatNew: TButton;
cmdChatDelete: TButton;
txtCustomLabel3: TEdit;
txtCustom3: TEdit;
Certificates: TTabSheet;
Label29: TLabel;
cmboxEmail: TComboBox;
Label30: TLabel;
lstCert: TVirtualStringTree;
cmdCertRemove: TButton;
cmdCertDefault: TButton;
cmdCertImport: TButton;
cmdCertExport: TButton;
cmdCertProperties: TButton;
imgPerson: TImage32;
ActionList1: TActionList;
actCertImport: TAction;
actCertProperties: TAction;
actCertRemove: TAction;
actCertSetAsDefault: TAction;
actCertExport: TAction;
actPersNew: TAction;
actPersDelete: TAction;
txtHomeStreet: TMemo;
txtWorkStreet: TMemo;
txtCustom4: TEdit;
txtCustomLabel4: TEdit;
txtChatId: TMFEdit;
editorChat: TVSTEditor;
cmboxChatApp: TMFComboEdit;
ilChat: TImageList;
lblClearPicture: TLabel;
procedure FormShow(Sender: TObject);
procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
procedure FormHide(Sender: TObject);
procedure cmdCancelClick(Sender: TObject);
procedure cmdOKClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure actPersDeleteUpdate(Sender: TObject);
procedure lstChatGetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
procedure lstChatClick(Sender: TObject);
procedure lstChatCreateEditor(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);
procedure lstChatEditing(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; var Allowed: Boolean);
procedure lstChatEdited(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex);
procedure lstChatGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
procedure actPersNewExecute(Sender: TObject);
procedure actPersDeleteExecute(Sender: TObject);
procedure lstChatAfterCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellRect: TRect);
procedure cmdPictureClick(Sender: TObject);
procedure lblClearPictureClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FScheduleAsNew: Boolean;
FPerson: TPerson;
FAddressBook: TAddressBook;
pictureFileName: String;
deleteOldPicture: Boolean;
procedure emailListRemoveEmptyLines;
{ Private declarations }
public
{ Public declarations }
procedure LoadPerson;
procedure SavePerson;
published
property ScheduleAsNew: Boolean read FScheduleAsNew write FScheduleAsNew;
property AddressBook: TAddressBook read FAddressBook write FAddressBook;
property Person: TPerson read FPerson write FPerson;
end;
var
frmContact: TfrmContact;
implementation
uses
fMain, mailBox, addrBk_frm, gnugettext, defFldrs;
type TTreeChat = record
app: String;
id: String;
end;
type PTreeChat = ^TTreeChat;
{$R *.dfm}
procedure TfrmContact.FormShow(Sender: TObject);
begin
//translate me
TranslateComponent(Self);
PageControl1.ActivePageIndex := 0;
//read self position & size
frmMailbox.Profile.Config.ReadControlSettings(Self);
deleteOldPicture := False;
LoadPerson;
end;
procedure TfrmContact.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
if msg.CharCode = 27 then begin
Self.Close;
Handled := True;
end;
end;
procedure TfrmContact.FormHide(Sender: TObject);
begin
//write self position & size
frmMailbox.Profile.Config.WriteControlSettings(Self);
end;
procedure TfrmContact.cmdCancelClick(Sender: TObject);
begin
Self.Close;
end;
procedure TfrmContact.LoadPerson;
var i, j: Integer;
begin
pictureFileName := '';
if ScheduleAsNew then begin //clear me
Self.Caption := _('Contact info') + ' - ' + _('[Add]');
//clear TEdit
for j := 0 to PageControl1.PageCount - 1 do begin
for i := 0 to PageControl1.Pages[j].ControlCount - 1 do begin
if PageControl1.Pages[j].Controls[i] is TEdit then
(PageControl1.Pages[j].Controls[i] as TEdit).Text := '';
end;
end;
//general tab
cmboxGender.ItemIndex := 0;
txtEmails.Clear;
imgPerson.Bitmap := imgAuthor.Bitmap;
//certificates tab
lstCert.Clear;
cmboxEmail.Clear;
//personal tab
dtBirthday.DateTime := Now;
dtBirthday.Checked := False;
dtAnniversary.DateTime := Now;
dtAnniversary.Checked := False;
txtCustomLabel1.Text := Format(_('Custom field %d'), [1]);
txtCustomLabel2.Text := Format(_('Custom field %d'), [2]);
txtCustomLabel3.Text := Format(_('Custom field %d'), [3]);
txtCustomLabel4.Text := Format(_('Custom field %d'), [4]);
lstChat.Clear;
//work tab
txtWorkStreet.Clear;
//home tab
txtHomeStreet.Clear;
//notes tab
txtNotes.Clear;
end
else begin //load me
Self.Caption := _('Contact info') + ' - ' + _('[Edit]');
with FPerson do begin
//general tab
txtFirstName.Text := General.FirstName;
txtMiddleName.Text := General.MiddleName;
txtLastName.Text := General.LastName;
txtNickname.Text := General.NickName;
cmboxGender.ItemIndex := Integer(General.Gender);
if General.PhotoName <> '' then begin
try
imgPerson.Bitmap.LoadFromFile((AddressBook.Collection as TAddressBooks).PicturesPath + General.PhotoName);
except
imgPerson.Bitmap := imgAuthor.Bitmap;
end;
end
else imgPerson.Bitmap := imgAuthor.Bitmap;
txtEmails.Clear;
for i := 0 to Emails.Count - 1 do
txtEmails.Lines.Add(Emails.Emails[i].Email);
//certificates tab
lstCert.Clear;
cmboxEmail.Clear;
//personal tab
if Personal.Birthday = 0 then begin
dtBirthday.Date := Now;
dtBirthday.Checked := False;
end
else begin
dtBirthday.Date := Personal.Birthday;
dtBirthday.Checked := True;
end;
if Personal.Anniversary = 0 then begin
dtAnniversary.Date := Now;
dtAnniversary.Checked := False;
end
else begin
dtAnniversary.Date := Personal.Anniversary;
dtAnniversary.Checked := True;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -