Alexyz21
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Angel_Ka Например форма: Код: local Items = { --[[01]] {F.DI_DOUBLEBOX, 3,1, 65,12, 0, 0,0, 0, "Custom Sort"}, --[[02]] {F.DI_TEXT, 5,2, 19,2, 0, 0,0, 0, "By Attributes: "}, --[[03]] {F.DI_EDIT, 20,2, 34,2, 0, 0,0, 0, ""}, --[[04]] {F.DI_CHECKBOX, 5,3, 30,3, 0, 0,0, 0, "&Read only"}, --[[05]] {F.DI_CHECKBOX, 5,4, 30,4, 0, 0,0, 0, "&Archive"}, --[[06]] {F.DI_CHECKBOX, 5,5, 30,5, 0, 0,0, 0, "&Hidden"}, --[[07]] {F.DI_CHECKBOX, 5,6, 30,6, 0, 0,0, 0, "&System"}, --[[08]] {F.DI_CHECKBOX, 5,7, 30,7, 0, 0,0, 0, "&Compressed"}, --[[09]] {F.DI_CHECKBOX, 5,8, 30,8, 0, 0,0, 0, "&Encrypted"}, --[[10]] {F.DI_CHECKBOX, 5,9, 30,9, 0, 0,0, 0, "Not &indexed"}, --[[11]] {F.DI_CHECKBOX, 37,3, 62,3, 0, 0,0, 0, "Sparse"}, --[[12]] {F.DI_CHECKBOX, 37,4, 62,4, 0, 0,0, 0, "Temporary"}, --[[13]] {F.DI_CHECKBOX, 37,5, 62,5, 0, 0,0, 0, "Offline"}, --[[14]] {F.DI_CHECKBOX, 37,6, 62,6, 0, 0,0, 0, "Reparse point"}, --[[15]] {F.DI_CHECKBOX, 37,7, 62,7, 0, 0,0, 0, "Virtual"}, --[[16]] {F.DI_CHECKBOX, 37,8, 62,8, 0, 0,0, 0, "Integrity stream"}, --[[17]] {F.DI_CHECKBOX, 37,9, 62,9, 0, 0,0, 0, "No scrub data"}, --[[18]] {F.DI_TEXT, -1,10, 0,0, 0, 0,0, F.DIF_SEPARATOR,""}, --[[19]] {F.DI_BUTTON, 0,11, 0,0, 0, 0,0, F.DIF_DEFAULTBUTTON+F.DIF_CENTERGROUP,"Ok"}, --[[20]] {F.DI_BUTTON, 0,11, 0,0, 0, 0,0, F.DIF_CENTERGROUP,"Cancel"} } local function DlgProc(hDlg,Msg,Param1,Param2) if Msg==F.DN_INITDIALOG then hDlg:send(F.DM_SETTEXT,3,CurAttrib) hDlg:send(F.DM_SETCHECK,4,BoxRO and F.BSTATE_CHECKED or F.BSTATE_UNCHECKED) ... NewAttrib = nil elseif Msg==F.DN_EDITCHANGE and Param1==3 then -- Attributes changed NewAttrib = hDlg:send(F.DM_GETTEXT,3) elseif Msg==F.DN_BTNCLICK and Param1==4 then -- [x] Read only BoxRO = Param2~=0 ... else return end return true end | проверка на Ok в теле action() макроса: Код: if far.Dialog(guid,-1,-1,69,14,nil,Items,nil,DlgProc)==19 then обработка выбранных атрибутов end | передавать атрибуты можно через внешние локальные переменные, либо их массив, либо одну единственную числовую переменную - битовую маску. Последний вариант имхо наиболее технически грамотный. При вводе в поле By Attributes можно реализовать не только использование чисел, но и последовательности букв, присвоенных каждому атрибуту. Буквы можно взять из luafar_manual.chm, поиск по FileAttributes, например: a - archive c - compressed d - directory e - reparse point h - hidden o - offline p - sparse file r - read only s - system file t - temporary в Items оформить так: "&a.Archive" и далее по аналогии - простора для творчества хватает |