Avatar billede slowaterz Nybegynder
23. november 2000 - 13:23 Der er 6 kommentarer og
1 løsning

Runtime ændring af printer opsætning

Er det muligt at ændre i opsætningen af (default) printer i koden ? F.eks. skifte papirstørrelse til A3.
Avatar billede sjensen Nybegynder
23. november 2000 - 13:27 #1
Hvis du inkluderer den unit der hedder Printers (i uses calusen i starten) har du et object der hedder Printer.

Under denne findes mange properties og metoder så prøv at se hjælpen for hvilke du kan bruge.

Avatar billede slowaterz Nybegynder
23. november 2000 - 15:01 #2
Jeg får at vide: File not found: \'Printer.dcu\'
Avatar billede slowaterz Nybegynder
23. november 2000 - 15:10 #3
Sorry, my bad ... den hedder Printers ... men jeg kan stadig ikke finde nogen steder, hvor jeg kan ændre papirstørrelse.
Avatar billede torbenthyregod Nybegynder
23. november 2000 - 15:31 #4
Jeg ved ikke om du kan bruge noget af følgende.

var
ADevice, ADriver, APort: array [0..255] of Char;
DeviceHandle: THandle;
DevMode: PDeviceMode; // A Pointer to a TDeviceMode structure
begin
{ First obtain a handle to the TPrinter’s DeviceMode structure }
Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle);
{ If DeviceHandle is still 0, then the driver was not loaded. Set
the printer index to force the printer driver to load making the
handle available }
if DeviceHandle = 0 then
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle);
end;
{ If DeviceHandle is still 0, then an error has occurred. Otherwise,
use GlobalLock() to get a pointer to the TDeviceMode structure }
if DeviceHandle = 0 then
Raise Exception.Create(‘Could Not Initialize TDeviceMode structure’)
else
DevMode := GlobalLock(DeviceHandle);
{ Code to use the DevMode structure goes here }
{ !!!! }
if not DeviceHandle = 0 then
GlobalUnlock(DeviceHandle);
end;

Hvis du bruger dette, så har du en handle til printeren i DevMode. Der hvor du har { !!!! }, skulle du nu kunne bruge følgende :

with DevMode^ do
begin
  dmFields := dmFields or DM_PAPERSIZE;
  dmPaperSize := DMPAPER_LETTER; // Letter, 8-1/2 by 11 inches
end;

Kig i hjælpen under TDeviceMode for at finde andre standard papirstørelser en DMPAPER_LETTER.

Jeg ved ikke om det hjælper dig, jeg har selv haft svært ved at få det til at virke.

Torben
Avatar billede torbenthyregod Nybegynder
23. november 2000 - 15:48 #5
Ja, det skulle vel have været et svar !!!!
Avatar billede slowaterz Nybegynder
24. november 2000 - 11:10 #6
Compileren accepterer koden, men når jeg prøver at køre programmet, får jeg en \"Access violation ...\" fejl. Hvad kan det skyldes ?
Avatar billede torbenthyregod Nybegynder
24. november 2000 - 11:20 #7
Kan du ikke prøvwe at lave et breakpoint på linien med GetPrinter og derefter trace dig frem til hvilken linie det det går galt i ??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester