Jak ustawić dmPaperLength "Drukowanie"

0

Witam, Mam problem dość banalny ale sam już rozkładam ręce.

Program do drukowania etykiet nadawczych dla kuriera UPS. Drukarka igłowa OKI. Delphi 6.0

Po wykonaniu instrukcji: Printer.EndDoc; Drukarka drukuje i wysuwa kartkę o długość formatu A4 (ok 30 cm) A ma wysunąć o 15,2 cm (ok 6 cali). Nawet jeśli w drukarce ustawię że dlugość strony wynosi 6" to ona i tak z poziomu programu wynosi ok 30cm (a4).

Próbowałem na różne sposoby z dmPaperSize ale bez skutecznie.

Czy ktoś z forumowiczów ma jaki kolwiek program z użyciem funkcji dmPaperLength działający, bo z tą funkcją nie wychodzi mi kompletnie nic?

Proszę o pomoc.

0

znaczy mówisz, że drukujesz na igłówce w trybie graficznym :>

0

Chyba w moim przypadku to graficzny bo jak w trybie tekstowym miałbym ustawić aby jakiś napis był np 5cm od lewej i 3 cm od prawej.

0

procedure SetPrinterSettings(FPrinter: TPrinter);
var
FDevice: PChar;
FDriver: PChar;
FPort: PChar;
DeviceMode: THandle;
DevMode: PDeviceMode;
begin
{to get a current printer settings}
FPrinter.GetPrinter(FDevice, FDriver, FPort, DeviceMode);
{lock a printer device}
DevMode := GlobalLock(DeviceMode);

{set a paper size as A4-Transverse}
if ((DevMode^.dmFields and DM_PAPERSIZE) = DM_PAPERSIZE) then
begin
DevMode.dmFields := DevMode.dmFields or DM_PAPERSIZE;
DevMode^.dmPaperSize := DMPAPER_A4_TRANSVERSE; //DMPAPER_USER;
//DevMode^.dmPaperWidth := 100;
//DevMode^.dmPaperLength := 100;
end;

{set a paper source as Tractor bin}
if ((DevMode^.dmFields and DM_DEFAULTSOURCE) = DM_DEFAULTSOURCE) then
begin
DevMode.dmFields := DevMode.dmFields or DM_DEFAULTSOURCE;
DevMode^.dmDefaultSource := DMBIN_TRACTOR;
end;

{set a Landscape orientation}
if ((DevMode^.dmFields and DM_ORIENTATION) = DM_ORIENTATION) then
begin
DevMode.dmFields := DevMode.dmFields or DM_ORIENTATION;
DevMode^.dmOrientation := DMORIENT_LANDSCAPE;
end;

{set a printer settings}
FPrinter.SetPrinter(FDevice, FDriver, FPort, DeviceMode);

{unlock a device}
GlobalUnlock(DeviceMode);
end;

Procedure Test;
Begin
Drukarka := TPrinter.Create
SetPrinterSettings(Drukarka);
Printer.BeginDoc; //Rozpoczescie drukowania
Printer.EndDoc; //Koniec drukowania
End;

Dlaczego program wywala bład po wykonaniu procedury test??

0

ludzie nauczcie sie...: "blad" nam nic nie mowi, napisz jaki konkretnie, bedzie latwiej go odnalezc.

0
drzewko2004 napisał(a)

Chyba w moim przypadku to graficzny bo jak w trybie tekstowym miałbym ustawić aby jakiś napis był np 5cm od lewej i 3 cm od prawej.

normalnie - przy 12CPI jeden znak ma 25,4mm / 12 co się równa 2mm. Dla 3cm jest to 14 znaków a dla 5cm jest to 24 znaki

1 użytkowników online, w tym zalogowanych: 0, gości: 1