Newsgroup: it.comp.lang.delphi
Titolo: Print & dialog\

Ciao a tutti,
   ho tentato in diversi modi di arrivare ad una soluzione, ma senza 
risultato ....
Il problema e' sulla stampa di un documento qualsiasi usando TPrinter.
 
Nella lista delle stampanti installate, non solo sul mio pc ma anche su 
diversi altri, sono visualizzati fax, pdf, microsoft document writer ed 
altri ...
 
Il problema principale e' dato dalla selezione, come stampante, di PDF.
 
Quando si preme il tasto STAMPA, si lancia Printer.Begindoc il quale apre un 
dialog dove ci si aspetta di digitare il nome del file e, ecco il problema, 
come si fa ad intercettare il tasto "cancell" ed avitare il processo di 
stampa ?
 
procedure stampa;
begin
    printer.begindoc; // apre il dialog
 
   // preparazione delle pagine solo se il dialog si preme il tasto "apri/ok 
ecc..."
 
   printer.enddoc;
end;
 
Grazie per l'aiuto
 
Ciao
 
Daniele 
 

Copia e incolla dalla guida di delphi2009:
 
 
uses Printers;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  I, X, Y: Integer;
  Memo1 : TMemo;
  r: TRect;
begin
  Memo1 := TMemo.Create(Form1);
  Memo1.Parent := Form1;
  Memo1.Visible := True;
  Memo1.Width := 700;
  if (OpenDialog1.Execute) then
  begin
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
 
    Printer.BeginDoc;
    X := 200;
    Y := 200;
    for I := 0 to 140 do
 
      if (not Printer.Aborted) then
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
.cut.
 
A.

Ciao Alberto,
 
[Qutoto on]

[quoto Off]
 
Non e' questa la situazione in cui mi trovo !!!!
Non sono io ad aprire il dialog, e' Printer.Begindoc che apre il dialog.
Infatti nella form di stampa NON c'e' nessun openfile dialog !!!!
Ovviamente, se seleziono la stampante (quella vera) dalla lista, il begindoc 
fa quello che deve fare.
Tra le altre cose, anche quando si cerca di annullare la stampa, il 
printer.Aborted e' sempre impostato su false !!!
 
Grazie per l'interesse.
 
Ciao
 
Daniele
 

 printer.Aborted e' sempre impostato su false !!!
 
Annullare DA DOVE?
 
A.

Selezioni DA DOVE?
Una volta popolato il combobox.items seleziono la voce "pdf" e clicco sul 
bottone di stampa assengnando a printer la stamapante PDF e, a questo punto 
appare il dialogbox del save file.
E' qui che non so come intercettare il tasto cancell.
 
Spero di non aver creato ulteriore confusione !!!
 
ciao
 
Daniele 
 

> E' qui che non so come intercettare il tasto cancell.
 
Prima di tutto, "cancel" e non "canceLL'.
Poi, partiamo dal tuo codice:
 
 
procedure stampa;
begin
    printer.begindoc; // apre il dialog
 
 
Stai dicendo che dopo il begindoc aborted lo vedi SEMPRE A FALSE anche se l'utente fa click su cancel?
 
 
A.

 processo di stampa ?
 
puoi vedere FindFirstPrinterChangeNotification e/o 
FindNextPrinterChangeNotification o i parenti di questo comando.
 
Per quanto riguarda la proprietą "Aborted", se non sbaglio viene messa a 
true dal metodo "Abort" non dall'annullamento di stampa di windows.
 
 
ciao
-- 
-------------------------------
per scrivere in privato
togliere "1975nosp"
 
to reply remove "1975nosp"

l'utente fa click su cancel?
 
Purtroppo si !!
 
Ma c'e' del nuovo !!!!
 
Ho rimosso il vecchio generatore di PDF dalla lista delle stampanti e ho 
installato, al suo posto, la nuova versione di pdfcreator e ....
 
Su un pc THINKCENTRE con W7 professional funziona tutto alla meraviglia 
(ovvero tasto annulla, annulla la stampa e torna)
Su un portatile Sony Vayo W7 professional .... stesso problema di cui stiamo 
parlando.
 
Vai a capire tu cosa succede
 
Grazie
 
Ciao
 
Daniele 
 

 parlando.
 
 
..non è assolutamente detto che siano sempre gli ALTRI a saperne di piu' e/o a fare cosa migliori delle nostre....
 
Probabilmente il kax di driver per i pdf è cinofallico e imposta il flag a modo suo, senza contare che forse anche UAC ci mette il suo...
 
 
A.