Zitat:
Printer.SetPrinter
Muss ich das ? Es reicht doch wenn man den von Windows voreingestellten Drucker verwendet.
Ja, weil es vorkommen kann, dass Windows keinen voreingestellten Drucker hat.
Hatte ich erst kürzlich wieder, obwohl dort eigentlich ein Drucker eingestellt ist. Der hat aber nicht mehr mit Windows kommuniziert und Windows hatte dann keinen voreingestellten Drucker mehr.
Danke für die Info.
Nur leider kenne ich mich damit gar nicht aus.
Wo oder wie komme ich an den Drucker dran? Kann ja nicht irgend etwas nehmen.
Meine Funktion sieht so aus die geht mit dem PDF Drucker von MS, habe keinen eigenen.
Den habe ich als Default eingestellt.
Delphi-Quellcode:
procedure SendToPrinter(WinHandle: HWND);
var
pt: Text;
hCtrl: HWND;
Count, SelItems, K: Integer;
SelItem : array of Integer;
sBuffer: string;
buffer: string;
begin
hCtrl := GetDlgItem(WinHandle, ID_LISTBOX);
Count := SendMessage(hCtrl, LB_GETCOUNT, 0, 0);
if (Count > 0) then
begin
SelItems := SendMessage(hCtrl, LB_GETSELCOUNT, 0, 0);
if (SelItems > 0) then
begin
SetLength(SelItem, SelItems);
SendMessage(hCtrl, LB_GETSELITEMS, SelItems, LPARAM(SelItem));
for K := 0 to SelItems - 1 do
begin
sBuffer := GetTextListbox(hCtrl, SelItem[K]);
Buffer := buffer + sBuffer + #13#10;
end;
// Drucker part
AssignPrn(pt);
Rewrite(pt);
Printer.Canvas.Font.Name := 'Segoe UI';
Printer.Canvas.Font.Size := 12;
WriteLn(pt, Buffer);
Close(pt);
Buffer := '';
SetLength(SelItem, 0);
end else
begin
for K := 0 to Count - 1 do
begin
sBuffer := GetTextListbox(hCtrl, K);
Buffer := buffer + sBuffer + #13#10;
end;
// Drucker part
AssignPrn(pt);
Rewrite(pt);
Printer.Canvas.Font.Name := 'Segoe UI';
Printer.Canvas.Font.Size := 12;
WriteLn(pt, Buffer);
Close(pt);
Buffer := '';
end;
end;
end;
Ich selektiere einen Bereich in meiner ListBox.
Und schicke den selektierten Text direkt an den Drucker.
Wenn nichts selektiert ist dann wird der ganze Text verschickt.