关于位运算的有关问题!

关于位运算的问题!!
我在做的一个模块是配置按钮的模块
Treeview1是显示侯选图标的,Treeview2是显示已选图标的,之前我定义了一个结构体的,比如已选的话visible为 '1 ',否则为0!
现在我的问题是已选的这些图标又要分别给他们分配使用领域,比如 '打开 '这个按钮要在画图程序和压缩这两个程序里面都用到!但是 '打印 '这个按钮则只是在画图这个程序里面使用!压缩程序不使用这个按钮!
项目开发要求使用位运算来配置每个按钮!我该怎么做!!请各位高手指教!不盛感激!



------解决方案--------------------
给没个程序分配一个Integer类型的属性Property,
例如
画图程序 := 3
压缩程序 := 1
这里要自己规定,例如 属性的第一位即1代表 打开 的可见属性,
而第二2位代表 打印的可见属性.
在这里
画图程序 = 3 就是说他1+2即两个按妞都有,但是怎么去实现呢?可以这样写,
两个程序的代码都一样
打开.Visible := (Property and 1 =1); //画图3 and 1 = 1 true,压缩 1 and 1=1 true
打印.Visible := (Property and 2 =2); //画图3 and 2 = 2 true,压缩1 and 2=0 false



------解决方案--------------------
多看看windows.pas文件就明白了

比如这样

const
A = $0001;
B = $0002;
C = $0004;
D = $0008;

那么就可以这样用了
Flag := A or B or C or D; //a,b,c,d都有
if (Flag and A) = A then //包含A;