2013-06-05 42 views

Trả lời

7

Bạn sử dụng hàm WinAPI Escape, chuyển số Printer.Canvas.Handle làm thông số đầu tiên và PASSTHROUGH làm thông số nEscape.

var 
    YourCommand: String; 
begin 
    YourComamnd := 'Your command here'; 

    if Escape(Printer.Canvas.Handle, 
       PASSTHROUGH, 
       Length(YourCommand), 
       PChar(YourCommand), 
       nil) <> 0 then 
    // Handle return value (listed in docs link above) 
    else 
    // send next command 

Escape được xác định trong đơn vị Windows. Lưu ý rằng bạn phải gọi Printer.StartPage trước khi sử dụng chức năng này để chuẩn bị trình điều khiển máy in nhận nội dung.

+0

Trong máy in Delphi XE3.Canvas.Handle sẽ là Printer.Canvas.BufferHandle? –

+0

Trong VCL.Printers, đó là 'Printer.Canvas.Handle', là 'HDC' của máy in. Tôi không thấy 'Canvas.BufferHandle' trong tài liệu ở bất cứ đâu. Nếu bạn không sử dụng VCL, bạn nên nói như vậy và thêm thẻ FireMonkey thích hợp vào câu hỏi của bạn. :-) Chỉ tìm thấy 'BufferHandle', và không có; đó là một 'THANDLE', và' Escape' đang tìm kiếm một xử lý cho một bối cảnh thiết bị ('HDC'). –

+0

Nhìn vào nguồn của 'FMX.Printer.Win.pas', có' Canvas' được định nghĩa cho 'TPrinter'. Tôi không biết nếu nó có một HDC tương thích với Windows (tôi nghi ngờ nó), nhưng bạn có thể sử dụng 'Printer.Handle', mà nó nói là một HDC. Tôi không biết liệu nó có hoạt động với 'Thoát' hay không, bởi vì tôi chưa thử nó. –

Các vấn đề liên quan