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

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

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

Postby fps » Tue 22 Sep, 2015 06:48

Хочу сделать макрос, который бы не давал удалить файлы с атрибутом ReadOnly.
Сделал вот такое (большая часть кода - копипаста из какакого-то скрипта с форума):
Code: [Select all] [Expand/Collapse] [Download] (HackRoDialog.lua)
  1. Event
  2.  {
  3.   description="Hack AskDeleteRoDialog"; group="DialogEvent"; action=function(ev,arg)
  4.    if ev==far.Flags.DE_DEFDLGPROCINIT and arg.Msg==far.Flags.DN_INITDIALOG then
  5.     local dlgInf= arg.hDlg:send(far.Flags.DM_GETDIALOGINFO);
  6.     if dlgInf then
  7.  
  8.      if dlgInf.Id==win.Uuid("8D4E84B3-08F6-47DF-8C40-7130CD31D0E6") then -- DeleteAskDeleteROId
  9.       mf.postmacro(function()
  10.        Keys("Right Right"); -- Skip as default action for RO files
  11.       end)
  12.      end
  13.  
  14.     end
  15.    end
  16.   end;
  17.  }

Работает. Делает кнопкой по умолчанию "Skip"
А как бы еще сделать неактивными, "серыми" первые две кнопки диалога (Delete и All)?

Shmuel
Posts: 4911
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Tue 22 Sep, 2015 07:00

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: 161
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 9 times
Been thanked: 3 times

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

Postby fps » Tue 22 Sep, 2015 07:05

То, что надо. Спасибо.

Shmuel
Posts: 4911
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Tue 22 Sep, 2015 08:12

Можно обойтись и без 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: 161
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 9 times
Been thanked: 3 times

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

Postby fps » Tue 22 Sep, 2015 08:44

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

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

Если отключать только вторую кнопку (All), то зацикливание не портится.

Shmuel
Posts: 4911
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

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

Postby Shmuel » Tue 22 Sep, 2015 08:59

fps wrote:Source of the post Странный побочный эффект после срабатывания макроса(или баг):

Да, я это тоже заметил. Похоже на баг.


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

Who is online

Users browsing this forum: No registered users and 1 guest