Шаблон  RedBox

Этот control шаблон делает одну простую вещь, которую проще один раз увидеть, чем описать словами:

RedBox.gif (3949 bytes)

Он выделяет текущий активный control  красной рамочкой, что визуально выделяет его относительно других полей.  Это упрощает жизнь пользователю, так как он всегда знает где в данный момент находится фокус.  Я использую этот шаблон в каждой форме ввода данных.

Помимо своей основной функции этот шаблон дополнительно решает еще две задачи.  Во-первых, он меняет "обои" окна, если форма вызвана для выполнения операции УДАЛЕНИЯ записи.  Во-вторых, изменяется вид кнопки ?Cancel, если в форме было изменено хотя бы одно поле.   При этом меняется значок кнопки с '~Close.ico' на '~Cancel.ico'.   Заодно меняется и атрибут TIP этой кнопки с 'Выход' на  'Отменить'.    Значки 'Close.ico' и 'Cancel.ico' должны быть добавлены в проект, а имя файла "обоев" окна, выводимых при операции удаления, должно находиться в глобальной переменной G:FormDel.

#! =============================================
#CONTROL (RedBox, 'Выделение активного control')
#! =============================================
#DISPLAY ('')
#DISPLAY ('Выделяет активный control красным прямоугольником.')

#DISPLAY ('Изменяет обои при УДАЛЕНИИ и меняет атрибуты ?Cancel')
#DISPLAY ('')
#DISPLAY ('Префикс pimary-файла:')
#PROMPT ('Префикс файла:', @s3), %PrimaryFilePrefix, REQ, DEFAULT(%FilePrefix)
#DISPLAY ('')
#DISPLAY ('')
  CONTROLS
    BOX,AT(3,3,3,3),USE(?RedBox),ROUND,COLOR(COLOR:Red),LINEWIDTH(1),HIDE
  END
#!
#AT (%BeforeAccept)
  ?RedBox{prop:HIDE} = ''
  ?RedBox{prop:ROUND} = 1
  ?RedBox{prop:Color} = COLOR:Red
  ?RedBox{prop:LINEWIDTH} = 1
#ENDAT
#!
#! --- 'CASE EVENT() structure, before generated code'
#AT (%EventCaseBeforeGenerated)
  of event:Selected
    contr# = selected()
    ?RedBox{prop:XPos}  = contr#{prop:XPos}-2
    ?RedBox{prop:YPos}  = contr#{prop:YPos}-2
    ?RedBox{prop:Width} = contr#{prop:Width}+4
    ?RedBox{prop:Height}= contr#{prop:Height}+4
#ENDAT
#!
#AT (%PrepareAlerts)
  if LocalRequest = ChangeRecord
    ?Cancel{prop:Icon} = '~Close.ico'
    ?Cancel{prop:Tip} = 'Выход'
  elsif LocalRequest = DeleteRecord
    THIS{prop:Wallpaper} = G:FormDel
    THIS{prop:TILED} = '1'
  .
#ENDAT
#!
#! --- 'Accept Loop, After CASE FIELD() handling'
#AT (%AcceptLoopAfterFieldHandling)
  if ~THIS{prop:AcceptAll} and event()=EVENT:Accepted
    if Sav::%PrimaryFilePrefix:Record <> %PrimaryFilePrefix:Record
      ?Ok{prop:Disable} = ''
      ?Cancel{prop:Icon} = '~Cancel.ico'
      ?Cancel{prop:Tip} = 'Отменить'
    .
  .
#ENDAT

Hosted by uCoz