Модуль "Мое меню" (часть 4) - ConvertBufferToMyMenuStructure
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
от 07 декабря 2007 г.
procedure TfrmP2K_MyMenu.ConvertBufferToMyMenuStructure(ABuffer: pbytearray; var AMyMenu: TMyMenu); var i: integer; pos: integer; tmp: string; idx: integer; xValue: byte; iBit: byte; res: boolean; dw: dword; w: word;
begin pos:= 0; AMyMenu.mType:= 1; AMyMenu.xMenu.Index:= ABuffer[pos]; inc(pos); AMyMenu.xMenu.MenuType:= ABuffer[pos]; inc(pos); AMyMenu.xMenu.Button:= ABuffer[pos]; inc(pos); AvailMenu[AMyMenu.xMenu.Button]:= AMyMenu.xMenu.Button; AMyMenu.xMenu.VoiceRecord:= ABuffer[pos]; inc(pos); AMyMenu.xMenu.JavaItem:= ABuffer[pos] * 256 + ABuffer[pos+1]; inc(pos, 2); AMyMenu.xMenu.CommandID:= ABuffer[pos] * 256 + ABuffer[pos+1]; inc(pos, 2); if (AMyMenu.xMenu.MenuType = 5) and (AMyMenu.xMenu.JavaItem = 0) then AMyMenu.mType:= 0 else if (AMyMenu.xMenu.MenuType = 0) and (AMyMenu.xMenu.JavaItem = 8) then AMyMenu.mType:= 2; CopyMemory(@AMyMenu.xMenu.ListItem_id, @ABuffer[pos], 4); inc(pos, 4); CopyMemory(@AMyMenu.xMenu.ListItem_tag, @ABuffer[pos], 4); inc(pos, 4); CopyMemory(@AMyMenu.xMenu.ValueListItem_id, @ABuffer[pos], 4); inc(pos, 4); CopyMemory(@AMyMenu.xMenu.ValueListItem_tag, @ABuffer[pos], 4); inc(pos, 4); CopyMemory(@AMyMenu.xMenu.xData, @ABuffer[pos], 4); inc(pos, 4); CopyMemory(@AMyMenu.xMenu.dd, @ABuffer[pos], 2); inc(pos, 2); CopyMemory(@AMyMenu.xMenu.StringID, @ABuffer[pos], 2); inc(pos, 2); AMyMenu.xMenu.StringID:= convert_word(AMyMenu.xMenu.StringID); CopyMemory(@AMyMenu.xMenu.Name[1], @ABuffer[pos], 34); inc(pos, 34); AMyMenu.xMenu.state_tag:= ABuffer[pos]; inc(pos, 1); AMyMenu.xMenu.Trash_modifiable:= ABuffer[pos]; inc(pos, 1); //if AMyMenu.MenuType = $05 then AvailMenuLink[AMyMenu.SeemLinkNum+1]:= AMyMenu.SeemLinkNum+1; tmp:= ''; // for i:= 1 to 32 do tmp:= tmp + AMyMenu.xMenu.Name[pos+i-1]; // inc(pos, 32); // AMyMenu.Name:= UCS2ACSI(tmp, true); //check visible idx:= AMyMenu.xMenu.Index div 8; //какой оффсет проверять xValue:= SEEM_SHORTCUT_SLOTS[idx]; iBit:= AMyMenu.xMenu.Index mod 8; //какой бит проверять iBit:= Round(power(2, iBit)); res:= boolean(xValue and iBit); AMyMenu.IsVisible:= res; end;
Еще записи по теме
- Модуль "P2KApi" (часть 36) - TP2KAPI.File_Delete
- Модуль "Мое меню" (часть 15) - DeleteMyMenu
- Модуль "Справочник" (часть 35) - FillListAbonentsEx
- Модуль "P2KApi" (часть 79) - TP2KAPI.SendCmd
- Модуль "P2KApi" (часть 55) - TP2KAPI.SendAddr
- Модуль "Справочник" (часть 18) - Abonent_Save
- Модуль "P2KApi" (часть 30) - TP2KAPI.File_Close
