字体数据(字体、字形、颜色、大小)保存至paradox表中,再从表中返回到相应的参数。保存时字形和颜色不能通过,从表中返回相应的数据时,除大小外,其它的都不行,请问该怎么做?
var
sz1size:integer;
sz1style:tfontstyles;
sz1color:tcolor;
sz1fname:tfontname;
begin
if not FontDialog1.Execute Then Exit;
sz1fname:=FontDialog1.Font.Name ;
sz1size:= FontDialog1.Font.size ;
sz1style:= FontDialog1.Font.Style ;
sz1color:= FontDialog1.Font.color;
//字体数据送表中
table1.FieldByName('sz1fname').AsVariant:=sz1fname;
table1.FieldByName('sz1size').Asinteger:=sz1size;
table1.FieldByName('sz1style').AsVariant:=sz1style;
table1.FieldByName('sz1color').AsVariant:=sz1color;
//从表中读数据至参数中
sz1fname:=query1.fields[1].AsVariant;
sz1size:=query1.fields[2].AsInteger ;
sz1style:=query1.fields[3].AsVariant;
sz1color:=query1.fields[4].AsVariant;end;
(部分代码)
var
sz1size:integer;
sz1style:tfontstyles;
sz1color:tcolor;
sz1fname:tfontname;
begin
if not FontDialog1.Execute Then Exit;
sz1fname:=FontDialog1.Font.Name ;
sz1size:= FontDialog1.Font.size ;
sz1style:= FontDialog1.Font.Style ;
sz1color:= FontDialog1.Font.color;
//字体数据送表中
table1.FieldByName('sz1fname').AsVariant:=sz1fname;
table1.FieldByName('sz1size').Asinteger:=sz1size;
table1.FieldByName('sz1style').AsVariant:=sz1style;
table1.FieldByName('sz1color').AsVariant:=sz1color;
//从表中读数据至参数中
sz1fname:=query1.fields[1].AsVariant;
sz1size:=query1.fields[2].AsInteger ;
sz1style:=query1.fields[3].AsVariant;
sz1color:=query1.fields[4].AsVariant;end;
(部分代码)
從數据庫抓出后, 寫几個函數進行轉換;
function ConvertColor(n: Integer): TColor;
begin
case n of
0: Result := clRed;
1: Result := clGreen;
2: ...
...
end;...
你说的我不太明白。颜色的内容少一点,但字体呢, 其数量不下百种吧,难道要一个个地用case写进去吗?请你说明白一点,这方面我还是第一次接触,还请指教。
fontcolor: integer
fontsize: integer;fontstyle: String;//这是一个集合类型的数据,具体的值可以为0,1,2,3四个值转换成字符串的组合。
例如可以取:'01' '023', '123','0123'等值,读写的时候进行转化://读数据库的时候
var fStyle:TFontStyles;fstyle:=[];
if pos('0',Table1.FieldByName('szstyle').Asstring) >=0 then
fstyle:=fstyle+[fsblod];
if pos('1',Table1.FieldByName('szstyle').Asstring) >=0 then
fstyle:=fstyle+[fsItalic];
if pos('2',Table1.FieldByName('szstyle').Asstring) >=0 then
fstyle:=fstyle+[fsUnderLine];
if pos('3',Table1.FieldByName('szstyle').Asstring) >=0 then
fstyle:=fstyle+[fsStrukeOut];//写入数据库的时候作相应的转换
帮忙帮到底,写入数据库的时候怎么写?
if fsblod in sz1style then
StyleStr:=StyleStr + '0';
if fsItalic in sz1style then
StyleStr:=StyleStr + '1';
if fsUnderLine in sz1style then
StyleStr:=StyleStr + '2';
if fsStrukeOut in sz1style then
StyleStr:=StyleStr + '3';
Table1.FieldByName('szstyle').Asstring) := StyleStr;
//别的属性保存都好说了吧