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;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值