как сделать кнопку диалога неактивной?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

как сделать кнопку диалога неактивной?

Post by fps »

Хочу сделать макрос, который бы не давал удалить файлы с атрибутом ReadOnly.
Сделал вот такое (большая часть кода - копипаста из какакого-то скрипта с форума):
  1. Event
  2.  
  3.  {
  4.  
  5.   description="Hack AskDeleteRoDialog"; group="DialogEvent"; action=function(ev,arg)
  6.  
  7.    if ev==far.Flags.DE_DEFDLGPROCINIT and arg.Msg==far.Flags.DN_INITDIALOG then
  8.  
  9.     local dlgInf= arg.hDlg:send(far.Flags.DM_GETDIALOGINFO);
  10.  
  11.     if dlgInf then
  12.  
  13.  
  14.  
  15.      if dlgInf.Id==win.Uuid("8D4E84B3-08F6-47DF-8C40-7130CD31D0E6") then -- DeleteAskDeleteROId
  16.  
  17.       mf.postmacro(function()
  18.  
  19.        Keys("Right Right"); -- Skip as default action for RO files
  20.  
  21.       end)
  22.  
  23.      end
  24.  
  25.  
  26.  
  27.     end
  28.  
  29.    end
  30.  
  31.   end;
  32.  
  33.  }
Работает. Делает кнопкой по умолчанию "Skip"
А как бы еще сделать неактивными, "серыми" первые две кнопки диалога (Delete и All)?
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

как сделать кнопку диалога неактивной?

Post 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);
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

как сделать кнопку диалога неактивной?

Post by fps »

То, что надо. Спасибо.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

как сделать кнопку диалога неактивной?

Post 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)
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

как сделать кнопку диалога неактивной?

Post by fps »

Спасибо. Так еще лучше.

Странный побочный эффект после срабатывания макроса(или баг):
если в этом диалоге понажимать Tab, то "курсор" останавливается на последней кнопке (Cancel).
Причем поведение Shift+Tab остается прежним - "курсор" перемещает циклически как и раньше.

Если отключать только вторую кнопку (All), то зацикливание не портится.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

как сделать кнопку диалога неактивной?

Post by Shmuel »

fps wrote: Странный побочный эффект после срабатывания макроса(или баг):
Да, я это тоже заметил. Похоже на баг.
Post Reply

Return to “Нужна помощь”