Процедура SetEnableCommand Назад В начало Вперед

Назначение

Процедура разрешает или запрещает команду.

Описание

procedure SetEnableCommand (aCommand : word;
							bEnable : boolean );

Параметры

aCommand : word - имя команды.

bEnable : boolean - разрешить команду (true) или запретить (false).

Примечание

Метод SetEnableCommand доступен в Атлантис 5.1 и выше.

Пример

#commands start at 7700

// константы
const
  scTest	= 7500;
  CountCmd	= 7;
  cmMyIfc	 = 3123;
  cmMyDialog  = 3124;
  cmMyMenu	= 3130;
  cmValue1	= 3126;
  cmValue2	= 3127;
  cmValue3	= 3128;
  cmMyTest	= 3129;
end;

// строка статуса
commandExampleStLine statusLine {
  (scTest..scTest) {
	'~F2~ Интерфейс', 			 cmMyIfc	, kbF2;
	'~F3~ cmDialog', 			cmMyDialog , kbF3;
	'~F5~ cmValue1', 			cmValue1   , kbF5;
	'~F6~ cmValue2', 			cmValue2   , kbF6;
	'~F7~ cmValue3', 			cmValue3   , kbF7;
	'~F8~ Разрешить/Запретить 1,2,3', cmMyTest   , kbF8;
	'~F9~ Лок. меню', 			 cmMyMenu   , kbF9;
  }
}

// Основной интерфейс
interface commandExample 'Пример управления командами' (,,scTest);
  show at (5,5,45,16);

  var allCommands : array[0..6] of word;
	commands	: array[1..2] of word;

  #if #__TOOLVERSION__ < 5001.00
  procedure SetEnableCommand (aCommand : word; bEnable : boolean);
  {
	if bEnable EnableCommand  (aCommand)
		else DisableCommand (aCommand);
  }
  #end

  // получить маску команд по их состоянию
  function GetCommandMask : longInt;
  var res, i : longInt;
  {
	res := 0;
	for (i := 0; i < countCmd; i := i + 1)
	if CommandEnabled(allCommands[i]) res := res or (1 shl i);
	GetCommandMask := res;
  }

  // установить состояние команд по маске
  procedure SetCommandMask ( aMask : longInt );
  var i : longInt;
  {
	for (i := 0; i < countCmd; i := i + 1)
	SetEnableCommand (allCommands[i], (aMask and (1 shl i)) <> 0);
  }

  create view;

  screen scrEmpty;
	noTableNavigation;
	buttons
	cmMyIfc	;
	cmMyDialog ;
	cmValue1   ;
	cmValue2   ;
	cmValue3   ;
	cmMyTest   ;
	cmMyMenu   ;
	fields
	GetCommandMask : noProtect;
<<

   Загрузите StatusLine "CommandExampleStLine"
	`&Команды`
	 [.] cmMyIfc	`<. Интерфейс .>
	 [.] cmMyDialog `<. cmMyDialog.>
	 [.] cmValue1   `<. cmValue1  .>
	 [.] cmValue2   `<. cmValue2  .>
	 [.] cmValue3   `<. cmValue3  .>
	 [.] cmMyTest   `<. cmMyTest  .>
	 [.] cmMyMenu   `<. cmMyMenu  .>
					`		 `
>>
  end;

  handleEvent
	cmInit : {
	DisableCommand(cmValue1);
	commands[1] := cmValue2;
	commands[2] := cmValue3;

	allCommands[0] := cmMyIfc	;
	allCommands[1] := cmMyDialog ;
	allCommands[2] := cmValue1   ;
	allCommands[3] := cmValue2   ;
	allCommands[4] := cmValue3   ;
	allCommands[5] := cmMyTest   ;
	allCommands[6] := cmMyMenu   ;
	DisableCommands(commands);
}
	cmMyIfc	 : RunInterface(commandExampleInh);
	cmMyDialog  : Message ('Команда cmDialog');
	cmMyMenu	: {
	DisableCommand(cmSaveDataBase);
	RunMenu('vspom');
}
	cmMyTest : {
	if CommandEnabled(cmValue1) {
		DisableCommand(cmValue1);
		DisableCommands(commands);
} else {
		EnableCommand(cmValue1);
		EnableCommands(commands);
}
	RereadRecord (tnNoTable);
}
	cmCheckField : PackFields;
	cmExprFieldChanged : SetCommandMask (LongInt (exprFieldValue));
  end;
end.

interface commandExampleInh 'Интерфейс, наследующий множество команд' (,,scTest) inheritCommands;
  show at (10,10,55,12);
  create view;
  screen scrEmpty;
	noTableNavigation;
<<
>>
  end;
end.

Смотрите также

EnableCommand, EnableCommands, DisableCommand, DisableCommands, CommandEnabled.