Да, исходя из всего вышеописанного Вы должны использовать скрипт, который мы предложили. Т.к. кнопки должны работать с одной переменной, а менять свой вид (цвет и цвет рамки) должны в зависимости от значения бита другой переменной - то здесь можно предложить только это решение.
от куда берется состояние бита , ведь в условии только только бит с которым нужно работать
Если подробно, то GetBit - это функция, которая берет нужный бит из целого числа и возвращает его значение как тип Boolean. Т.е. если этот бит равен 1, то она вернёт True, если этот бит равен 0 то она вернёт False. Это позволяет писать так:
if GetBit(dword.Value, 0) then
...
else
...
, а это одно и то же, что и:
if GetBit(dword.Value, 0) = True then
...
else
...
Т.к. GetBit возвращает Boolean, а не какой-то другой тип, то мы может использовать сокращенное сравнение, как в первом варианте.
А ещё можно писать так:
if not GetBit(dword.Value, 0) then
...
else
...
, это одно и то же, что и:
if GetBit(dword.Value, 0) = False then
...
else
...