Newsgroup: it.comp.lang.delphi
Titolo: Setup printer

Salve,
Con Delphi 7 devo settare la lunghezza pagina di una stampante per etichette 
modello BZB-2. Ho provato in numerosi modi e con diverse routine pescate 
nella rete ma non riesco in nessun modo a risolvere il problema.
Ho provato anche la soluzione proposta sul sito della Borland community, ma 
niente da fare: non riesco a dire che il formato della etichetta deve essere 
di 40 mm.
C'e' qualcuno di voi che ha avuto lo stesso problema e lo ha risolto?
A titolo di esempio riporto una delle tante varianti che ho trovato e che, 
nel mio caso, non funziona:
procedure SetupPrinter(PaperWidth,PaperLength,PaperSize:integer);
var
  ADevice, ADriver, APort : array[0..255] of char;
  DevMode : THandle;
  PtrDevMode : PDevMode;
begin
  Printer.GetPrinter(ADevice, ADriver, APort, DevMode);
  if DevMode <> 0 then begin
    PtrDevMode := GlobalLock(DevMode);
    with PtrDevMode^ do begin
      strcopy(dmDevicename,ADevice);
      dmFields:=dmFields or DM_PAPERWIDTH or DM_PAPERLENGTH or
          DM_PAPERSIZE;
      dmPaperWidth:=PaperWidth;
      dmPaperLength:=PaperLength;
      dmPaperSize:=PaperSize;   // for custom
    end;
    Printer.SetPrinter(ADevice, ADriver, APort, DevMode);
    GlobalUnlock(DevMode);
    Printer.PrinterIndex := Printer.PrinterIndex;  // refresh 
printer,settings.
  end;
end;
Grazie per l'aiuto.
Francesco 

Non ho mai avuto esigenza di fare una cosa del genere....
Cerco di darte alcune indicazioni "laterali"...
Prima di tutto, su quale OS hai eseguito i test?
Magari i pezzi di codice che hai trovato con google (a prp, che bello
uno che usa google per cose di lavoro, complimenti!) sono relativi a
win2000 e tu hai xp..
Lo so! Lo so! Non dovrebbe cambiare niente, ma noi viviamo nel mondo
reale e non in quello delle fate.
Per prima cosa, prova a usare qualcuna delle funzioni che hai trovato
su un os diverso e vedi cosa succede.
un altra prova: vedi cosa succede con una stampante DIVERSA da quella
che devi usare.. Avrai una laser o una inkjet...
Prova e vedi cosa succede.
Non è che sul sito del produttore c'è un forum sui problemi tecnici o
roba simile? Magari la versione di driver che hai tu è bacata...
magari usi il driver fornito da windows e non quello fornito
direttamente dal produttore
Bypassare printer e usare direttamente solo le api di windows?
Lo so, è un po poco...
Ma spesso siamo talmente concentrati a cercare roba stratosferica
quando la soluzione è fuori del contesto nel quale la cerchiamo.
AS

 ha scritto nel messaggio
<Non ho mai avuto esigenza di fare una cosa del genere....
<Cerco di darte alcune indicazioni "laterali"...
<
<Prima di tutto, su quale OS hai eseguito i test?
<Magari i pezzi di codice che hai trovato con google (a prp, che bello
<uno che usa google per cose di lavoro, complimenti!) sono relativi a
<win2000 e tu hai xp..
<Lo so! Lo so! Non dovrebbe cambiare niente, ma noi viviamo nel mondo
<reale e non in quello delle fate.
<cut>
Anch'io mi associo ...
Stessa procedura, stessa stampante (ad aghi) ma nuovo computer (da Win98se a XPhome).
Le etichette che da ANNI venivano stampate bene, ora non rispettano più la lunghezza pagina.
Dopo innumerevoli prove (anche senza senso) finalmente modificando la lunghezza "ad-capocchiam"
a-ri-funzionano.
GP