Модуль "Мое меню" (часть 14) - AddMyMenu

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 150
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmP2K_MyMenu.AddMyMenu;
var
  i, j, k: integer;
  xBuffer,   xBuffer2: pbytearray;
  rec: string;
  res: boolean;
  Index: integer;
  xValue: integer;
  iBit: byte;
  frmMyMemuProps: TfrmMyMemuProps;

begin
  if spSkinListView1.Items.Count > 99  then exit;
  try
  Screen.Cursor:= crHourGlass;
  frmMyMemuProps:= TfrmMyMemuProps.Create(Self);
  try
    frmMyMemuProps.cbMyMenuButton.Items.Clear;
    frmMyMemuProps.Caption:= p2k_mymenu_m_text_02;
    for i:=1 to 99 do if  (AvailMenu[i] = 255) and (not xMyMenu[i].IsVisible) then frmMyMemuProps.cbMyMenuButton.Items.Add(IntToStr(i));
    frmMyMemuProps.cbMyMenuButton.ItemIndex:= 0;
    frmMyMemuProps.edtMeMenuName.Text:= '';
    frmMyMemuProps.spSkinStdLabel2.Visible:= true;
    frmMyMemuProps.spSkinEdit1.Visible:= true;
    frmMyMemuProps.spSkinBevel1.Visible:= true;
    frmMyMemuProps.spSkinEdit1.Text:= 'http://';
    frmMyMemuProps.spSkinEdit2.Text:= inttohex($30*256 + $15, 4);
    //frmMyMemuProps.spSkinCheckRadioBox2.Checked:= true;
    frmMyMemuProps.rgMenuType.ItemIndex:= 1;
    
    frmMyMemuProps.ShowModal;
    if frmMyMemuProps.ModalResult = mrOk then
      begin
        for i:=1 to 99 do if not (xMyMenu[i].IsVisible) then break;
        //** xMyMenu[i].Button:= StrToInt(frmMyMemuProps.cbMyMenuButton.Text);
        //** xMyMenu[i].Name:= frmMyMemuProps.edtMeMenuName.Text;
        //** xMyMenu[i].CommandID:= hex2int(frmMyMemuProps.spSkinEdit2.Text);
        //** for j:=1 to 50 do if AvailMenuLink[j] = 255 then break;
        //** xMyMenu[i].SeemLinkNum:= j-1;
        //** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkName:= frmMyMemuProps.spSkinEdit1.Text;
        //** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkLength:= length(frmMyMemuProps.spSkinEdit1.Text);
        //** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].Trash01:= 0;
        //** xMyMenuLink[xMyMenu[i].SeemLinkNum+1].Index:= j-1;
        //** xBuffer:= AllocMem(MY_MENU_SIZE); xBuffer2:= AllocMem(MY_MENU_LINK_SIZE);
        try
          xMyMenu[i].mType:= 0;
          //** xMyMenu[i].Index:= i-1;
          //** case frmMyMemuProps.rgMenuType.ItemIndex of
          //**   0 : begin xMyMenu[i].MenuType:= $06; xMyMenu[i].JavaItem:= $00; xMyMenu[i].mType:= 1; end;
          //**   1 : begin xMyMenu[i].MenuType:= $05; xMyMenu[i].JavaItem:= $00; xMyMenu[i].mType:= 0; end;
          //**   2 : begin xMyMenu[i].MenuType:= $00; xMyMenu[i].JavaItem:= $08; xMyMenu[i].mType:= 2; end;
          //** end;
          //** xMyMenu[i].VoiceRecord:= $FE;
          //** xMyMenu[i].StringID[0]:= 0;
          //** xMyMenu[i].StringID[1]:= 0;
          //** FillMemory(@xMyMenu[i].Trash_02_1_1, 3, 0);
          //** xMyMenu[i].MidletNum:= 0;
          //** FillMemory(@xMyMenu[i].Trash_02_1_2, 3, 0);
          //** xMyMenu[i].LinkLength:=  xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkLength;
          //** FillMemory(@xMyMenu[i].Trash_02_2, 8, 0);
          //** xMyMenu[i].Vazhno_01[0]:= 0; xMyMenu[i].Vazhno_01[1]:= 0; xMyMenu[i].Vazhno_01[2]:= 0; xMyMenu[i].Vazhno_02[0]:= 0; xMyMenu[i].Vazhno_02[1]:= 0; xMyMenu[i].Trash_03:= 0; xMyMenu[i].Trash_04:= 0; xMyMenu[i].Trash_05:= 0; xMyMenu[i].Trash_06:= 0;
          //** if xMyMenu[i].mType = 0
          //**   then ConvertMyMenuLinkStructureToBuffer(xMyMenuLink[xMyMenu[i].SeemLinkNum+1], xBuffer2)
          //**   else if xMyMenu[i].mType = 2
          //**   then begin
          //**          xMyMenu[i].MidletNum:= strtoint(frmMyMemuProps.spSkinEdit1.Text);
          //**          xMyMenu[i].LinkLength:= 0;
          //**          xMyMenu[i].SeemLinkNum:= 128;
          //**        end;
          //** ConvertMyMenuStructureToBuffer(xMyMenu[i], xBuffer);
          rec:= IntToHex(i, 4);
          res:= P2K.WriteSeem('0002', rec, '0', MY_MENU_SIZE, xBuffer);
          //** rec:= IntToHex(xMyMenu[i].SeemLinkNum+1, 4);
          //** res:= P2K.WriteSeem('017a', rec, '0', MY_MENU_LINK_SIZE, xBuffer2);
        finally
          FreeMem(xBUffer);  FreeMem(xBUffer2);
        end;
        //включить новый бит
        xBuffer:= AllocMem(14);
        try
          FillMemory(xBuffer, 14, 0);
          //** Index:= xMyMenu[i].Index div 8;  //какой оффсет проверять
          xValue:= SEEM_SHORTCUT_SLOTS[Index];
          //** iBit:= xMyMenu[i].Index mod 8; //какой бит проверять
          iBit:= Round(power(2, iBit));
          res:= true;
          if res then xValue:= xValue or iBit else xValue:= xValue and not iBit;
          SEEM_SHORTCUT_SLOTS[Index]:= xValue;
          for k:= 0 to 13 do  xBuffer[k]:= SEEM_SHORTCUT_SLOTS[k];
          P2K.WriteSeem('0157', '0001', '0', 14, xBuffer);
        finally
          FreeMem(xBuffer);
        end;
        with spSkinListView1.Items.Add do
          begin
            ImageIndex:= -1;
          //** if xMyMenu[i].MenuType = $0 then ImageIndex:= 7;
          //** if xMyMenu[i].MenuType = $6 then ImageIndex:= 6;
          //** if xMyMenu[i].MenuType = $5 then ImageIndex:= 0;
          //** if xMyMenu[i].JavaItem = $8 then ImageIndex:= 5;
          //**   Caption:= inttostr(xMyMenu[i].Index);
          //**   SubItems.Add(inttostr(xMyMenu[i].Button));
          //**   rec:= '';
          //**   SubItems.Add(xMyMenu[i].Name);
          //**   rec:= IntToHex(xMyMenu[i].StringId[0], 2)+IntToHex(xMyMenu[i].StringId[1], 2);
          //**   SubItems.Add(rec);
          //**   SubItems.Add(inttohex(xMyMenu[i].CommandID, 4));
          //**   rec:= '';
          //**   if xMyMenu[i].mType = 0 then  rec:= xMyMenuLink[xMyMenu[i].SeemLinkNum+1].LinkName;
          //**   SubItems.Add(rec);
          end;
      end;
  finally
    frmMyMemuProps.Free;
  end;
  finally
    Screen.Cursor:= crDefault;
  end;   
end;
Rambler's Top100