在论坛里查了n久也没找到解决的方法,请问我有张表都是化学分子式为字段名的,我用dbgrid显示的时候怎么显示出下标来呢?数据库里面好像是无法区分下标的,所以存的时候字段名是按照如:H2O这样存的

解决方案 »

  1.   

    那还是不要用DBGrid了,用StringGrid吧
      

  2.   

    不过只能解决分子式问题,如H2C3O4之类的
      

  3.   

    //其实也很简单,能不能看懂下面的代码
    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;
      

  4.   

    为什么我跟踪调试发现程序没有进入drawdatacell这个过程中去?
      

  5.   

    好像手动设置了dbgrid的列它就不进入drawdatacell,但是我试了不完全自动选取可是Field.Name一直是空值啊,不知道怎么回事