AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Standart Drucker & Schachtauswahl
Thema durchsuchen
Ansicht
Themen-Optionen

Standart Drucker & Schachtauswahl

Offene Frage von "Almex32657"
Ein Thema von Almex32657 · begonnen am 29. Jun 2004 · letzter Beitrag vom 24. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
Almex32657

Registriert seit: 29. Jun 2004
Ort: Lemgo
8 Beiträge
 
#1

Standart Drucker & Schachtauswahl

  Alt 29. Jun 2004, 10:21
Tag Leute,
ich habe ein riesen Problem, meine Druckerschächte, ich habe mir die letzten
2 Tage darum einem Kopf gemacht komme aber nicht weiter.
Also ich habe W2k und arbeite mit dem Delphi 5 Enterprise.

Ich habe mir schon mehrere Artikel im Netz angeschaut, um das vorweg zu nehmen wie diesen
hier z.B:
http://www.delphipraxis.net/internal...hlight=printer

Aber das hilft mir noch nicht weiter. Denn Standartdrucker zu setzen ist nicht das Problem aber wie setze ich den Standartschacht? Ich habe es erst so versucht aber es funktioniert nicht, aber ich finde keinen Fehler...


Delphi-Quellcode:
Procedure SetzeSchacht(Schacht : integer);
var
  ADevice, ADriver, APort: array [0..255] of Char;
  ADeviceMode: THandle;
  DevMode: PDeviceMode;
begin
  Printer.GetPrinter( ADevice, ADriver, APort, ADeviceMode );
  if ADeviceMode <> 0 then GlobalUnlock( ADeviceMode );
  DevMode := GlobalLock( ADeviceMode );
  DevMode.dmFields := DevMode.dmFields or DM_DEFAULTSOURCE;
  DevMode.dmDefaultSource := Schacht;
  Printer.SetPrinter( ADevice, ADriver, APort, ADeviceMode );
  GlobalUnlock( ADeviceMode );
  DevMode.dmDefaultSource := Schacht;

end;
Wenn ich den Druckerschat dann wie folgt auslese, zeigt er zwar das richtige
an aber druckt aus dem falschen Schacht.

Delphi-Quellcode:
function LeseAktuellenSchacht: integer;
var
  hDevMode: THandle;
  Device,Driver,Port: array [0..255] of Char;
  bin: integer;
  DevMode: PDevMode;

begin
  //Standartdrucker;
  Printer.GetPrinter(Device,Driver,Port,hDevMode);
  bin := -1;
  if hDevMode <> 0 then begin

    DevMode := GlobalLock (hDevMode);
    bin := DevMode^.DMDEFAULTSOURCE;
    GlobalUnlock (hDevMode);
  end;
  result := bin;
end;
Wer kann mir weiter helfen?

PS: Danke schon mal im voraus....

ALMEX

[edit=sakura] Das ganze ROT ausgewaschen Mfg, sakura[/edit]
Computer--- Sie leben, und Sie sind bösartig = p
  Mit Zitat antworten Zitat
Almex32657

Registriert seit: 29. Jun 2004
Ort: Lemgo
8 Beiträge
 
#2

HILFE IS HIER KEIN WISSENDER ?!?!?!? =' (

  Alt 7. Jul 2004, 15:36
SOS
Computer--- Sie leben, und Sie sind bösartig = p
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Standart Drucker & Schachtauswahl

  Alt 7. Jul 2004, 16:44
In der JCL gibt es in der Unit JclPrint die Klasse TJclPrintSet.
Dort sind viele Methoden, die Borland in der TPrinter-Klasse vergessen hat.
In deinem Fall müsstest du dann das Property BinIndex setzen.
Andreas
  Mit Zitat antworten Zitat
Almex32657

Registriert seit: 29. Jun 2004
Ort: Lemgo
8 Beiträge
 
#4

Re: Standart Drucker & Schachtauswahl

  Alt 8. Jul 2004, 10:00
Danke erstmal werde das gleich mal durchschauen....
Computer--- Sie leben, und Sie sind bösartig = p
  Mit Zitat antworten Zitat
Almex32657

Registriert seit: 29. Jun 2004
Ort: Lemgo
8 Beiträge
 
#5

Re: Standart Drucker & Schachtauswahl

  Alt 13. Jul 2004, 10:12
Ja habe mir das ganze eben mal angesehen, habe nur leider das gleiche Problem mit der Jedi JCL wie mit meiner oben aufgeführten Funktion. Programm intern wird der Schacht richtig ausgewählt und kann auch richtig ausgelesen werden, aber der Standart WINDOWS Schacht wird nicht gesetzt.



Hier das Codebeispiel wie ich die JCLPrintSet verwende und versuche damit einen Druckerschacht zu setzen.

Code:

procedure TfrmMain.Button6Click(Sender: TObject);
begin
  MyPrinter := TJCLPrintSet.Create;
  MyPrinter.DefaultSource:= StrToInt(Edit1.text);
  Myprinter.SaveToDefaults;
  MyPrinter.destroy;
end;
Kann mir irgendwer einen Tip geben welchen grundsätzlichen Fehler ich zu machen scheine.

Grüße ALMEX
Computer--- Sie leben, und Sie sind bösartig = p
  Mit Zitat antworten Zitat
SHartmann

Registriert seit: 12. Jul 2004
6 Beiträge
 
Delphi 7 Professional
 
#6

Re: Standart Drucker & Schachtauswahl

  Alt 13. Jul 2004, 16:42
Hallo,

da gehst Du ja in die vollen, ein Kollege hat bei uns damit mehrere Wochen verbracht, eigene Printerroutinen zu schreiben. Leider ist er nicht mehr bei uns, so dass ich es halt versuchen werde

Der Kniff scheint zu sein, eben nicht SetPrinter zu verwenden.
Schau Dir mal DocumentProperties und Reset DC in der Delphi/WinApi Hilfe an.

Verwendung in der Reihenfolge:
- DevMode setzen
- DocumentProperties aufrufen
- ResetDC

bei uns im Code (den ich nicht posten kann) kommt vor dem ResetDC noch eine Prüfung und es
wird evtl. ein CreateDC gemacht. Das hat aber m.E. etwas damit zu tun, dass man damit den
Schacht auch nach einem Seitenwechsel ändern kann.
Gruß

Stephan
  Mit Zitat antworten Zitat
Almex32657

Registriert seit: 29. Jun 2004
Ort: Lemgo
8 Beiträge
 
#7

Re: Standart Drucker & Schachtauswahl

  Alt 19. Jul 2004, 11:10
Jau danke für den Tip werde mal nachschauen.....

Almex
Computer--- Sie leben, und Sie sind bösartig = p
  Mit Zitat antworten Zitat
Almex32657

Registriert seit: 29. Jun 2004
Ort: Lemgo
8 Beiträge
 
#8

Re: Standart Drucker & Schachtauswahl

  Alt 19. Jul 2004, 14:46
Wo finde ich diese WinAPI Hilfedatei bei meiner Delphi version scheint die nicht dabei gewesen zu sein....

Hat einer einen Link wo man das Ding ziehen kann?
Computer--- Sie leben, und Sie sind bösartig = p
  Mit Zitat antworten Zitat
Almex32657

Registriert seit: 29. Jun 2004
Ort: Lemgo
8 Beiträge
 
#9

Re: Standart Drucker & Schachtauswahl

  Alt 21. Jul 2004, 14:17
SOS
Computer--- Sie leben, und Sie sind bösartig = p
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#10

Re: Standart Drucker & Schachtauswahl

  Alt 24. Aug 2004, 14:24
Moin!

ich haber hier -> http://www.swissdelphicenter.ch/de/f...ic.php?p=38791 etwas gefunden was eigentlich ganz gut funktioniert.
ABER .... immer nur einmal nach einem printerdialog.execute
Danach wird alles auf diesen Schacht ausgedruckt.

Ich suche mal weiter und melde mich wenn ich was gefunden hab.
Aber vielleicht hat jemand anders auch noch eine Idee.


Sven Janssen

Nachtrag:
Ich habe es hinbekommen, das ich nun vor jedem begindoc den Schacht wechseln kann.
Nur Leider funktioniert dies NICHT wärende das Drucken im Gange ist.
Meldung Das Drucken ist im Gange.
Natürlich dumm, weil genau dafür benötige ich es.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz