線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1928
推到 Plurk!
推到 Facebook!

在FastReport印出公司組織樹狀圖

 
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-06 10:46:59 IP:210.61.xxx.xxx 未訂閱
在工作上有個需求, 就是列印公司組織樹狀圖, 這讓我想了好些時間,  現在分享給網路上的朋友. 所使用的技巧是: 1.使用TreeView顯示樹狀圖, 然後用Perform(WM_PRINT..)這個作業系統的message, 去傾印TreeView到Bitmap.Handle. 2.然後使用ClientDataSet暫存檔的方式, 建立blob欄位, 填入這個bmp, report page上 擺置一個圖片. 3.因為TreeView子節數量過多, 於是裁剪成數個bmp填入數筆的資料. 4.裁切的height和report page上的圖片height要設成一致. 以下是示意程式碼
procedure TForm1.Button1Click(Sender: TObject);
const
  perHeight=535;
var
  bmp,bmp1: TBitmap;
  i:Integer;
  btop,bcount:Integer;
  stream:TMemoryStream;
begin
  TreeView1.Top:=-200;
  for i:=0 to 100 do
  begin
    TreeView1.Items.Add(nil,IntToStr(i));
  end;
  TreeView1.FullExpand;
  TreeView1.Height:=(TreeView1.Items.Count*16)+20;
  bcount:=TreeView1.Height div PerHeight;
  bmp := TBitmap.Create;
  try
    bmp.Width := TreeView1.Width;
    bmp.Height := TreeView1.Height;;
    bmp.Canvas.Lock;
    try
      TreeView1.Perform(WM_PRINT, bmp.Canvas.Handle, PRF_CHILDREN or PRF_CLIENT or PRF_NONCLIENT);
    finally
      bmp.Canvas.UnLock;
      for i:=0 to bcount do
      begin
        btop:=i*PerHeight;
        bmp1:=TBitmap.Create;
        bmp1.Width:=TreeView1.Width;
        bmp1.Height:=PerHeight;
        bmp1.Canvas.CopyRect(Rect(0,0,TreeView1.Width,PerHeight),bmp.Canvas,Rect(0,btop,TreeView1.Width,btop+PerHeight));
        stream:=TMemoryStream.Create;
        bmp1.SaveToStream(stream);
        ClientDataSet1.Append;
        TBlobField(ClientDataSet1.FieldByName('bmp')).LoadFromStream(stream);
        ClientDataSet1.Post;
        bmp1.Free;
        stream.Free;
      end;
    end;
  finally
    bmp.Free;
  end;
  FrReport1.ShowReport;
end;
附加檔案:52714_TreePrint.zip
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-14 20:59:45 IP:219.130.xxx.xxx 未訂閱
不错。。。。。
系統時間:2024-07-01 21:27:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!