转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
报表处理组件 BY DELPHI         ★★★★

报表处理组件 BY DELPHI

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2899 更新时间:2009/4/23 18:44:18
2;

      Y := ARect.Bottom - 2;

    end;
    -90..-46:
    begin
      Windows.GetTextMetrics(ACanvas.Handle,TextMetric);
      Interval := Ceil((TextMetric.tmHeight{ + TextMetric.tmExternalLeading})/Scaler);
      J := Interval * Texts.Count;

      if taLeft in Aligns then
        X := ARect.Left + J
      else if taHorzCenter in Aligns then
        X := (ARect.Right + ARect.Left + J) shr 1
      else {if taRight in Aligns}
        X := ARect.Right - 2;

      Y := ARect.Top + 2;
    end;
    -45..-1:
    begin
      Windows.GetTextMetrics(ACanvas.Handle,TextMetric);
      Interval := Ceil((TextMetric.tmHeight{ + TextMetric.tmExternalLeading})/Scaler);
      J := Interval * Texts.Count;

      X := ARect.Left + 2;

      if taBottom in Aligns then
        Y := ARect.Bottom - J
      else if taVertCenter in Aligns then
        Y := (ARect.Bottom + ARect.Top - J) shr 1
      else {if taTop in Aligns then}
        Y := ARect.Top + 2;

    end;
  end;

  //OldBrushStyle := ACanvas.Brush.Style;
  //ACanvas.Brush.Style := bsClear;
  for I := 0 to Texts.Count - 1 do
  begin
    case Direction of
      tdVertChinese:
      begin
        J := Length(WideString(Texts[I])) * (TextMetric.tmHeight{ + TextMetric.tmExternalLeading});

        if taBottom in Aligns then
          Y := ARect.Bottom - J
        else if taVertCenter in Aligns then
          Y := (ARect.Bottom + ARect.Top - J) shr 1
        else {if taTop in Aligns then}
          Y := ARect.Top + 2;

        TempExtent.CX := X;
        TempExtent.CY := Y;
        for J := 1 to  Length(WideString(Texts[I])) do
        begin
          S := WideString(Texts[I])[J];
          if DitheredFlag then
            DrawDitheredText(TempExtent.CX,TempExtent.CY,S)
          else begin
            //Windows.ExtTextOut(ACanvas.Handle,0,0,ETO_OPAQUE,@ARect, Nil,0,Nil);
            Windows.ExtTextOut(ACanvas.Handle, TempExtent.CX, TempExtent.CY,{ETO_OPAQUE or} ETO_CLIPPED,
              @ARect, PChar(S), Length(S),Nil);
          end;
          Inc(TempExtent.CY ,TextMetric.tmHeight{ + TextMetric.tmExternalLeading});
        end;
        Dec(X,Interval);
      end;
      0:{Horizontal}
      begin
        Windows.GetTextExtentPoint32(ACanvas.Handle, PChar(Texts[I]), Length(Texts[I]), TempExtent);
        if taRight in Aligns then
          X := ARect.Right - TempExtent.CX
        else if taHorzCenter in Aligns then
          X := (ARect.Right + ARect.Left - TempExtent.CX) shr 1
        else {if taLeft in Aligns then}
          X := ARect.Left + 2;

        if DitheredFlag then
          DrawDitheredText(X,Y,Texts[I])
        else begin
          //Windows.ExtTextOut(ACanvas.Handle,0,0,ETO_OPAQUE,@ARect, Nil,0,Nil);
          Windows.ExtTextOut(ACanvas.Handle, X, Y,{ETO_OPAQUE or} ETO_CLIPPED,
            @ARect, PChar(Texts[I]), Length(Texts[I]),Nil);
        end;
        Inc(Y,Interval);
      end;

      1..45:
      begin
        Windows.GetTextExtentPoint32(ACanvas.Handle, PChar(Texts[I]), Length(Texts[I]), TempExtent);
        J := Ceil(TempExtent.CX*Scaler);
        if taRight in Aligns then
        begin
          TempExtent.CX := ARect.Right - J;
          TempExtent.CY := Y + Ceil((X- TempExtent.CX)* Tan(Direction * Pi / 180));
        end else if taHorzCenter in Aligns then
        begin
          TempExtent.CX := (ARect.Right + ARect.Left - J) shr 1;
          TempExtent.CY := Y + Ceil((X - TempExtent.CX )* Tan(Direction * Pi / 180));
        end else {if taLeft in Aligns then}
        begin
          TempExtent.CX := ARect.Left + 2;
          TempExtent.CY := Y;
        end;
        if DitheredFlag then
          DrawDitheredText(TempExtent.CX,TempExtent.CY,Texts[I])
        else begin
          //Windows.ExtTextOut(ACanvas.Handle,0,0,ETO_OPAQUE,@ARect, Nil,0,Nil);
          Windows.ExtTextOut(ACanvas.Handle, TempExtent.CX, TempExtent.CY,{ETO_OPAQUE or} ETO_CLIPPED,
            @ARect, PChar(Texts[I]), Length(Texts[I]),Nil);
        end;
        Inc(Y,Interval);
      end;

      46..90:
      begin
        Windows.GetTextExtentPoint32(ACanvas.Handle, PChar(Texts[I]), Length(Texts[I]), TempExtent);
        J := Ceil(TempExtent.CX*Scaler);

        if taTop in Aligns then
        begin
          TempExtent.CY := ARect.Top + J;
          TempExtent.CX := X + Ceil((Y - TempExtent.CY)/ Tan(Direction * Pi / 180));
        end else if taVertCenter in Aligns then
        begin
          TempExtent.CY := (ARect.Bottom + ARect.Top + J) shr 1;
          TempExtent.CX := X + Ceil((Y - TempExtent.CY)/ Tan(Direction * Pi / 180));
        end else {if taLeft in Aligns then}
        begin
          TempExtent.CY := ARect.Top + 2;
          TempExtent.CX := X;
        end;

        if DitheredFlag then
          DrawDitheredText(TempExtent.CX,TempExtent.CY,Texts[I])
        else begin
          //Windows.ExtTextOut(ACanvas.Handle,0,0,ETO_OPAQUE,@ARect, Nil,0,Nil);
          Windows.ExtTextOut(ACanvas.Handle, TempExtent.CX, TempExtent.CY,{ETO_OPAQUE or} ETO_CLIPPED,
            @ARect, PChar(Texts[I]), Length(Texts[I]),Nil);
        end;
        Inc(X,Interval);
      end;

      -90..-46:
      begin
        Windows.GetTextExtentPoint32(ACanvas.Handle, PChar(Texts[I]), Length(Texts[I]), TempExtent);
        J := Ceil(TempExtent.CX*Scaler);

        if taBottom in Aligns then
        begin
          TempExtent.CY := ARect.Bottom - J;
          TempExtent.CX := X + Ceil((TempExtent.CY - Y)/ Tan(-Direction * Pi / 180));
        end else if taVertCenter in Aligns then
        begin
          TempExtent.CY := (ARect.Bottom + ARect.Top - J) shr 1;
          TempExtent.CX := X + Ceil((TempExtent.CY - Y)/ Tan(-Direction * Pi / 180));
        end else {if taLeft in Aligns then}
        begin
          TempExtent.CY := ARect.Top + 2;
          TempExtent.CX := X;
        end;

        if DitheredFlag then
          DrawDitheredText(TempExtent.CX,TempExtent.CY,Texts[I])
        else begin
          //Windows.ExtTextOut(ACanvas.Handle,0,0,ETO_OPAQUE,@ARect, Nil,0,Nil);
          Windows.ExtTextOut(ACanvas.Handle, TempExtent.CX, TempExtent.CY,{ETO_OPAQUE or} ETO_CLIPPED,
            @ARect, PChar(Texts[I]), Length(Texts[I]),Nil);
        end;
        Dec(X,Interval);
      end;

      -45..-1:
      begin
        Windows.GetTextExtentPoint32(ACanvas.Handle, PChar(Texts[I]), Length(Texts[I]),

上一页  [1] [2] [3] [4]  下一页


[系统软件]交叉编译sshd for IXP425 ARM  Platform by MVL 3…  [Delphi程序]Delphi Winsock Hooking Example by Aphex
[Delphi程序]Delphi for .Net 编译器预览 - by John Kaster  [Delphi程序]如何给ActiveX数字签名(Step by Step, Delphi)
[Delphi程序]Simple Programming Tip #1 by Charlie Calvert  [Delphi程序]Delphi NT Service Skeleton by Aphex
[Web开发]Step By Step 制作XML的Javascript树形目录  [Web开发]ASP.NET组件编程step by step
[Web开发]ASP.NET组件设计Step by Step(8)  [Web开发]ASP.NET组件设计Step by Step(6)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台