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

StringGrid 的在C++ BUIDER 打印问题<< 请看代码 >>

尚未結案
samba
一般會員


發表:10
回覆:14
積分:9
註冊:2003-04-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-16 14:30:23 IP:218.16.xxx.xxx 未訂閱
我这样写的函数,却只能打印标题,不知错在哪里! 请帮忙看看, 我是从DELPHI的代码转过来的~    void __fastcall TForm1::PrintGrid(TStringGrid * Grid, AnsiString sTitle)  {  int X1,X2;  int Y1,Y2;  int Tmpl;  int F;  TRect TR;  TPrinter *Ptn = Printer();  Ptn->Title=sTitle;  Ptn->BeginDoc();  Ptn->Canvas->Pen->Color=clBlue ;  Ptn->Canvas->Font->Name="Times New Roman";  Ptn->Canvas->Font->Size=12;  Ptn->Canvas->Font->Style=TFontStyles()<< fsBold << fsUnderline;  Ptn->Canvas->TextOutA(0,100,Ptn->Title);  for (F=0; FColCount;F ) { X1=0; for (int Tmpl=0;TmplColWidths[Tmpl]); } Y1=300; X2=0; for (int Tmpl=0;TmplColWidths[Tmpl]); } Y2=450; } TR=Rect(X1,Y1,X2-30,Y2); Ptn->Canvas->Font->Style=TFontStyles()<< fsBold; Ptn->Canvas->Font->Size=7; Ptn->Canvas->TextRect(TR,X1 50,350,Grid->Cells[F][0]); for (Tmpl=1;TmplRowCount-1;Tmpl ) { Y1=150*Tmpl 300; Y2=150*(Tmpl 1) 300; TR=Rect(X1,Y1,X2-30,Y2); Ptn->Canvas->TextRect(TR,X1 50,Y1 50,Grid->Cells[F][Tmpl]); } Ptn->EndDoc(); } void __fastcall TForm1::Button3Click(TObject *Sender) { PrintGrid(StringGrid1,"My Printed"); } 發表人 - Gemi0305 於 2003/12/16 15:51:29
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-16 15:15:38 IP:140.135.xxx.xxx 未訂閱
samba您好: 您可以參考下面連結中的討論,可能會有幫助 < href="http://delphi.ktop.com.tw/topic.php?topic_id=24240">http://delphi.ktop.com.tw/topic.php?topic_id=24240 順心
samba
一般會員


發表:10
回覆:14
積分:9
註冊:2003-04-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-16 16:18:49 IP:218.16.xxx.xxx 未訂閱
谢谢版主,我想用我能理解的代码写,请帮我看看为什么! 你的参考我看过,我会试试!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-16 16:42:19 IP:140.135.xxx.xxx 未訂閱
samba您好: 我想您的方式應該是沒有辦法正確的列印出 william版主大哥當中已經有說明了 < > 順心< > ~我也是在學習的階段,回答的不好請您多多見諒與指教~
samba
一般會員


發表:10
回覆:14
積分:9
註冊:2003-04-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-16 17:03:59 IP:218.16.xxx.xxx 未訂閱
可DELPHI 使用这个方法可以列出的,请参考:     procedure PrintGrid(sGrid: TStringGrid; sTitle: string); var X1, X2: Integer; Y1, Y2: Integer; TmpI: Integer; F: Integer; TR: TRect; begin Printer.Title := sTitle; Printer.BeginDoc; Printer.Canvas.Pen.Color := 0; Printer.Canvas.Font.Name := 'Times New Roman'; Printer.Canvas.Font.Size := 12; Printer.Canvas.Font.Style := [fsBold, fsUnderline]; Printer.Canvas.TextOut(0, 100, Printer.Title); for F := 1 to sGrid.ColCount - 1 do begin X1 := 0; for TmpI := 1 to (F - 1) do X1 := X1 5 * (sGrid.ColWidths[TmpI]); Y1 := 300; X2 := 0; for TmpI := 1 to F do X2 := X2 5 * (sGrid.ColWidths[TmpI]); Y2 := 450; TR := Rect(X1, Y1, X2 - 30, Y2); Printer.Canvas.Font.Style := [fsBold]; Printer.Canvas.Font.Size := 7; Printer.Canvas.TextRect(TR, X1 50, 350, sGrid.Cells[F, 0]); Printer.Canvas.Font.Style := []; for TmpI := 1 to sGrid.RowCount - 1 do begin Y1 := 150 * TmpI 300; Y2 := 150 * (TmpI 1) 300; TR := Rect(X1, Y1, X2 - 30, Y2); Printer.Canvas.TextRect(TR, X1 50, Y1 50, sGrid.Cells[F, TmpI]); end; end; Printer.EndDoc; end; //Examplem, Beispiel: procedure TForm1.Button1Click(Sender: TObject); begin PrintGrid(StringGrid1, 'Print Stringgrid'); end;
samba
一般會員


發表:10
回覆:14
積分:9
註冊:2003-04-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-16 17:05:12 IP:218.16.xxx.xxx 未訂閱
可DELPHI 使用这个方法可以列出的,请参考: procedure PrintGrid(sGrid: TStringGrid; sTitle: string); var X1, X2: Integer; Y1, Y2: Integer; TmpI: Integer; F: Integer; TR: TRect; begin Printer.Title := sTitle; Printer.BeginDoc; Printer.Canvas.Pen.Color := 0; Printer.Canvas.Font.Name := 'Times New Roman'; Printer.Canvas.Font.Size := 12; Printer.Canvas.Font.Style := [fsBold, fsUnderline]; Printer.Canvas.TextOut(0, 100, Printer.Title); for F := 1 to sGrid.ColCount - 1 do begin X1 := 0; for TmpI := 1 to (F - 1) do X1 := X1 5 * (sGrid.ColWidths[TmpI]); Y1 := 300; X2 := 0; for TmpI := 1 to F do X2 := X2 5 * (sGrid.ColWidths[TmpI]); Y2 := 450; TR := Rect(X1, Y1, X2 - 30, Y2); Printer.Canvas.Font.Style := [fsBold]; Printer.Canvas.Font.Size := 7; Printer.Canvas.TextRect(TR, X1 50, 350, sGrid.Cells[F, 0]); Printer.Canvas.Font.Style := []; for TmpI := 1 to sGrid.RowCount - 1 do begin Y1 := 150 * TmpI 300; Y2 := 150 * (TmpI 1) 300; TR := Rect(X1, Y1, X2 - 30, Y2); Printer.Canvas.TextRect(TR, X1 50, Y1 50, sGrid.Cells[F, TmpI]); end; end; Printer.EndDoc; end; //Examplem, Beispiel: procedure TForm1.Button1Click(Sender: TObject); begin PrintGrid(StringGrid1, 'Print Stringgrid'); end;
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-16 17:33:14 IP:140.135.xxx.xxx 未訂閱
samba您好:  我沒有Delphi也不會所以沒有辦法測試說 但我分別用< class="code"> Image1->Canvas->TextRect(TR,X1 50,350,Grid->Cells[F][0]); Image2->Canvas->TextRect(TR,X1 50,Y1 50,Grid->Cells[F][Tmpl]); 取代您原來的程式碼但都呈現白色一片... 或是您可以等有經驗的人可以幫助您,我經驗尚淺請見諒 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
系統時間:2024-05-16 7:44:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!