像StringDrid, DrawDrid 都无法实现上述功能。
下面是我定义的结构体:
{字体结构}
TFontStruct = record
fsSize : integer; //字体大小
fsItalic : byte; //斜体标志
fsWeight : byte; //粗体标志
fsUnderLined : byte; //下划线标志
fsDirection : byte; //文字标志
fsReserved : array[0..15] of byte; //保留
fsFaceName : array[0..LF_FACESIZE-1] of widechar; //字体字样名称
end;
{文本结构}
TTextStruct = record
tsFont : TFontStruct; //字体结构
tsFrontColor : longword; //前景颜色
tsBackColor : longword; //背景颜色
tsAlign : longword; //对齐颜色
tsReserved : array[0..15] of byte; //保留
tsText : array[0..255] of char; //文本内容
end;
{方格单元结构}
PCellStruct = ^TCellStruct;
TCellStruct = record
csX : integer; //坐标X
csY : integer; //坐标Y
csWidth : integer; //该单元方格的宽度
csHeight : integer; //该单元方格的高度
csStyle : integer; //该单元方格的类型[1]
csCombinedWidth : integer; //合并后的总宽度
csCombinedHeight : integer; //合并后的总高度
csEXistsText : integer; //文本是否存在
csSlash : integer; //斜线标志[2]
csReserved : array[0..15] of byte; //保留
csText : TTextStruct; //文本结构
end;
{注:[1] csStyle = 0 时,为独立的方格单元。
csStyle = 1 时,为合并后的母方格。
csStyle = 2 时,为合并后的子方格。
当且仅当 csStyle = 1 时 csCombinedWidth 与 csCombinedHeight 才有效。
[2] csSlash = (0:无; 1:正斜; 2:反斜)
当 csSlash 不为 0 时,csText 无效。
}
{网格结构}
TGridStruct = record
gsFlag : array[0..3] of char; //网格标识 'Grid'
gsRow : integer; //网格行数
gsCol : integer; //网格列数
gsWidth : integer; //网格宽度
gsHeight : integer; //网格高度
gsBorderStyle : integer; //边框线类型(0:实线; 1:虚线1; 2:虚线2)
gsBorderWeight : integer; //边框线粗度
gsBorderColor : integer; //边框线颜色
gsGridLineStyle : integer; //格子线类型
gsGridLineWeight : integer; //格子线粗度
gsGridLineColor : integer; //格子线颜色
gsFixedRow : integer; //固定行
gsFixedCol : integer; //固定列
gsFixedRowLineStyle : integer; //固定行的边框线类型
gsFixedRowLineWeight: integer; //固定行的边框线粗度
gsFixedRowLineColor : integer; //固定行的边框线颜色
gsFixedColLineStyle : integer; //固定行的边框线类型
gsFixedColLineWeight: integer; //固定行的边框线粗度
gsFixedColLineColor : integer; //固定行的边框线颜色
gsEvenColor : longword; //偶数行颜色
gsOddColor : longword; //奇数行颜色
gsReserved : array[0..15] of byte;//保留
gsExistsTitle : integer; //是否存在标题
gsTitle : TTextStruct; //标题结构
end;
还有相关的类。但还是觉得这样做不好,应该怎样做呢?