EJunGrid使用总结

1   1。0版没有实现垂直方向上的对齐,

procedure TOBGUI_ReportDesign.gridDrawCellText(ACanvas: TCanvas; const ARect: 
        TRect; const ACoord: TPoint; AGrid: TZJGrid; const Text: String; var 
        ADefaultDraw: Boolean);
begin
  if agrid.Cells[acoord.X,acoord.Y].TextAlign = gaTopCenter then
  begin
    adefaultdraw := false;
    acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
    arect.Top,text);
  end
  else
    if grid.Cells[acoord.X,acoord.Y].TextAlign = gaBottomCenter then
    begin
      adefaultdraw := false;
      acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
        arect.Bottom-acanvas.TextHeight(text),text);
    end
    else
      if grid.Cells[acoord.X,acoord.Y].TextAlign = gaTopLeft then
      begin
        adefaultdraw := false;
        acanvas.TextRect(arect,arect.Left,arect.Top,text);
      end
      else
        if grid.Cells[acoord.X,acoord.Y].TextAlign =gaTopRight then
        begin
          adefaultdraw := false;
          acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),arect.Top,text);
        end
        else
          if grid.Cells[acoord.X,acoord.Y].TextAlign =gaBottomLeft then
          begin
            adefaultdraw:= false;
            acanvas.TextRect(arect,arect.Left,arect.Bottom-acanvas.TextHeight(text),text);
          end
          else
            if grid.Cells[acoord.X,acoord.Y].TextAlign =gabottomright then
            begin
              adefaultdraw := false;
              acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),arect.Bottom-acanvas.TextHeight(text),text);
            end;
  
end; 

2  晕,2。5版更厉害,所有的对齐都不管用,还有如果按照上面的方式修改之后,

当使用了非gaCenterCenter对齐之后,在cell上面设置颜色的话,无法刷出颜色来。但是cell的背景色的值确实被设定。

所以如下,主要利用canvas:

procedure TOBGUI_ReportDesign.gridDrawCellText(ACanvas: TCanvas;
  const ARect: TRect; const ACoord: TPoint; AGrid: TEjunGrid;
  const Text: String; var ADefaultDraw: Boolean);
begin
  if agrid.Cells[acoord.X,acoord.Y].TextAlign = gaTopCenter then
  begin
    adefaultdraw := false;
    ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
    ACanvas.Rectangle(ARect);
    acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
    arect.Top,text);
  end
  else
    if grid.Cells[acoord.X,acoord.Y].TextAlign = gaBottomCenter then
    begin
      adefaultdraw := false;
      ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
        ACanvas.Rectangle(ARect);
      acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
        arect.Bottom-acanvas.TextHeight(text),text);
    end
    else
      if grid.Cells[acoord.X,acoord.Y].TextAlign = gaTopLeft then
      begin
        adefaultdraw := false;
        ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
          ACanvas.Rectangle(ARect);
        acanvas.TextRect(arect,arect.Left,arect.Top,text);
      end
      else
        if grid.Cells[acoord.X,acoord.Y].TextAlign =gaTopRight then
        begin
          adefaultdraw := false;
          ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
            ACanvas.Rectangle(ARect);
          acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),arect.Top,text);
        end
        else
          if grid.Cells[acoord.X,acoord.Y].TextAlign =gaBottomLeft then
          begin
            adefaultdraw:= false;
            ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
              ACanvas.Rectangle(ARect);
            acanvas.TextRect(arect,arect.Left,arect.Bottom-acanvas.TextHeight(text),text);
          end
          else
            if grid.Cells[acoord.X,acoord.Y].TextAlign =gabottomright then
            begin
              adefaultdraw := false;
              ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
                ACanvas.Rectangle(ARect);
              acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),
                arect.Bottom-acanvas.TextHeight(text),text);
            end
            else
              if grid.Cells[ACoord.X,ACoord.Y].TextAlign= gacenterleft then
              begin
                adefaultdraw := false;
                ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
                  ACanvas.Rectangle(ARect);
                acanvas.TextRect(arect,arect.Left,
                  (arect.Bottom-ARect.Top-ACanvas.TextHeight(text))div 2+ARect.Top,text);
              end
              else
                if grid.Cells[ACoord.X,ACoord.Y].TextAlign= gacenterright then
                begin
                  adefaultdraw := false;
                  ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
                    ACanvas.Rectangle(ARect);
                  acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),
                    (arect.Bottom-ARect.Top-ACanvas.TextHeight(text))div 2+ARect.Top,text);
                end;

end;

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值