Модуль "Новое сообщение" (часть 2) - FormCreate

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 157
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmAT_NewMessage.FormCreate(Sender: TObject);
var
  i, j: integer;
  xType: byte;
  str: string;
  f1: file of TAbonent;
  f2: file of TAbonentEx;
  xsize: integer;
  IsCorr: boolean;
  xItem: TspComboExItem;

  function GetImageNumber(AType: byte): integer;
  begin
    result:= -1;
    //if AType <> 255 then result:=AType
    //                else result:= -1;
    case AType of
      ///*0: result:= 0;
      0: result:= 2;
      1: result:= 1;
      //2: result:= -1;
      ///*3: result:= 2;
      3: result:= 0;
      4: result:= 3;
      5: result:= 4;
      //6: result:= -1;
      //7: result:= 6;
      //8: result:= -1;
      //9: result:= -1;
      //10: result:= 7;
      11: result:= 5;
      12: result:= 6;
      13: result:= 7;
      14: result:= 8;
      15: result:= 9;
      16: result:= 10;
      17: result:= 11;
    else
      result:= -1;
    end;
    if result <> -1 then result:= result + 2;
  end;
  
  procedure FillList;
  var
    t, k, p: integer;
    xx: string;
  begin
    for t:= Low(xMembers) to High(xMembers) do
        begin
          p:= xMembers[t].eType;
          k:= xMembers[t].Index;
          xx:= xMembers[t].Storage;
          if (p in [0, 1, 2, 3, 4, 5, 8]) and
             (k <> MaxInt) and ((xx = 'S') or (xx = 'P'))
            then begin
                   xx:= Trim(xMembers[t].Name) + #9#9 +
                         Trim(xMembers[t].Number);
                   xItem:= cbNewSMSNumber.ItemsEx.Add;
                   xItem.Caption:= xx;
                   xItem.ImageIndex:= p;
                 end;
        end;
  end;
  procedure FillListEx;
  var
    t, k, p: integer;
    xx: string;
    z, m: integer;
  begin
    z:= xPhoneBookParamEx.cntPhones;
    for t:= Low(xMembersEx) to High(xMembersEx) do
        begin
          for m:= 1 to z do
            begin
              k:=  xMembersEx[t].Records[m].SubIndex;
              p:=  GetImageNumber(xMembersEx[t].Records[m].iType);
              xx:= xMembersEx[t].Storage;
              if (p in [0, 1, 2, 3, 4, 5, 8, 9, 10, 11]) and
                 (k <> MaxInt) and ((xx = 'S') or (xx = 'P'))
                then begin
                       xx:= Trim(xMembersEx[t].Records[m].FullName) + #9#9 +
                            Trim(xMembersEx[t].Records[m].Number);
                       xItem:= cbNewSMSNumber.ItemsEx.Add;
                       xItem.Caption:= xx;
                       xItem.ImageIndex:= p;
                     end;
            end;
        end;
  end;
begin
  //
  Caption:= at_sm_n_text_01;
  spSkinStdLabel6.Caption:= at_sm_n_text_02;
  spSkinStdLabel1.Caption:= at_sm_n_text_03;
  spSkinStdLabel2.Caption:= Format(at_sm_n_text_04, ['???']);
  spSkinRadioGroup1.Caption:= at_sm_n_text_05;
  spSkinRadioGroup1.Items[0]:= at_sm_n_text_06;
  spSkinRadioGroup1.Items[1]:= at_sm_n_text_07;
  spSkinRadioGroup1.Items[2]:= at_sm_n_text_08;
  spSkinRadioGroup2.Caption:= at_sm_n_text_09;
  spSkinRadioGroup2.Items[0]:= at_sm_n_text_10;
  spSkinRadioGroup2.Items[1]:= at_sm_n_text_11;
  AdvGlowButton1.Caption:= btnCancel;
  AdvGlowButton3.Caption:= btnOk;
  spSkinMemo1.Clear;
  //IsMultiPage:= false;
  //fill abonents
  cbNewSMSNumber.Items.Clear;
  case iPhoneBookType of
    0,1: begin
           //PngImageList3
           cbNewSMSNumber.Images:= Form1.PngImageList5;
           if xMembers = nil
           then begin
                  // взять из файла
                  str:= ExtractFilePath(Application.ExeName)+'Data\abonents.db~';
                  if not FileExists(str) then exit;
                  AssignFile(f1, str);
                  Reset(f1);
                  try
                    if frmAT_PhoneBook.GetPhoneBookParams(xPhoneBookParam)
                      then begin
                              SetLength(xMembers, xPhoneBookParam.TotalRec);
                              i:= 0;
                              IsCorr:= true;
                              repeat
                                Read(f1, xMembers[i]);
                                if (xMembers[i].Storage = 'S') or
                                   (xMembers[i].Storage = 'P') or
                                   (xMembers[i].Storage = 'N')
                                   then IsCorr:= IsCorr and true
                                   else IsCorr:= IsCorr and false;
                                inc(i);
                              until eof(f1);
                              if IsCorr then FillList
                           end;
                  finally
                    CloseFile(f1);
                  end;
                end
           else begin
                  // взять из сущ. массива
                  FillList
                end;
         end;
    2,3: begin
           if xMembersEx = nil
             then begin
           //PngImageList3
           cbNewSMSNumber.Images:= Form1.PngImageList6;
           if xMembersEx = nil
           then begin
                  // взять из файла
                  str:= ExtractFilePath(Application.ExeName)+'Data\AbonentsEx.db~';
                  if not FileExists(str) then exit;
                  AssignFile(f2, str);
                  Reset(f2);
                  try
                    if frmAT_PhoneBook.GetPhoneBookParamsEx(xPhoneBookParamEx)
                      then begin
                              SetLength(xMembersEx, xPhoneBookParamEx.TotalRec);
                              i:= 0;
                              IsCorr:= true;
                              repeat
                                Read(f2, xMembersEx[i]);
                                if (xMembersEx[i].Storage = 'S') or
                                   (xMembersEx[i].Storage = 'P') or
                                   (xMembersEx[i].Storage = 'N')
                                   then IsCorr:= IsCorr and true
                                   else IsCorr:= IsCorr and false;
                                inc(i);
                              until eof(f2);
                              if IsCorr then FillListEx
                           end;
                  finally
                    CloseFile(f2);
                  end;
                end;  
             end
             else begin
                    // взять из сущ. массива
                    FillListEx;
                  end;
         end;
  end;
end;
Rambler's Top100