tavria2

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору DenVl Полный код: Код: tCD = {}; --создаем пустую таблицу CD-приводов tDrive = Drive.Enumerate(); --получаем таблицу приводов if (tDrive) then --если в системе есть приводы nn = 1; --индекс привода for n, cDrive in tDrive do nType = Drive.GetType(cDrive); --тип привода if (nType == DRIVE_CDROM) then --если привод имеет тип CD tCD[nn] = cDrive; --добавляем привод в таблицу CD-приводов nn = nn + 1; --наращиваем индекс end end end -- Добавляем/заменяем подменю для отображения CD-приводов function AddItem(cText, nID, lChecked, lEnabled, nSubMenu) tblMenu[1].SubMenu[1].SubMenu[nSubMenu] = {}; -- создаем пункт подменю tblMenu[1].SubMenu[1].SubMenu[nSubMenu].Text = cText; -- текст пункта подменю tblMenu[1].SubMenu[1].SubMenu[nSubMenu].ID = nID; -- идентификатор пункта подменю tblMenu[1].SubMenu[1].SubMenu[nSubMenu].Checked = lChecked; -- отмеченный/неотмеченный пункт подменю tblMenu[1].SubMenu[1].SubMenu[nSubMenu].Enabled = lEnabled; -- активный/неактивный пункт подменю end cCheckDrive = Application.LoadValue("MyApp", "Drive"); -- читаем из реестра выбранный привод tblMenu = Application.GetMenu(); -- получаем структуру меню приложения if (tCD) then -- если есть CD-приводы tblMenu[1].SubMenu[1].SubMenu = {}; -- создаем пустое подменю nItem = 1; -- порядковый номер пункта подменю for n, cText in tCD do -- в цикле создаем пункт подменю для каждого CD-привода nID = 1000 + nItem; -- уникальный идентификатор для каждого пункта подменю if (cText == cCheckDrive) then -- если привод выбран AddItem(cText, nID, true, true, nItem); -- заполняем структуру пункта подменю else AddItem(cText, nID, false, true, nItem); -- заполняем структуру пункта подменю end nItem=nItem+1; -- наращиваем порядковый номер пункта подменю end Application.SetMenu(tblMenu); -- сохраняем меню end | Событие On Menu: Код: nID = e_ID; -- сохраняем значение ID пункта function g_OnUpdateMenuCheck(e_ID, e_ItemInfo) if (e_ID == nID and nID > 1000) then -- если выбранный пункт принадлежит CD-приводу return true; -- помечаем выбранный пункт elseif (e_ID ~= nID and nID > 1000) then -- если невыбранные пункты CD-приводов return false; -- снимаем метки end end if (e_ID > 1000) then -- если выбранный пункт является CD-приводом Application.SaveValue("MyApp", "Drive", e_ItemInfo.Text); -- сохраняем его в реестре end | | Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 21:22 05-04-2007 | Исправлено: tavria2, 11:59 06-04-2007 |
|