home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue28 / vcard / VCARD.ZIP / Demo / vcmain.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1997-10-13  |  13.3 KB  |  496 lines

  1. unit vcmain;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Menus, StdCtrls, ExtCtrls, Msvcard, ComCtrls, Tabnotbk,
  8.   msVCls, ShellAPI;
  9.  
  10. type
  11.   TvCardForm = class(TForm)
  12.     MainMenu1: TMainMenu;
  13.     TabbedNotebook1: TTabbedNotebook;
  14.     Label1: TLabel;
  15.     GivenNameEdit: TEdit;
  16.     Label2: TLabel;
  17.     AdditionalNamesEdit: TEdit;
  18.     Label3: TLabel;
  19.     FamilyNameEdit: TEdit;
  20.     Label4: TLabel;
  21.     Label5: TLabel;
  22.     Bevel1: TBevel;
  23.     PrefixEdit: TEdit;
  24.     SuffixEdit: TEdit;
  25.     Label6: TLabel;
  26.     Label7: TLabel;
  27.     Bevel2: TBevel;
  28.     FormattedNameEdit: TEdit;
  29.     Bevel3: TBevel;
  30.     Label8: TLabel;
  31.     Dom1CheckBox: TCheckBox;
  32.     Intl1CheckBox: TCheckBox;
  33.     Postal1CheckBox: TCheckBox;
  34.     Parcel1CheckBox: TCheckBox;
  35.     Home1CheckBox: TCheckBox;
  36.     Work1CheckBox: TCheckBox;
  37.     Label9: TLabel;
  38.     Label10: TLabel;
  39.     Label11: TLabel;
  40.     Label12: TLabel;
  41.     Label13: TLabel;
  42.     POAddress1Edit: TEdit;
  43.     ExtendedAddress1Edit: TEdit;
  44.     Street1Edit: TEdit;
  45.     Locality1Edit: TEdit;
  46.     Region1Edit: TEdit;
  47.     Label14: TLabel;
  48.     PostalCode1Edit: TEdit;
  49.     Label15: TLabel;
  50.     Country1Edit: TEdit;
  51.     Dom2CheckBox: TCheckBox;
  52.     Intl2CheckBox: TCheckBox;
  53.     Postal2CheckBox: TCheckBox;
  54.     Parcel2CheckBox: TCheckBox;
  55.     Home2CheckBox: TCheckBox;
  56.     Work2CheckBox: TCheckBox;
  57.     Label16: TLabel;
  58.     POAddress2Edit: TEdit;
  59.     Bevel4: TBevel;
  60.     Label17: TLabel;
  61.     ExtendedAddress2Edit: TEdit;
  62.     Locality2Edit: TEdit;
  63.     Label18: TLabel;
  64.     Street2Edit: TEdit;
  65.     Label19: TLabel;
  66.     Label20: TLabel;
  67.     Region2Edit: TEdit;
  68.     Label21: TLabel;
  69.     PostalCode2Edit: TEdit;
  70.     Label22: TLabel;
  71.     Country2Edit: TEdit;
  72.     Label23: TLabel;
  73.     Bevel5: TBevel;
  74.     Label24: TLabel;
  75.     Label25: TLabel;
  76.     Label26: TLabel;
  77.     NameEdit: TEdit;
  78.     UnitEdit: TEdit;
  79.     Bevel6: TBevel;
  80.     Label27: TLabel;
  81.     Bevel7: TBevel;
  82.     Label28: TLabel;
  83.     TitleEdit: TEdit;
  84.     RoleEdit: TEdit;
  85.     Bevel8: TBevel;
  86.     Phone1PrefCheckBox: TCheckBox;
  87.     Phone1WorkCheckBox: TCheckBox;
  88.     Phone1HomeCheckBox: TCheckBox;
  89.     Phone1VoiceCheckBox: TCheckBox;
  90.     Phone1MsgCheckBox: TCheckBox;
  91.     Phone1CellCheckBox: TCheckBox;
  92.     Phone1PagerCheckBox: TCheckBox;
  93.     Phone1BBSCheckBox: TCheckBox;
  94.     Phone1ModemCheckBox: TCheckBox;
  95.     Phone1CarCheckBox: TCheckBox;
  96.     Phone1ISDNCheckBox: TCheckBox;
  97.     Phone1FaxCheckBox: TCheckBox;
  98.     Phone1VideoCheckBox: TCheckBox;
  99.     Label29: TLabel;
  100.     Label30: TLabel;
  101.     PhoneNumber1Edit: TEdit;
  102.     Bevel10: TBevel;
  103.     Phone3PrefCheckBox: TCheckBox;
  104.     PhoneNumber3Edit: TEdit;
  105.     Label32: TLabel;
  106.     Phone3WorkCheckBox: TCheckBox;
  107.     Phone3HomeCheckBox: TCheckBox;
  108.     Phone3VoiceCheckBox: TCheckBox;
  109.     Phone3FaxCheckBox: TCheckBox;
  110.     Phone3MsgCheckBox: TCheckBox;
  111.     Phone3CellCheckBox: TCheckBox;
  112.     Phone3PagerCheckBox: TCheckBox;
  113.     Phone3BBSCheckBox: TCheckBox;
  114.     Phone3ModemCheckBox: TCheckBox;
  115.     Phone3CarCheckBox: TCheckBox;
  116.     Phone3ISDNCheckBox: TCheckBox;
  117.     Phone3VideoCheckBox: TCheckBox;
  118.     Bevel9: TBevel;
  119.     Phone2PrefCheckBox: TCheckBox;
  120.     PhoneNumber2Edit: TEdit;
  121.     Label33: TLabel;
  122.     Phone2WorkCheckBox: TCheckBox;
  123.     Phone2HomeCheckBox: TCheckBox;
  124.     Phone2VoiceCheckBox: TCheckBox;
  125.     Phone2FaxCheckBox: TCheckBox;
  126.     Phone2MsgCheckBox: TCheckBox;
  127.     Phone2CellCheckBox: TCheckBox;
  128.     Phone2PagerCheckBox: TCheckBox;
  129.     Phone2BBSCheckBox: TCheckBox;
  130.     Phone2ModemCheckBox: TCheckBox;
  131.     Phone2CarCheckBox: TCheckBox;
  132.     Phone2ISDNCheckBox: TCheckBox;
  133.     Phone2VideoCheckBox: TCheckBox;
  134.     Bevel11: TBevel;
  135.     Bevel12: TBevel;
  136.     Label34: TLabel;
  137.     Label35: TLabel;
  138.     Label36: TLabel;
  139.     Label37: TLabel;
  140.     Label38: TLabel;
  141.     Label39: TLabel;
  142.     Email1ComboBox: TComboBox;
  143.     Email1Edit: TEdit;
  144.     Label40: TLabel;
  145.     Label41: TLabel;
  146.     Email2ComboBox: TComboBox;
  147.     Email2Edit: TEdit;
  148.     Bevel13: TBevel;
  149.     Label42: TLabel;
  150.     CommentsMemo: TMemo;
  151.     Bevel14: TBevel;
  152.     Bevel15: TBevel;
  153.     URL1Edit: TEdit;
  154.     URL2Edit: TEdit;
  155.     Label43: TLabel;
  156.     Label44: TLabel;
  157.     msVCard1: TmsVCard;
  158.     OpenDialog: TOpenDialog;
  159.     SaveDialog: TSaveDialog;
  160.     File1: TMenuItem;
  161.     Exit1: TMenuItem;
  162.     N1: TMenuItem;
  163.     SaveAs1: TMenuItem;
  164.     Open1: TMenuItem;
  165.     New1: TMenuItem;
  166.     Help1: TMenuItem;
  167.     vCardcomponent1: TMenuItem;
  168.     VisitArGoSofthome1: TMenuItem;
  169.     About1: TMenuItem;
  170.     procedure Exit1Click(Sender: TObject);
  171.     procedure Open1Click(Sender: TObject);
  172.     procedure New1Click(Sender: TObject);
  173.     procedure SaveAs1Click(Sender: TObject);
  174.     procedure About1Click(Sender: TObject);
  175.     procedure VisitArGoSofthome1Click(Sender: TObject);
  176.   private
  177.     { Private declarations }
  178.     procedure Buf2Scr;
  179.     procedure Scr2Buf;
  180.   public
  181.     { Public declarations }
  182.   end;
  183.  
  184. var
  185.   vCardForm: TvCardForm;
  186.  
  187. implementation
  188.  
  189. uses vcabout;
  190.  
  191. {$R *.DFM}
  192.  
  193. procedure TvCardForm.Exit1Click(Sender: TObject);
  194. begin
  195.   Close;
  196. end;
  197.  
  198. procedure TvCardForm.Buf2Scr;
  199. var
  200.   CheckBox : TCheckBox;
  201.   i : TmsAddressType;
  202.   j : TmsPhoneType;
  203. begin
  204.   with msVCard1 do
  205.   begin
  206.     with Identification do
  207.     begin
  208.       with Name do
  209.       begin
  210.         FamilyNameEdit.Text:=FamilyName;
  211.         GivenNameEdit.Text:=GivenName;
  212.         AdditionalNamesEdit.Text:=AdditionalNames;
  213.         PrefixEdit.Text:=Prefix;
  214.         SuffixEdit.Text:=Suffix;
  215.       end;
  216.       FormattedNameEdit.Text:=FormattedName;
  217.     end;
  218.     with DeliveryInfo do
  219.     begin
  220.       with Address1 do
  221.       begin
  222.         for i:=msaDomestic to msaWork do
  223.         begin
  224.           CheckBox:=TCheckBox(Owner.FindComponent(Concat(AddressStrings[i],'1','CheckBox')));
  225.           if CheckBox<>nil then
  226.               CheckBox.Checked:=i in Attributes
  227.           else
  228.             ShowMessage(AddressStrings[i]);
  229.         end;
  230.         POAddress1Edit.Text:=POAddress;
  231.         ExtendedAddress1Edit.Text:=ExtendedAddress;
  232.         Street1Edit.Text:=Street;
  233.         Locality1Edit.Text:=Locality;
  234.         Region1Edit.Text:=Region;
  235.         PostalCode1Edit.Text:=PostalCode;
  236.         Country1Edit.Text:=Country;
  237.       end;
  238.       with Address2 do
  239.       begin
  240.         for i:=msaDomestic to msaWork do
  241.         begin
  242.           CheckBox:=TCheckBox(Owner.FindComponent(Concat(AddressStrings[i],'2','CheckBox')));
  243.           if CheckBox<>nil then
  244.               CheckBox.Checked:=i in Attributes
  245.           else
  246.             ShowMessage(AddressStrings[i]);
  247.         end;
  248.         POAddress2Edit.Text:=POAddress;
  249.         ExtendedAddress2Edit.Text:=ExtendedAddress;
  250.         Street2Edit.Text:=Street;
  251.         Locality2Edit.Text:=Locality;
  252.         Region2Edit.Text:=Region;
  253.         PostalCode2Edit.Text:=PostalCode;
  254.         Country2Edit.Text:=Country;
  255.       end;
  256.     end;
  257.     with BusinessInfo do
  258.     begin
  259.       with Company do
  260.       begin
  261.         NameEdit.Text:=Name;
  262.         UnitEdit.Text:=AUnit;
  263.       end;
  264.       TitleEdit.Text:=Title;
  265.       RoleEdit.Text:=Role;
  266.     end;
  267.     with TelecomInfo do
  268.     begin
  269.       with Phone1 do
  270.       begin
  271.         for j:=mstPreferred to mstVideo do
  272.         begin
  273.           CheckBox:=TCheckBox(Owner.FindComponent(Concat('Phone1',PhoneStrings[j],'CheckBox')));
  274.           if CheckBox<>nil then
  275.               CheckBox.Checked:=j in Attributes
  276.           else
  277.             ShowMessage(PhoneStrings[j]);
  278.         end;
  279.         PhoneNumber1Edit.Text:=Number;
  280.       end;
  281.       with Phone2 do
  282.       begin
  283.         for j:=mstPreferred to mstVideo do
  284.         begin
  285.           CheckBox:=TCheckBox(Owner.FindComponent(Concat('Phone2',PhoneStrings[j],'CheckBox')));
  286.           if CheckBox<>nil then
  287.               CheckBox.Checked:=j in Attributes
  288.           else
  289.             ShowMessage(PhoneStrings[j]);
  290.         end;
  291.         PhoneNumber2Edit.Text:=Number;
  292.       end;
  293.       with Phone3 do
  294.       begin
  295.         for j:=mstPreferred to mstVideo do
  296.         begin
  297.           CheckBox:=TCheckBox(Owner.FindComponent(Concat('Phone3',PhoneStrings[j],'CheckBox')));
  298.           if CheckBox<>nil then
  299.               CheckBox.Checked:=j in Attributes
  300.           else
  301.             ShowMessage(PhoneStrings[j]);
  302.         end;
  303.         PhoneNumber3Edit.Text:=Number;
  304.       end;
  305.       with EMail1 do
  306.       begin
  307.         EMail1ComboBox.ItemIndex:=Ord(EMailType)-1;
  308.         EMail1Edit.Text:=Address;
  309.       end;
  310.       with EMail2 do
  311.       begin
  312.         EMail2ComboBox.ItemIndex:=Ord(EMailType)-1;
  313.         EMail2Edit.Text:=Address;
  314.       end;
  315.     end;
  316.     with ExplanatoryInfo do
  317.     begin
  318.       CommentsMemo.Lines:=Comment;
  319.       URL1Edit.Text:=URL1;
  320.       URL2Edit.Text:=URL2;
  321.     end;
  322.   end;
  323. end;
  324.  
  325. procedure TvCardForm.Scr2Buf;
  326. var
  327.   i : TmsAddressType;
  328.   AddressAttributes : TmsAddressAttributes;
  329.   j : TmsPhoneType;
  330.   PhoneAttributes : TmsPhoneAttributes;
  331.   CheckBox : TCheckBox;
  332. begin
  333.   with msVCard1 do
  334.   begin
  335.     Clear;
  336.     with Identification do
  337.     begin
  338.       with Name do
  339.       begin
  340.         FamilyName:=FamilyNameEdit.Text;
  341.         GivenName:=GivenNameEdit.Text;
  342.         AdditionalNames:=AdditionalNamesEdit.Text;
  343.         Prefix:=PrefixEdit.Text;
  344.         Suffix:=SuffixEdit.Text;
  345.       end;
  346.       FormattedName:=FormattedNameEdit.Text;
  347.     end;
  348.     with DeliveryInfo do
  349.     begin
  350.       AddressAttributes:=[];
  351.       with Address1 do
  352.       begin
  353.         for i:=msaDomestic to msaWork do
  354.         begin
  355.           CheckBox:=TCheckBox(Owner.FindComponent(Concat(AddressStrings[i],'1','CheckBox')));
  356.           if (CheckBox<>nil) and (CheckBox.Checked) then
  357.             Include(AddressAttributes,i);
  358.         end;
  359.         Attributes:=AddressAttributes;
  360.         POAddress:=POAddress1Edit.Text;
  361.         ExtendedAddress:=ExtendedAddress1Edit.Text;
  362.         Street:=Street1Edit.Text;
  363.         Locality:=Locality1Edit.Text;
  364.         Region:=Region1Edit.Text;
  365.         PostalCode:=PostalCode1Edit.Text;
  366.         Country:=Country1Edit.Text;
  367.       end;
  368.       AddressAttributes:=[];
  369.       with Address2 do
  370.       begin
  371.         for i:=msaDomestic to msaWork do
  372.         begin
  373.           CheckBox:=TCheckBox(Owner.FindComponent(Concat(AddressStrings[i],'2','CheckBox')));
  374.           if (CheckBox<>nil) and (CheckBox.Checked) then
  375.             Include(AddressAttributes,i);
  376.         end;
  377.         Attributes:=AddressAttributes;
  378.         POAddress:=POAddress2Edit.Text;
  379.         ExtendedAddress:=ExtendedAddress2Edit.Text;
  380.         Street:=Street2Edit.Text;
  381.         Locality:=Locality2Edit.Text;
  382.         Region:=Region2Edit.Text;
  383.         PostalCode:=PostalCode2Edit.Text;
  384.         Country:=Country2Edit.Text;
  385.       end;
  386.     end;
  387.     with BusinessInfo do
  388.     begin
  389.       with Company do
  390.       begin
  391.         Name:=NameEdit.Text;
  392.         AUnit:=UnitEdit.Text;
  393.       end;
  394.       Title:=TitleEdit.Text;
  395.       Role:=RoleEdit.Text;
  396.     end;
  397.     with TelecomInfo do
  398.     begin
  399.       PhoneAttributes:=[];
  400.       with Phone1 do
  401.       begin
  402.         for j:=mstPreferred to mstVideo do
  403.         begin
  404.           CheckBox:=TCheckBox(Owner.FindComponent(Concat('Phone1',PhoneStrings[j],'CheckBox')));
  405.           if (CheckBox<>nil) and (CheckBox.Checked) then
  406.             Include(PhoneAttributes,j);
  407.         end;
  408.         Attributes:=PhoneAttributes;
  409.         Number:=PhoneNumber1Edit.Text;
  410.       end;
  411.       PhoneAttributes:=[];
  412.       with Phone2 do
  413.       begin
  414.         for j:=mstPreferred to mstVideo do
  415.         begin
  416.           CheckBox:=TCheckBox(Owner.FindComponent(Concat('Phone2',PhoneStrings[j],'CheckBox')));
  417.           if (CheckBox<>nil) and (CheckBox.Checked) then
  418.             Include(PhoneAttributes,j);
  419.         end;
  420.         Attributes:=PhoneAttributes;
  421.         Number:=PhoneNumber2Edit.Text;
  422.       end;
  423.       PhoneAttributes:=[];
  424.       with Phone3 do
  425.       begin
  426.         for j:=mstPreferred to mstVideo do
  427.         begin
  428.           CheckBox:=TCheckBox(Owner.FindComponent(Concat('Phone3',PhoneStrings[j],'CheckBox')));
  429.           if (CheckBox<>nil) and (CheckBox.Checked) then
  430.             Include(PhoneAttributes,j);
  431.         end;
  432.         Attributes:=PhoneAttributes;
  433.         Number:=PhoneNumber3Edit.Text;
  434.       end;
  435.       with EMail1 do
  436.       begin
  437.         EMailType:=TmsEmailType(Email1ComboBox.ItemIndex+1);
  438.         Address:=Email1Edit.Text;
  439.       end;
  440.       with EMail2 do
  441.       begin
  442.         EMailType:=TmsEmailType(Email2ComboBox.ItemIndex+1);
  443.         Address:=Email2Edit.Text;
  444.       end;
  445.     end;
  446.     with ExplanatoryInfo do
  447.     begin
  448.       Comment:=CommentsMemo.Lines;
  449.       URL1:=URL1Edit.Text;
  450.       URL2:=URL2Edit.Text;
  451.     end;
  452.   end;
  453. end;
  454.  
  455. procedure TvCardForm.Open1Click(Sender: TObject);
  456. begin
  457.   if OpenDialog.Execute then
  458.   begin
  459.     msVCard1.LoadFromFile(OpenDialog.FileName);
  460.     Buf2Scr;
  461.   end;
  462. end;
  463.  
  464. procedure TvCardForm.New1Click(Sender: TObject);
  465. begin
  466.   msVCard1.Clear;
  467.   Buf2Scr;
  468. end;
  469.  
  470. procedure TvCardForm.SaveAs1Click(Sender: TObject);
  471. begin
  472.   if SaveDialog.Execute then
  473.   begin
  474.     Scr2Buf;
  475.     msVCard1.SaveToFile(SaveDialog.FileName);
  476.   end;
  477. end;
  478.  
  479. procedure TvCardForm.About1Click(Sender: TObject);
  480. begin
  481.   with TAboutBox.Create(Self) do
  482.   try
  483.     ShowModal;
  484.   finally
  485.     Free;
  486.   end;
  487. end;
  488.  
  489. procedure TvCardForm.VisitArGoSofthome1Click(Sender: TObject);
  490. begin
  491.   ShellExecute(Handle,'open','http://www.argosoft.com',nil,
  492.     nil,SW_SHOW);
  493. end;
  494.  
  495. end.
  496.