AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 2009 und Druckerschächte

Ein Thema von bjma · begonnen am 23. Jul 2010 · letzter Beitrag vom 28. Jul 2010
 
bjma

Registriert seit: 24. Sep 2005
Ort: Balingen
49 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delphi 2009 und Druckerschächte

  Alt 24. Jul 2010, 17:20
Textseite ist ok. Meine Programme die mit delph5 erzeugt wurden können sauber auf die Schächte zugreifen.
Sobald die selben Programme jedoch mit delphi 2009 erzeugt werden nur standartschacht möglich.

Also bisher habe ich bei jedem neuen Drucker mit unterem Programm die Schächte ausgelesen.
Bsp. HP 2055 Schacht 3 kann mit CustomBinCode:=260 angesteuert werden.
Code:

procedure TForm1.Button2Click(Sender: TObject);

var
hDevMode: THandle;
Device,Driver,Port: array [0..1024] of Char;
bin: integer;
DevMode : PDevMode;
UserCollateCode: integer;
result:integer;
begin
Printer.GetPrinter(Device,Driver,Port,hDevMode);
bin := -1;
if hDevMode <> 0 then
begin
DevMode := GlobalLock (hDevMode);
//members von DevMode
bin := DevMode^.DMDEFAULTSOURCE;
UserCollateCode := DevMode^.dmCollate;
GlobalUnlock (hDevMode);
end;
result := bin;
showmessage(inttostr(result));
end;




procedure GetPaperBins(sl: TStrings);
type
TBinName = array [0..23] of Char;
TBinNameArray = array [1..High(Integer) div SizeOf(TBinName)] of TBinName;
PBinnameArray = ^TBinNameArray;
TBinArray = array [1..High(Integer) div SizeOf(Word)] of Word;
PBinArray = ^TBinArray;
var
Device, Driver, Port: array [0..255] of Char;
hDevMode: THandle;
i, numBinNames, numBins, temp: Integer;
pBinNames: PBinnameArray;
pBins: PBinArray;
begin
Printer.PrinterIndex := -1;
Printer.GetPrinter(Device, Driver, Port, hDevmode);
numBinNames := WinSpool.DeviceCapabilities(Device, Port, DC_BINNAMES, nil, nil);
numBins := WinSpool.DeviceCapabilities(Device, Port, DC_BINS, nil, nil);
if numBins <> numBinNames then
begin
raise Exception.Create('DeviceCapabilities reports different number of bins and bin names!');
end;
if numBinNames > 0 then
begin
pBins := nil;
GetMem(pBinNames, numBinNames * SizeOf(TBinname));
GetMem(pBins, numBins * SizeOf(Word));
try
WinSpool.DeviceCapabilities(Device, Port, DC_BINNAMES, PChar(pBinNames), nil);
WinSpool.DeviceCapabilities(Device, Port, DC_BINS, PChar(pBins), nil);
sl.Clear;
for i := 1 to numBinNames do
begin
temp := pBins^[i];
sl.addObject(pBinNames^[i], TObject(temp));
end;
finally
FreeMem(pBinNames);
if pBins <> nil then
FreeMem(pBins);
end;
end;

Danach habe ich die Schächte in einer Datenbank hinterlegt und bei den einzelnen Programmen aufgerufen:

rechnung.rechnung.PrinterSettings.PrintMetaFile := True;
rechnung.rechnung.PrinterSettings.UseCustomBinCode := True;
rechnung.rechnung.PrinterSettings.CustomBinCode:=2 60;

Hat bisher immer sauber funktioniert bei HP, Koycera,Cannon.

Habe die selben Ergebnisse bei Rave, Fastreport und Quickreport. Es muß ein Delphi2009 Problem sein.
Sobald die Schächte eingestellt sind (auch über printersetup) überschreibt delphi die Eingaben und geht auf Standartdrucker und Standartschacht.

Hoffe auf Eure Hilfe.
Jürgen
Jürgen Maute
  Mit Zitat antworten Zitat
 


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 13:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz