UInfo.pas

Previous  Top  Next

    
 

 

 

Code:

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Alexander Vaga

EMail:        primary:   icq2000cc@hobi.ru

             secondary: alexander_vaga@hotmail.com

Web:          http://icq2000cc.hobi.ru

Creation:     May, 2002

Legal issues: Copyright (C) 2002 by Alexander Vaga

             Kyiv, Ukraine

 

             This software is provided 'as-is', without any express or

             implied warranty.  In no event will the author be held liable

             for any  damages arising from the use of this software.

 

             Permission is granted to anyone to use this software for any

             purpose, including commercial applications, and to alter it

             and redistribute it freely.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

 

unit UInfo;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, ComCtrls, Buttons,

ExtCtrls, Animate,inifiles,

typess,main,util,packet,

AppEvnts;

 

type

TUserInfo = class(TForm)

   UserInfoDoneBtn: TButton;

   UserInfoRetrieveBtn: TButton;

   InfoPage: TPageControl;

   MainTab: TTabSheet;

   HomeTab: TTabSheet;

   MoreTab: TTabSheet;

   WorkTab: TTabSheet;

   InfoAboutTab: TTabSheet;

   Panel1: TPanel;

   UIAnime: TAnimatedImage;

   GroupBox1: TGroupBox;

   Label1: TLabel;

   Label2: TLabel;

   Label6: TLabel;

   Label9: TLabel;

   uinEd: TEdit;

   ipEd: TEdit;

   realipEd: TEdit;

   verEd: TEdit;

   GroupBox2: TGroupBox;

   Label3: TLabel;

   Label4: TLabel;

   Label7: TLabel;

   Label8: TLabel;

   firstEd: TEdit;

   lastEd: TEdit;

   displayEd: TEdit;

   nickEd: TEdit;

   GroupBox3: TGroupBox;

   Label5: TLabel;

   priEd: TEdit;

   Label10: TLabel;

   Label11: TLabel;

   secEd: TEdit;

   oldEd: TEdit;

   GroupBox4: TGroupBox;

   cityEd: TEdit;

   zipEd: TEdit;

   stateEd: TEdit;

   Label12: TLabel;

   Label13: TLabel;

   Label14: TLabel;

   Label15: TLabel;

   streetMemo: TMemo;

   Label16: TLabel;

   GroupBox5: TGroupBox;

   Label17: TLabel;

   Label18: TLabel;

   Label19: TLabel;

   phoneEd: TEdit;

   cellularEd: TEdit;

   faxEd: TEdit;

   GroupBox6: TGroupBox;

   Label20: TLabel;

   Label21: TLabel;

   Label22: TLabel;

   tzEd: TEdit;

   Edit20: TEdit;

   Edit21: TEdit;

   GroupBox7: TGroupBox;

   Label23: TLabel;

   Label24: TLabel;

   Label25: TLabel;

   homepageEd: TEdit;

   ageEd: TEdit;

   GroupBox8: TGroupBox;

   Label26: TLabel;

   Label27: TLabel;

   Label28: TLabel;

   GroupBox9: TGroupBox;

   GroupBox10: TGroupBox;

   Label29: TLabel;

   Label30: TLabel;

   Label31: TLabel;

   Label32: TLabel;

   Label33: TLabel;

   wcityEd: TEdit;

   wzipEd: TEdit;

   wstateEd: TEdit;

   wstreetMemo: TMemo;

   GroupBox11: TGroupBox;

   Label34: TLabel;

   Label36: TLabel;

   wphoneEd: TEdit;

   wfaxEd: TEdit;

   GroupBox12: TGroupBox;

   Label38: TLabel;

   Label39: TLabel;

   companyEd: TEdit;

   jobEd: TEdit;

   departmentEd: TEdit;

   Label35: TLabel;

   Label37: TLabel;

   whomepageEd: TEdit;

   Label40: TLabel;

   GroupBox13: TGroupBox;

   aboutMemo: TMemo;

   AuthLabel: TLabel;

   Label43: TLabel;

   GroupBox15: TGroupBox;

   interMemo: TMemo;

   countryCombo: TComboBox;

   wcountryCombo: TComboBox;

   genderCombo: TComboBox;

   monthCombo: TComboBox;

   lang1Combo: TComboBox;

   lang2Combo: TComboBox;

   lang3Combo: TComboBox;

   occupationCombo: TComboBox;

   dayCombo: TComboBox;

   yearCombo: TComboBox;

   ApplicationEvents1: TApplicationEvents;

   procedure Request_Meta_Info(UIN : longint);

   procedure Set_Meta_Info;

   procedure UserInfoDoneBtnClick(Sender: TObject);

   procedure UserInfoRetrieveBtnClick(Sender: TObject);

   procedure FormShow(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure SetCountry(Combo:TComboBox; Country:word);

   function GetCountry(Combo:TComboBox):word;

   procedure SetGender(Combo:TComboBox; Gender:byte);

   function GetGender(Combo:TComboBox):byte;

   procedure SetMonth(Combo:TComboBox; Month:byte);

   function GetMonth(Combo:TComboBox):byte;

   procedure SetLanguage(Combo:TComboBox; Lang:byte);

   function GetLanguage(Combo:TComboBox):byte;

   procedure SetOccupation(Combo:TComboBox; Occupation:word);

   function GetOccupation(Combo:TComboBox):word;

   procedure SetCombo(Combo:TComboBox; min,max,Value:word);

   function GetCombo(Combo:TComboBox; min,max:byte):word;

   procedure ApplicationEvents1Message(var Msg: tagMSG;

     var Handled: Boolean);

private

   { Private declarations }

public

   AutoRetrieve : boolean;

   UIRecord : TListRecord;

   Cookie : word;

end;

 

 

implementation

{$R *.DFM}

 

procedure TUserInfo.UserInfoDoneBtnClick(Sender: TObject);

begin

    Close;

end;

 

procedure TUserInfo.Request_Meta_Info(UIN : longint);

var p,a : pPack;

begin

    a := PacketNew;

    PacketGoto(a,2);// a[0..1] = len

    PacketAppend32(a,main.UIN);

    PacketAppend16(a,swap($D007));

    Cookie := random($FF) shl 8;

    PacketAppend16(a,swap(Cookie));

    PacketAppend16(a,swap($B204));

    PacketAppend32(a,UIN);

    PacketBegin(a);

    PacketAppend16(a,a.length-2);

 

    P:=CreatePacket(2,SEQ);

    SNACAppend(p,$15,$2);

    TLVAppend(p,1,a.length,@a.data);

    PacketDelete(a);

    Form1.PacketSend(p);

    M(Form1.Memo,'>Request Full Info: '+s(UIN)+'   '+

                 'Cookie:$'+inttohex(Cookie,4));

    UIAnime.Active := true;

end;

 

procedure TUserInfo.UserInfoRetrieveBtnClick(Sender: TObject);

begin

    if (OL and isLogged)then

      Request_Meta_Info(UIRecord.UIN);

end;

 

 

procedure TUserInfo.FormShow(Sender: TObject);

begin

    InfoPage.ActivePageIndex :=0;

    with UIRecord do begin

      uinEd.Text := s(UIN);

      ipEd.Text := IPtoStr(IP);

      realipEd.Text := IPtoStr(REAL_IP);

      verEd.Text := s(VER);

      firstEd.Text := FIRST;

      lastEd.Text := LAST;

      nickEd.Text := NICK;

      displayEd.Text := NICK;

      priEd.Text := PRI_E_MAIL;

      secEd.Text := SEC_E_MAIL;

      oldEd.Text := OLD_E_MAIL;

      cityEd.Text := CITY;

      stateEd.Text := STATE;

      phoneEd.Text := PHONE;

      faxEd.Text := FAX;

      cellularEd.Text := CELLULAR;

      M(streetMemo,STREET);

      SetCountry(countryCombo,COUNTRY);

      SetGender(genderCombo,GENDER);

      ageEd.Text := s(AGE);

      homepageEd.Text := HOMEPAGE;

      SetCombo(yearCombo,1,99,BYEAR);

      SetMonth(monthCombo,BMONTH);

      SetCombo(dayCombo,1,31,BDAY);

      case AUTH of

        0: AuthLabel.Caption := 'Authorize';

        1: AuthLabel.Caption := 'Always';

        else AuthLabel.Caption := 'unknown';

      end;

      SetLanguage(lang1Combo,LANG1);

      SetLanguage(lang2Combo,LANG2);

      SetLanguage(lang3Combo,LANG3);

      M(aboutMemo,ABOUT);

      M(interMemo,INTERESTS);

 

      companyEd.Text :=COMPANY;

      departmentEd.Text := DEPARTMENT;

      jobEd.Text := JOB;

      SetOccupation(occupationCombo,Occupation);

      wcityEd.Text := WCITY;

      wstateEd.Text := WSTATE;

      wphoneEd.Text := WPHONE;

      wfaxEd.Text := WFAX;

      wstreetMemo.Clear;

      M(wstreetMemo,WSTREET);

      SetCountry(wcountryCombo,WCOUNTRY);

      whomepageEd.Text := WHOMEPAGE;

    end;

    if AutoRetrieve then begin

      if (OL and isLogged)then

        Request_Meta_Info(UIRecord.UIN);

    end;

end;

 

 

procedure TUserInfo.FormClose(Sender: TObject; var Action: TCloseAction);

var i : integer;

begin

    if not AutoRetrieve then begin

      for i:=0 to CLNum-1 do with ContactList[i] do begin

        if UIN = UIRecord.UIN then begin

          ContactList[i] := UIRecord;

          if NICK = '' then begin

            if FIRST <> '' then NICK := FIRST

            else if LAST <> '' then NICK := LAST

                 else NICK := s(UIN);

          end; // if

          Form1.WriteToContactList(ContactList[i]);

          break;

        end;

      end; //for

      for i:=0 to Form1.CL.Items.Count-1 do

        if Form1.CL.Items[i].Text <> PListRecord(Form1.CL.Items[i].Data)^.NICK then

          Form1.CL.Items[i].Text := PListRecord(Form1.CL.Items[i].Data)^.NICK;

    end;

    Destroy;

end;

 

 

procedure TUserInfo.Set_Meta_Info;

begin

    // это еще старый кусок из протокола icqv5 (UDP)

    // CMD_META_USER  + META_CMD_SET_INFO

(*

    p:=main.UDPCreateStdPacket(CMD_META_USER);

    PacketAppend16(p,META_CMD_SET_INFO);

 

    Cookie := main.UDPSeqNum2-1;

    MetaUIN := main.UIN;

 

    PacketAppendString(p,nickEd.Text);

    PacketAppendString(p,firstEd.Text);

    PacketAppendString(p,lastEd.Text);

    PacketAppendString(p,priEd.Text);

    PacketAppendString(p,secEd.Text);

    PacketAppendString(p,oldEd.Text);

    PacketAppendString(p,cityEd.Text);

    PacketAppendString(p,stateEd.Text);

    PacketAppendString(p,phoneEd.Text);

    PacketAppendString(p,faxEd.Text);

    PacketAppendString(p,streetMemo.Lines[0]);

    PacketAppendString(p,cellularEd.Text);

    try PacketAppend32(p,longint(strtoint(zipEd.Text)));

    except PacketAppend32(p,-1); end;

    PacketAppend16(p,GetCountry(countryCombo));

    PacketAppend8(p,0);  // 250 = +03:00 TimeZone

    PacketAppend8(p,0);  // ????

    main.SendUDPCmd(p,'META_USER+SET_INFO: ['+s(main.UIN)+'] ===>');

 

    // CMD_META_USER  + META_CMD_SET_WORK

    p:=main.UDPCreateStdPacket(CMD_META_USER);

    PacketAppend16(p,META_CMD_SET_WORK);

    PacketAppendString(p,wcityEd.Text);

    PacketAppendString(p,wstateEd.Text);

    PacketAppendString(p,wphoneEd.Text);

    PacketAppendString(p,wfaxEd.Text);

    PacketAppendString(p,wstreetMemo.Lines[0]);

    try PacketAppend32(p,longint(strtoint(wzipEd.Text)));

    except PacketAppend32(p,-1); end;

    PacketAppend16(p,GetCountry(wcountryCombo));

    PacketAppendString(p,companyEd.Text);

    PacketAppendString(p,departmentEd.Text);

    PacketAppendString(p,jobEd.Text);

    PacketAppend16(p,GetOccupation(occupationCombo));

    PacketAppendString(p,whomepageEd.Text);

    main.SendUDPCmd(p,'META_USER+SET_WORK: ['+s(main.UIN)+'] ===>');

 

    // CMD_META_USER  + META_CMD_SET_MORE

    p:=main.UDPCreateStdPacket(CMD_META_USER);

    PacketAppend16(p,META_CMD_SET_MORE);

    try PacketAppend16(p,word(strtoint(ageEd.Text)));

    except PacketAppend16(p,0); end;

    PacketAppend8(p,GetGender(genderCombo));

    PacketAppendString(p,homepageEd.Text);

    PacketAppend8(p,GetCombo(yearCombo,0,99));

    PacketAppend8(p,GetMonth(monthCombo));

    PacketAppend8(p,GetCombo(dayCombo,1,31));

    PacketAppend8(p,GetLanguage(lang1Combo));

    PacketAppend8(p,GetLanguage(lang2Combo));

    PacketAppend8(p,GetLanguage(lang3Combo));

    main.SendUDPCmd(p,'META_USER+SET_MORE: ['+s(main.UIN)+'] ===>');

 

    // CMD_META_USER  + META_CMD_SET_ABOUT

    p:=main.UDPCreateStdPacket(CMD_META_USER);

    PacketAppend16(p,META_CMD_SET_ABOUT);

    PacketAppendString(p,aboutMemo.lines[0]);

    main.SendUDPCmd(p,'META_USER+SET_ABOUT: ['+s(main.UIN)+'] ===>');

 

    // CMD_META_USER  + META_CMD_SET_SECURE

    p:=main.UDPCreateStdPacket(CMD_META_USER);

    PacketAppend16(p,META_CMD_SET_SECURE);

    PacketAppend8(p,1);  //  0-autor required; 1-all users

    PacketAppend8(p,0);  //  0-not allow web;  1-allow web aware

    PacketAppend8(p,0);  //  0-hide IP;    1-show IP

    main.SendUDPCmd(p,'META_USER+SET_SECURE: ['+s(main.UIN)+'] ===>');

/////

*)

    UIAnime.Active := true;

end;

 

procedure TUserInfo.SetCountry(Combo:TComboBox; Country:word);

var i : integer;

begin

     Combo.Clear;

     for i:=0 to 121 do begin

       Combo.Items.Add(Countries[i].Text);

       if Countries[i].Code = Country then Combo.Text := Countries[i].Text;

     end;

     if Combo.Text = '' then Combo.Text := Countries[121].Text;

end;

 

function TUserInfo.GetCountry(Combo:TComboBox):word;

var i : integer;

begin

    Result := $FFFF;

     for i:=0 to 121 do begin

       if Countries[i].Text = Combo.Text then begin

          Result := Countries[i].Code;

          break;

       end;

     end;

end;

 

procedure TUserInfo.SetGender(Combo:TComboBox; Gender:byte);

begin

     Combo.Clear;

     Combo.Items.Add('Not specified');

     Combo.Items.Add('Female');

     Combo.Items.Add('Male');

     case Gender of

       0: Combo.Text := 'Not specified';

       1: Combo.Text := 'Female';

       2: Combo.Text := 'Male';

       else Combo.Text := 'Not specified';

     end;

end;

 

function TUserInfo.GetGender(Combo:TComboBox):byte;

begin

    Result := 0;

    if Combo.Text = 'Female' then Result := 1

    else if Combo.Text = 'Male' then Result := 2;

end;

 

procedure TUserInfo.SetMonth(Combo:TComboBox; Month:byte);

var i : integer;

begin

     Combo.Clear;

     for i:=0 to 12 do begin

       Combo.Items.Add(MetaMonth[i].Text);

       if MetaMonth[i].Code = Month then Combo.Text := MetaMonth[i].Text;

     end;

     if Combo.Text = '' then Combo.Text := MetaMonth[12].Text;

end;

 

function TUserInfo.GetMonth(Combo:TComboBox):byte;

var i : integer;

begin

    Result := 0;

     for i:=0 to 12 do begin

       if MetaMonth[i].Text = Combo.Text then begin

          Result := MetaMonth[i].Code;

          break;

       end;

     end;

end;

 

procedure TUserInfo.SetLanguage(Combo:TComboBox; Lang:byte);

var i : integer;

begin

     Combo.Clear;

     for i:=0 to 67 do begin

       Combo.Items.Add(MetaLanguages[i].Text);

       if MetaLanguages[i].Code = Lang then Combo.Text := MetaLanguages[i].Text;

     end;

     if Combo.Text = '' then Combo.Text := MetaLanguages[0].Text;

end;

 

function TUserInfo.GetLanguage(Combo:TComboBox):byte;

var i : integer;

begin

    Result := 0;

     for i:=0 to 67 do begin

       if MetaLanguages[i].Text = Combo.Text then begin

          Result := MetaLanguages[i].Code;

          break;

       end;

     end;

end;

 

procedure TUserInfo.SetOccupation(Combo:TComboBox; Occupation:word);

var i : integer;

begin

     Combo.Clear;

     for i:=0 to 28 do begin

       Combo.Items.Add(MetaOccupation[i].Text);

       if MetaOccupation[i].Code = Occupation then Combo.Text := MetaOccupation[i].Text;

     end;

     if Combo.Text = '' then Combo.Text := MetaOccupation[28].Text;

end;

 

function TUserInfo.GetOccupation(Combo:TComboBox):word;

var i : integer;

begin

    Result := 0; // not specified

     for i:=0 to 27 do begin

       if MetaOccupation[i].Text = Combo.Text then begin

          Result := MetaOccupation[i].Code;

          break;

       end;

     end;

end;

 

procedure TUserInfo.SetCombo(Combo:TComboBox; min,max,Value:word);

var i : integer;

begin

     Combo.Clear;

     for i:=min to max do begin

       Combo.Items.Add(s(i));

       if i=Value then Combo.Text := s(i);

     end;

     Combo.Items.Add('Not specified');

     if Combo.Text = '' then Combo.Text := 'Not specified';

end;

 

function TUserInfo.GetCombo(Combo:TComboBox; min,max:byte):word;

begin

    Result := 0;

    if Combo.Text = 'Not specified' then exit

    else

    try Result := strtoint(Combo.Text) except Result := 0; end;

    if (Result >= min) and (Result<=max) then exit else Result := 0;

end;

 

 

procedure TUserInfo.ApplicationEvents1Message(var Msg: tagMSG;

var Handled: Boolean);

var PBuff : PInfoRec;

begin

    if Msg.message = msg_UInfo then begin

      if (Msg.wParam = Cookie)then begin

        Handled := false;

        PBuff := PInfoRec(Msg.lParam);

        case PBuff^.f of

         dEND: begin

                  M(Form1.Memo,'The END.');

                  UIAnime.Active := false;

                end;

         dNick: begin

                  UIRecord.NICK := PBuff^.s;

                  NickEd.Text := PBuff^.s;

                end;

         dFirst: begin

                  UIRecord.FIRST := PBuff^.s;

                  FirstEd.Text := PBuff^.s;

                end;

         dLast: begin

                  UIRecord.LAST := PBuff^.s;

                  LastEd.Text := PBuff^.s;

                end;

         dE_Mail: begin

                  UIRecord.PRI_E_MAIL := PBuff^.s;

                  priEd.Text := PBuff^.s;

                end;

         dSec_E_Mail: begin

                  UIRecord.SEC_E_MAIL := PBuff^.s;

                  secEd.Text := PBuff^.s;

                end;

         dOld_E_Mail: begin

                  UIRecord.OLD_E_MAIL := PBuff^.s;

                  oldEd.Text := PBuff^.s;

                end;

         dIP: begin

                  strtoip(PBuff^.s,UIRecord.IP);

                  ipEd.Text := PBuff^.s;

                end;

         dReal_IP: begin

                  strtoip(PBuff^.s,UIRecord.REAL_IP);

                  realipEd.Text := PBuff^.s;

                end;

         dVer: begin

                  UIRecord.VER := strtoint(PBuff^.s);

                  verEd.Text := PBuff^.s;

                end;

         dAuth: begin

                  UIRecord.AUTH := strtoint(PBuff^.s);

                  case UIRecord.AUTH of

                    0: AuthLabel.Caption := 'Authorize';

                    1: AuthLabel.Caption := 'Always';

                    else AuthLabel.Caption := 'unknown';

                  end;

                end;

         dCity: begin

                  UIRecord.CITY := PBuff^.s;

                  cityEd.Text := PBuff^.s;

                end;

         dState: begin

                  UIRecord.STATE := PBuff^.s;

                  stateEd.Text := PBuff^.s;

                end;

         dPhone: begin

                  UIRecord.Phone := PBuff^.s;

                  PhoneEd.Text := PBuff^.s;

                end;

         dFax: begin

                  UIRecord.Fax := PBuff^.s;

                  FaxEd.Text := PBuff^.s;

                end;

         dCellular: begin

                  UIRecord.Cellular := PBuff^.s;

                  CellularEd.Text := PBuff^.s;

                end;

         dZip: begin

                  UIRecord.Zip := PBuff^.s;

                  ZipEd.Text := PBuff^.s;

                end;

         dStreet: begin

                  UIRecord.Street := PBuff^.s;

                  streetMemo.Clear;

                  M(streetMemo,PBuff^.s);

                end;

         dCountry: begin

                  UIRecord.Country := strtoint(PBuff^.s);

                  SetCountry(countryCombo,UIRecord.COUNTRY);

                end;

         dTimeZone: begin

                  UIRecord.TimeZone := strtoint(PBuff^.s);

                  tzEd.Text := PBuff^.s;

                end;

         dWebAware: begin

   //               UIRecord.WebAware := strtoint(PBuff^.s);

   //               webawareEd.Text := PBuff^.s;

                end;

         dHideIP: begin

   //               UIRecord.HideIP := PBuff^.s;

   //               HideIPEd.Text := PBuff^.s;

                end;

         dAge: begin

                  UIRecord.Age := strtoint(PBuff^.s);

                  AgeEd.Text := PBuff^.s;

                end;

         dGender: begin

                  UIRecord.Gender := strtoint(PBuff^.s);

                  SetGender(genderCombo,UIRecord.GENDER);

                end;

         dHomepage: begin

                  UIRecord.Homepage := PBuff^.s;

                  HomepageEd.Text := PBuff^.s;

                end;

         dByear: begin

                  UIRecord.Byear := strtoint(PBuff^.s);

                  if UIRecord.Byear<>0 then dec(UIRecord.Byear,1900);

                  SetCombo(yearCombo,1,99,UIRecord.Byear);

                end;

         dBmonth: begin

                  UIRecord.BMonth := strtoint(PBuff^.s);

                  SetMonth(monthCombo,UIRecord.BMonth);

                end;

         dBday: begin

                  UIRecord.Bday := strtoint(PBuff^.s);

                  SetCombo(dayCombo,1,31,UIRecord.Bday);

                end;

         dAbout: begin

                  UIRecord.ABOUT := PBuff^.s;

                  AboutMemo.Clear;

                  M(AboutMemo,PBuff^.s);

                end;

         dLang1: begin

                  UIRecord.LANG1 := strtoint(PBuff^.s);

                  SetLanguage(lang1Combo,UIRecord.LANG1);

                end;

         dLang2: begin

                  UIRecord.LANG2 := strtoint(PBuff^.s);

                  SetLanguage(lang2Combo,UIRecord.LANG2);

                end;

         dLang3: begin

                  UIRecord.LANG3 := strtoint(PBuff^.s);

                  SetLanguage(lang3Combo,UIRecord.LANG3);

                end;

         dInterests: begin

                  UIRecord.INTERESTS := PBuff^.s;

                  interMemo.Clear;

                  M(interMemo,PBuff^.s);

                end;

         dFailure: begin

   ///////////////////////////// ?????

                end;

         dMeta_Srv_Res: begin

                  UIAnime.Active := false;

                end;

         dwCity: begin

                  UIRecord.WCITY := PBuff^.s;

                  wcityEd.Text := PBuff^.s;

                 end;

         dwState:begin

                  UIRecord.WSTATE := PBuff^.s;

                  wstateEd.Text := PBuff^.s;

                 end;

         dwPhone:begin

                  UIRecord.WPHONE := PBuff^.s;

                  wphoneEd.Text := PBuff^.s;

                 end;

         dwFax:begin

                  UIRecord.WFAX := PBuff^.s;

                  wfaxEd.Text := PBuff^.s;

                 end;

         dwStreet:begin

                  UIRecord.WSTREET := PBuff^.s;

                  wstreetMemo.Clear;

                  M(wstreetMemo,PBuff^.s);

                 end;

         dwZip:begin

                  UIRecord.WZIP := PBuff^.s;

                  wzipEd.Text := PBuff^.s;

                 end;

         dwCountry:begin

                  UIRecord.WCOUNTRY := strtoint(PBuff^.s);

                  SetCountry(wcountryCombo,UIRecord.WCOUNTRY);

                 end;

         dCompany:begin

                  UIRecord.COMPANY := PBuff^.s;

                  companyEd.Text := PBuff^.s;

                 end;

         dDepartment:begin

                  UIRecord.DEPARTMENT := PBuff^.s;

                  departmentEd.Text := PBuff^.s;

                 end;

         dJob:begin

                  UIRecord.JOB := PBuff^.s;

                  jobEd.Text := PBuff^.s;

                 end;

         dOccupation:begin

                  UIRecord.OCCUPATION := strtoint(PBuff^.s);

                  SetOccupation(occupationCombo,UIRecord.Occupation);

                 end;

         dWhomepage:begin

                  UIRecord.WHOMEPAGE := PBuff^.s;

                  whomepageEd.Text := PBuff^.s;

                 end;

         end; // case

         Dispose(PBuff);

      end;

    end;

end;

 

end.