XLSReadWriteII5 Color 颜色的调用和使用
一、色彩三原色
自然界,颜色是由红、绿、蓝三色组成,人眼的可见的颜色,可以通过红、绿、蓝三色按照不同的比例合成产生。
任意一种颜色由这三种原色按照一定的比例混合出来。
二、Windows系统 TColor
1、使用二进制字符串,显示TColor值
使用三组16进制的字符(对应0-255值),组建色彩。
Uses Graphics;
function StringToColor(const s:string):TColor; // 将字符串转换成TColor值,如将'clBtnFace'转换成 $02FF8800
function ColorToString(Color: TColor): string; // 将颜色值转换成字符串值
2、通过RGB值,显示TColor值
RGB中建立三个原色的亮度值:0-255,通过三个原色的(0-255)建立该色彩。
(1)RGB转换为Tcolor
function RGBToColor(R,G,B: byte): Tcolor;
begin
Result := B Shl 16 or G shl 8 or R;
end;
(2)Tcolor转换为RGB
Program ColorToRGB(Color: TColor;Var R,G,B: byte);
begin
R := Color and $FF;
G := (Color and $FF00) shr 8;
B := (Color and $FF0000) shr 16;
end;
三、XLSReadWriteII Color使用Cardnal值
经过分析Cardnal值也是三原色组成与RGB的值有相似的规则:
TColor的RGB的色彩排列值是RGB(红绿蓝),而Cardnal色彩的排列值是BGR(蓝绿红)。二者的色彩排列是反向的。
四、建立XLSReadWriteII色彩值函数
经试验XLSReadWriteII,FontColor可以使用TColor赋值带入。但使用时,一定要经过特殊的赋值。定段代码,定义带入的TColor值:
function BGRToColor(R,G,B: byte): Tcolor;
begin
Result := R Shl 16 or G shl 8 or B;
end;
五、运用
procedure TOld_ON_Frm.sButton2Click(Sender: TObject);
var s1,S2,Date1,Title1,Title2,Title3,TailTag,FileName:string;
ColWith : array[0..100] of integer; // 列宽度
RowHeight : array[0..7] of integer; // 行标题高度
i:Integer;
Font1,Font2,Font3,Font4,Font5,Font6:TFont;
function BGRToColor(R,G,B: byte): Tcolor;
begin
Result := R Shl 16 or G shl 8 or B;
end;
begin
Font1:=TFont.Create;
Font2:=TFont.Create;
Font3:=TFont.Create;
Font4:=TFont.Create;
Font5:=TFont.Create;
Font6:=TFont.Create;
Font1.Name:='宋体';
Font1.Size:=12;
Font1.Color:=BGRToColor(200,0,0); // Blue Green Red
......
XLS_DBGridEh_EXCEL_Title3_Select_Ord(
Self, //Sender 主窗体(父窗口)
DBGridEh1, //DBGrid DBGridEh
FileName, //FileName 生成文件名
Title1, //Title 标题
Title2, //Title 标题
Title3, //Title 标题
TailTag, //TailTag 尾标注
'C', //Title_1_HorizAlignmen 标题1水平对齐 L、C、R
'C', //Title_2_HorizAlignmen 标题2水平对齐
'C', //Title_3_HorizAlignmen 标题3水平对齐
'L', //TailTag_HorizAlignmen 尾标注水平对齐
Font1,
Font2,
Font3,
Font4,
Font5,
Font6,
0, //Pagetype 页面样式(0纵向,1横向)
0, //ShowZero 显示 0 (0不显示,1显示)
0, //DoSum 底栏统计汇总(0不,1可)
'', //NoSum 强制非汇总的列 格式:AAAA,BBBB,CCCC
'排序,统计,选择,入住类型,出院日期,分支,ID', // NoCol 强制非显示的列 同上
100, //percent 显示百分比
True, //SelectEnd 选择有效
'选择', //SelectField 选择字段名
ColWith, //ColWith 列宽
RowHeight, //RowHeight 行高(标题)
True, //DuplicateTitle 重复打印标题
True //Serialnumber 首列加入临时字段“序号”并加入序列号
);
end;