新人一枚,請教關于TPrinter使用的問題:
我看到網上的例子里大家都是
TPrinter *Prn = Printer();
//然后設定了引數后就執行下面兩句:
Prn->BeginDoc();
……
Prn->EndDoc();
請問這里不需要new 和delete嗎?那比如我多次執行列印命令,會不會記憶體占用越來越大?
另外我發現如果我不宣告實體TPrinter *Prn = Printer();直接用TPrinter()來執行所有命令也是可以的,請問這樣和上面有什么區別呢?
非常感謝大家的幫助!!!
uj5u.com熱心網友回復:
放心好了,不會增加你記憶體的,如果你覺得會增加記憶體,那你任何函式里面都不能定義指標變數了,
也不能寫代碼了,哈哈
TPrinter *P=Printer();
P->BeginDoc();
P->Canvas->Font->Size=14;
P->Canvas->Font->Name="宋體";
ss=coyear->Text;
x=ini->ReadInteger("Position","起始年份x",290);
y=ini->ReadInteger("Position","起始年份y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+160,y,ss);//year
ss=comonth->Text;
x=ini->ReadInteger("Position","起始月份x",290);
y=ini->ReadInteger("Position","起始月份y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+270,y,ss);//month
ss=coday->Text;
x=ini->ReadInteger("Position","起始日期x",290);
y=ini->ReadInteger("Position","起始日期y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+350,y,ss);//day
ss=Edit2->Text; //執收單位代碼
x=ini->ReadInteger("Position","執收單位代碼x",290);
y=ini->ReadInteger("Position","執收單位代碼y",232);
P->Canvas->TextOut(x,y,ss);
ss=Edit3->Text; //交款書號碼
x=ini->ReadInteger("Position","繳款書號碼x",290);
y=ini->ReadInteger("Position","繳款書號碼y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+140,y+60,ss);
ss=Edit6->Text; //當事人
x=ini->ReadInteger("Position","當事人x",290);
y=ini->ReadInteger("Position","當事人y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+140,y+60,ss);
ss=ComboBox1->Text; //收款方式
x=ini->ReadInteger("Position","收款方式x",290);
y=ini->ReadInteger("Position","收款方式y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+750,y+60,ss);
ss=Edit49->Text;
P->Canvas->Font->Size=12;
x=ini->ReadInteger("Position","專案代碼1x",290);
y=ini->ReadInteger("Position","專案代碼1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x-30,y+195,ss);//序號
ss=Edit8->Text;
P->Canvas->Font->Size=14;
x=ini->ReadInteger("Position","收費專案1x",290);
y=ini->ReadInteger("Position","收費專案1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+120,y+195,ss);//收費專案
ss=Edit17->Text;
x=ini->ReadInteger("Position","計量單位1x",290);
y=ini->ReadInteger("Position","計量單位1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+390,y+195,ss); //單位
ss=Edit26->Text;
x=ini->ReadInteger("Position","數量1x",290);
y=ini->ReadInteger("Position","數量1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+510,y+195,ss);//數量
ss=ComboBox2->Text;
P->Canvas->Font->Size=10;
x=ini->ReadInteger("Position","收費標準1x",290);
y=ini->ReadInteger("Position","收費標準1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+600,y+195,ss); //收費標準
P->Canvas->Font->Size=14;
ss=Edit4->Text;//百萬
x=ini->ReadInteger("Position","百萬1x",290);
y=ini->ReadInteger("Position","百萬1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+740,y+195,ss);
ss=Edit7->Text;//十萬
x=ini->ReadInteger("Position","十萬1x",290);
y=ini->ReadInteger("Position","十萬1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+770,y+195,ss);
ss=Edit10->Text;//萬
x=ini->ReadInteger("Position","萬1x",290);
y=ini->ReadInteger("Position","萬1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+800,y+195,ss);
ss=Edit11->Text;//千
x=ini->ReadInteger("Position","千1x",290);
y=ini->ReadInteger("Position","千1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+830,y+195,ss);
ss=Edit12->Text;//佰
x=ini->ReadInteger("Position","百1x",290);
y=ini->ReadInteger("Position","百1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+860,y+195,ss);
ss=Edit13->Text;//十
x=ini->ReadInteger("Position","十1x",290);
y=ini->ReadInteger("Position","十1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+890,y+195,ss);
ss=Edit14->Text;//個
x=ini->ReadInteger("Position","元1x",290);
y=ini->ReadInteger("Position","元1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+920,y+195,ss);
ss=Edit15->Text;//角
x=ini->ReadInteger("Position","角1x",290);
y=ini->ReadInteger("Position","角1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+950,y+195,ss);
ss=Edit16->Text;//分
x=ini->ReadInteger("Position","分1x",290);
y=ini->ReadInteger("Position","分1y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+980,y+195,ss);
if(Edit9->Text!="")
{
/* P->Canvas->TextOut(x-30,y+250,"2");//序號
ss=Edit8->Text;
P->Canvas->TextOut(x+120,y+250,ss);//收費專案
ss=Edit17->Text;
P->Canvas->TextOut(x+390,y+250,ss); //單位
ss=Edit26->Text;
P->Canvas->TextOut(x+510,y+250,ss);//數量
ss=ComboBox3->Text;
P->Canvas->TextOut(x+600,y+250,ss); //收費標準
ss=Edit29->Text;//百萬
P->Canvas->TextOut(x+740,y+250,ss);
ss=Edit28->Text;//十萬
P->Canvas->TextOut(x+770,y+250,ss);
ss=Edit25->Text;//萬
P->Canvas->TextOut(x+800,y+250,ss);
ss=Edit24->Text;//千
P->Canvas->TextOut(x+830,y+250,ss);
ss=Edit23->Text;//佰
P->Canvas->TextOut(x+860,y+250,ss);
ss=Edit22->Text;//十
P->Canvas->TextOut(x+890,y+250,ss);
ss=Edit21->Text;//個
P->Canvas->TextOut(x+920,y+250,ss);
ss=Edit20->Text;//角
P->Canvas->TextOut(x+950,y+250,ss);
ss=Edit19->Text;//分
P->Canvas->TextOut(x+980,y+250,ss);
*/
}
//------------合計--------
ss=Edit38->Text;//百萬
x=ini->ReadInteger("Position","百萬合x",290);
y=ini->ReadInteger("Position","百萬合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+740,y+300,ss);
ss=Edit37->Text;//十萬
x=ini->ReadInteger("Position","十萬合x",290);
y=ini->ReadInteger("Position","十萬合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+770,y+300,ss);
ss=Edit36->Text;//萬
x=ini->ReadInteger("Position","萬合x",290);
y=ini->ReadInteger("Position","萬合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+800,y+300,ss);
ss=Edit35->Text;//千
x=ini->ReadInteger("Position","千合x",290);
y=ini->ReadInteger("Position","千合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+830,y+300,ss);
ss=Edit34->Text;//佰
x=ini->ReadInteger("Position","百合x",290);
y=ini->ReadInteger("Position","百合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+860,y+300,ss);
ss=Edit33->Text;//十
x=ini->ReadInteger("Position","十合x",290);
y=ini->ReadInteger("Position","十合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+890,y+300,ss);
ss=Edit32->Text;//個
x=ini->ReadInteger("Position","元合x",290);
y=ini->ReadInteger("Position","元合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+920,y+300,ss);
ss=Edit31->Text;//角
x=ini->ReadInteger("Position","角合x",290);
y=ini->ReadInteger("Position","角合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+950,y+300,ss);
ss=Edit30->Text;//分
x=ini->ReadInteger("Position","分合x",290);
y=ini->ReadInteger("Position","分合y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+980,y+300,ss);
//------大寫 -----
ss=Edit47->Text;//百萬
x=ini->ReadInteger("Position","百萬大x",290);
y=ini->ReadInteger("Position","百萬大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+240,y+360,ss);
ss=Edit46->Text;//十萬
x=ini->ReadInteger("Position","十萬大x",290);
y=ini->ReadInteger("Position","十萬大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+330,y+360,ss);
ss=Edit45->Text;//萬
x=ini->ReadInteger("Position","萬大x",290);
y=ini->ReadInteger("Position","萬大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+400,y+360,ss);
ss=Edit44->Text;//千
x=ini->ReadInteger("Position","千大x",290);
y=ini->ReadInteger("Position","千大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+470,y+360,ss);
ss=Edit43->Text;//佰
x=ini->ReadInteger("Position","百大x",290);
y=ini->ReadInteger("Position","百大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+560,y+360,ss);
ss=Edit42->Text;//十
x=ini->ReadInteger("Position","十大x",290);
y=ini->ReadInteger("Position","十大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+650,y+360,ss);
ss=Edit41->Text;//個
x=ini->ReadInteger("Position","元大x",290);
y=ini->ReadInteger("Position","元大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+730,y+360,ss);
ss=Edit40->Text;//角
x=ini->ReadInteger("Position","角大x",290);
y=ini->ReadInteger("Position","角大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+810,y+360,ss);
ss=Edit39->Text;//分
x=ini->ReadInteger("Position","分大x",290);
y=ini->ReadInteger("Position","分大y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+890,y+360,ss);
ss=ZF1->Text; //經辦人
x=ini->ReadInteger("Position","經辦人x",290);
y=ini->ReadInteger("Position","經辦人y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+390,y+470,ss);
ss=Edit5->Text; //收款人
x=ini->ReadInteger("Position","收款人x",290);
y=ini->ReadInteger("Position","收款人y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+590,y+470,ss);
ss=Edit48->Text; //備注
x=ini->ReadInteger("Position","備注x",290);
y=ini->ReadInteger("Position","備注y",232);
P->Canvas->TextOut(x,y,ss);
//P->Canvas->TextOut(x+790,y+470,ss);
P->EndDoc();
uj5u.com熱心網友回復:
非常感謝xjq2003,再問一句,那么我多次回圈呼叫列印功能都要宣告一次 TPrinter *P=Printer();對嗎?uj5u.com熱心網友回復:
非常感謝xjq2003,再問一句,那么我多次回圈呼叫列印功能都要宣告一次 TPrinter *P=Printer();對嗎?uj5u.com熱心網友回復:
大部分人對這個Printer的了解,都很有限,知其然不知其所以然。首先,Printer() 函式在內部是創建了一個TPrinter物件然后回傳,在Printer單元中結束的時候會自動釋放這個物件,所以你看到許多代碼只是呼叫Printer函式,然后使用其回傳的列印機物件進行列印,結束的時候沒有看到顯式呼叫delete p這樣類似的代碼,只是因為Printer單元會自動釋放這個物件而已。
那么,在你的應用中,不管多次回圈還是一次使用,只需要呼叫一次Printer()方法就行了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110075.html
標籤:VCL組件使用和開發
