我想在表頭顯示以下效果廠商:******
地址:****** 電話:****** 傳真:****** PO#:*****用以下代碼,當字體設置為16號字體時,只顯示一列,下一列就看不到,其原因是表頭的列高設置太小,可我要不知道用什麼函數來設置表頭列高,再就是我這是套打印,廠商上面要空出很多,這也沒有辦法設置,代碼如下,請幫忙修改:procedure TMainForm.PrintHeader;
var
SaveFont: TFont;
LineHeight: Integer;
Tenthdofinchpixellsy:integer;
begin
SaveFont := TFont.Create;
try
Savefont.Assign(Printer.Canvas.Font);
Printer.Canvas.Font.Assign(edtHeaderFont.Font);
with Printer do
begin
if not Printer.Aborted then
Canvas.TextOut((PageWidth div 2)-(Canvas.TextWidth(edtHeaderFont.Text)
div 2),0, edtHeaderFont.Text); Canvas.TextOut(200,0, '地點:‘+'editadd');
Canvas.TextOut(200, 60, '廠商:‘+'editcustomer');
Canvas.TextOut(1000, 60, '電話:‘+'edittex');
Canvas.TextOut(1900, 60, '傳真:‘+'editfax');
AmountPrinted := AmountPrinted + LineHeight+TenthsOfInchPixelsY;
end;
Printer.Canvas.Font.Assign(SaveFont);
finally
SaveFont.Free;
end;
end;
地址:****** 電話:****** 傳真:****** PO#:*****用以下代碼,當字體設置為16號字體時,只顯示一列,下一列就看不到,其原因是表頭的列高設置太小,可我要不知道用什麼函數來設置表頭列高,再就是我這是套打印,廠商上面要空出很多,這也沒有辦法設置,代碼如下,請幫忙修改:procedure TMainForm.PrintHeader;
var
SaveFont: TFont;
LineHeight: Integer;
Tenthdofinchpixellsy:integer;
begin
SaveFont := TFont.Create;
try
Savefont.Assign(Printer.Canvas.Font);
Printer.Canvas.Font.Assign(edtHeaderFont.Font);
with Printer do
begin
if not Printer.Aborted then
Canvas.TextOut((PageWidth div 2)-(Canvas.TextWidth(edtHeaderFont.Text)
div 2),0, edtHeaderFont.Text); Canvas.TextOut(200,0, '地點:‘+'editadd');
Canvas.TextOut(200, 60, '廠商:‘+'editcustomer');
Canvas.TextOut(1000, 60, '電話:‘+'edittex');
Canvas.TextOut(1900, 60, '傳真:‘+'editfax');
AmountPrinted := AmountPrinted + LineHeight+TenthsOfInchPixelsY;
end;
Printer.Canvas.Font.Assign(SaveFont);
finally
SaveFont.Free;
end;
end;
Printer.BeginDoc;
Printer.Canvas.Font.Name:='宋体';
Printer.Canvas.Font.Size:=16;
Printer.Canvas.TextOut(0,200,'廠商');
Printer.Canvas.TextOut(0,220,'地址');
Printer.Canvas.TextOut(200,220,'電話');
Printer.Canvas.TextOut(400,220,'傳真');
Printer.Canvas.TextOut(600,220,'PO#');
Printer.EndDoc;
晕。那你设置Canvas的X,Y值就可以了。也就是从哪个位置开始打起。
procedure TMainForm.PrintClick(Sender: TObject);
var
Items: TStringList;
begin
Items := TStringList.Create;
try
PixelsInInchx := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
TenthsOfInchPixelsY := GetDeviceCaps(Printer.Handle,
LOGPIXELSY) div 10;
AmountPrinted := 0;
MainForm.Enabled := false; // Disable the parent form
try
Printer.BeginDoc;
AbortForm.Show;
Application.ProcessMessages; LineHeight := Printer.Canvas.TextHeight('X')+TenthsOfInchPixelsY;
if edtHeaderFont.Text <> '' then
Printer.Canvas.Font.Name:='宋体';
Printer.Canvas.Font.Size:=12;
Printer.Canvas.TextOut(100,400,edAdd.text);
Printer.Canvas.TextOut(100,460,edTel.text);
Printer.Canvas.TextOut(200,520,edFax.text);
Printer.Canvas.TextOut(800,520,edName.text);
Printer.Canvas.TextOut(1600,520,edPo.text);
PrintColumnNames;
ADOTable1.First;
while (not ADOTable1.Eof) or Printer.Aborted do
begin
Application.ProcessMessages;
with Items do
begin
AddObject(ADOTable1.FieldByName('fallorder_code').AsString,
pointer(10));
AddObject(ADOTable1.FieldByName('fallorder_name').AsString,
pointer(10));
AddObject(ADOTable1.FieldByName('fallorder_dec').AsString,
pointer(10));
AddObject(ADOTable1.FieldByName('fallorder_num').AsString,
pointer(10));
AddObject(ADOTable1.FieldByName('fallorder_customer').AsString,
pointer(10));
AddObject(ADOTable1.FieldByName('fallorder_memo').AsString,
pointer(10));
end;
PrintLine(Items);
if AmountPrinted + LineHeight > Printer.PageHeight then
begin
AmountPrinted := 0;
if not Printer.Aborted then
Printer.NewPage;
PrintHeader;
PrintColumnNames;
end;
Items.Clear;
ADOTable1.Next;
end;
AbortForm.Hide;
if not Printer.Aborted then
Printer.EndDoc;
finally
MainForm.Enabled := true;
end;
finally
Items.Free;
end;
end;