Page 1 of 1
как сделать кнопку диалога неактивной?
Posted: Tue 22 Sep, 2015 06:48
by fps
Хочу сделать макрос, который бы не давал удалить файлы с атрибутом ReadOnly.
Сделал вот такое (большая часть кода - копипаста из какакого-то скрипта с форума):
Event
{
description="Hack AskDeleteRoDialog"; group="DialogEvent"; action=function(ev,arg)
if ev==far.Flags.DE_DEFDLGPROCINIT and arg.Msg==far.Flags.DN_INITDIALOG then
local dlgInf= arg.hDlg:send(far.Flags.DM_GETDIALOGINFO);
if dlgInf then
if dlgInf.Id==win.Uuid("8D4E84B3-08F6-47DF-8C40-7130CD31D0E6") then -- DeleteAskDeleteROId
mf.postmacro(function()
Keys("Right Right"); -- Skip as default action for RO files
end)
end
end
end
end;
}
Работает. Делает кнопкой по умолчанию "Skip"
А как бы еще сделать неактивными, "серыми" первые две кнопки диалога (Delete и All)?
как сделать кнопку диалога неактивной?
Posted: Tue 22 Sep, 2015 07:00
by Shmuel
Code: Select all
Keys("Right Right"); -- Skip as default action for RO files
arg.hDlg:send(far.Flags.DM_ENABLE,6,0);
arg.hDlg:send(far.Flags.DM_ENABLE,7,0);
как сделать кнопку диалога неактивной?
Posted: Tue 22 Sep, 2015 07:05
by fps
То, что надо. Спасибо.
как сделать кнопку диалога неактивной?
Posted: Tue 22 Sep, 2015 08:12
by Shmuel
Можно обойтись и без mf.postmacro:
Code: Select all
arg.hDlg:send(far.Flags.DM_SETFOCUS,8,0)
arg.hDlg:send(far.Flags.DM_ENABLE,6,0)
arg.hDlg:send(far.Flags.DM_ENABLE,7,0)
как сделать кнопку диалога неактивной?
Posted: Tue 22 Sep, 2015 08:44
by fps
Спасибо. Так еще лучше.
Странный побочный эффект после срабатывания макроса(или баг):
если в этом диалоге понажимать Tab, то "курсор" останавливается на последней кнопке (Cancel).
Причем поведение Shift+Tab остается прежним - "курсор" перемещает циклически как и раньше.
Если отключать только вторую кнопку (All), то зацикливание не портится.
как сделать кнопку диалога неактивной?
Posted: Tue 22 Sep, 2015 08:59
by Shmuel
fps wrote: Странный побочный эффект после срабатывания макроса(или баг):
Да, я это тоже заметил. Похоже на баг.