我用的连接数据库的方式是
ADOConnection+ADOQuery+DataSource+DBGrid
用ADOQuery发送sql命令执行对数据库的操作
现在需要对字段名进行重绘,为了实现下标的显示
在DBGrid的属性里设置了部分列的fieldname和title的caption属性,现在要通过drawdatacell事件来对字段名的字体进行设置程序如下:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
value:String;
lp,i,FontSize,h:Integer;
begin
if Field.Name='分子式' then
begin
lp:=1;
value:=Field.AsString;
with DBGrid1 do
begin
FontSize:=Canvas.Font.Size;
for i:=1 to Length(value) do
begin
if value[i] in ['0'..'9'] then
Canvas.Font.Size:=FontSize -3
else
Canvas.Font.Size:=FontSize;
Canvas.TextOut(lp,Rect.Bottom-Canvas.TextHeight(value[i])-1,value[i]);
lp:=lp+Canvas.TextWidth(value[i]);
end;
end;
end
else
DBGrid1.DefaultDrawDataCell(Rect,Field,State);
end;但是当我在dbgrid里面设置过fieldname后就不进入这个过程,如果不设置fieldname会一直在执行这个过程,但是Field.Name一直为'',请问该如何解决这个问题
ADOConnection+ADOQuery+DataSource+DBGrid
用ADOQuery发送sql命令执行对数据库的操作
现在需要对字段名进行重绘,为了实现下标的显示
在DBGrid的属性里设置了部分列的fieldname和title的caption属性,现在要通过drawdatacell事件来对字段名的字体进行设置程序如下:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
value:String;
lp,i,FontSize,h:Integer;
begin
if Field.Name='分子式' then
begin
lp:=1;
value:=Field.AsString;
with DBGrid1 do
begin
FontSize:=Canvas.Font.Size;
for i:=1 to Length(value) do
begin
if value[i] in ['0'..'9'] then
Canvas.Font.Size:=FontSize -3
else
Canvas.Font.Size:=FontSize;
Canvas.TextOut(lp,Rect.Bottom-Canvas.TextHeight(value[i])-1,value[i]);
lp:=lp+Canvas.TextWidth(value[i]);
end;
end;
end
else
DBGrid1.DefaultDrawDataCell(Rect,Field,State);
end;但是当我在dbgrid里面设置过fieldname后就不进入这个过程,如果不设置fieldname会一直在执行这个过程,但是Field.Name一直为'',请问该如何解决这个问题
解决方案 »
- ComboBox1怎样根据ID显示默认值?
- 哪些组件可以使用画布canvas绘制控件(我知道form可以)?
- 怎样使Application通过Web验证(Http-Server)并保存会话状态???
- 散点分,活跃下人气
- TADOQuery与TClientDataSet的不同
- 急,一个菜鸟级的问题!
- 在FastReport246中怎样实现每页只打印一条记录?
- 数据库是SQL server,有个表的字段是numeric型,小数位数15位,通过ADOTable连接,但输入有10位数字后,保存、显示只有4位小数,何解?
- 各位大侠。。。。有没有人知道怎么在Oracle数据库中控制每次用Select语句去记录只取一条
- 100分求 tesseract-ocr delphi 怎么调用?
- orchidbing(米饼) 、zhlwyy(海龙) 、linzhengqun(风) 、sunnycool() 、pandarus(Delphi/Asp里流浪的云) 请进!
- 如何知道一个进程是否正在运行???
取的不是分子式比如H2O的值而是里面的数据比如30(是百分含量)
这段代码是别人告诉我的,但是一直没有试成功,如果有高手请指教
用 if fieldname='' then 来判断,因该是没有问题的!
http://community.csdn.net/Expert/TopicView1.asp?id=3257611