Einzelnen Beitrag anzeigen

Kinimod8

Registriert seit: 9. Jan 2004
Ort: Barsbüttel
317 Beiträge
 
Delphi 6 Personal
 
#4

Re: [QReport] Massive Probleme nach PrinterSetup

  Alt 25. Okt 2005, 15:35
Ich habe ein bisschen weitergesucht und habe im QR-Tutorial auf dsdt.info den Tipp gefunden, den Standard-Drucker zu ändern.
Hab ich also probiert:
Delphi-Quellcode:
procedure SetDefaultPrinter(PrinterName: string);
var
  I: Integer;
  Device: PChar;
  Driver: PChar;
  Port: PChar;
  HdeviceMode: THandle;
  aPrinter: TPrinter;
begin
  Printer.PrinterIndex := -1;
  GetMem(Device, 255);
  GetMem(Driver, 255);
  GetMem(Port, 255);
  aPrinter := TPrinter.Create;
  try
    for I := 0 to Printer.Printers.Count - 1 do
    begin
      if Printer.Printers[i] = PrinterName then
      begin
        aprinter.PrinterIndex := i;
        aPrinter.getprinter(device, driver, port, HdeviceMode);
        StrCat(Device, ',');
        StrCat(Device, Driver);
        StrCat(Device, Port);
        WriteProfileString('windows', 'device', Device);
        StrCopy(Device, 'windows');
        SendMessage(HWND_BROADCAST, WM_WININICHANGE,
          0, Longint(@Device));
      end;
    end;
  finally
    aPrinter.Free;
  end;
  FreeMem(Device, 255);
  FreeMem(Driver, 255);
  FreeMem(Port, 255);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 PrintDialog1.Execute;
 SetDefaultPrinter(Printer.Printers[Printer.PrinterIndex]);
 QuickRep1.Preview;
end;
Mein HP-Deskjet-Drucker hat normalerweise den Index 3. Nach Aufruf von dem PrintDialog wird der Printer-Liste (Printer.Printers) temporär ein Eintrag zugefügt, nämlich "HP Deskjet 3600 Series an USB 000003" (Index 6).

Nun versucht die Procedur SetDefaultPrinter den Drucker "HP Deskjet 3600 Series an USB 000003" als Standarddrucker zu setzen. Aber keine Chance für diese Procedur existiert nur der Drucker "HP Deskjet 3600 Series"!

Wie bekomme ich jetzt das "an USB 000003" weg?
Dominik Peters
  Mit Zitat antworten Zitat