EJunGrid使用總結

來源:互聯網
上載者:User

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;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.