Impression de fichiers rtf

Cezarbi Messages postés 7 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 14 septembre 2022 - 14 sept. 2022 à 19:57
Cezarbi Messages postés 7 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 14 septembre 2022 - 14 sept. 2022 à 23:01

Bonjour,

J'ai fait une petite appli avec LAZARUS : une combobox et un RichMemo. Dans la combo les noms de mes patients et pour chacun d'eux, dans le RichMemo les notes correspondantes enregistrées en "Nom du patient.rtf" dans le répertoire :

D:\AAPatients\.Nom du patient\Nom du patient.rtf          (D:\AAPatients\Dupont\Dupont.rtf)

Pour imprimer :

procedure TForm1.ToolButton1Click(Sender: TObject);
var
 a, f : string;
begin
  a := Identite.Text;
  f :=  ('D:\AAPatients\' + a + '\' + a + '.rtf');
      ShellExecute(0, 'print', PChar(f), nil, nil, SW_SHOW);  

Alors, si ça imprime très bien sur mon PC de bureau, (en filaire) ça imprime pas du tout avec mon PC portable avec lequel  je suis d'abord obligé d'ouvrir le fichier avec Word et de l'imprimer ensuite avec Word... (Preuve qu'on peut imprimer à partir de ce PC en WiFI)

Au passage, sauf erreur, GetPrinter n'est toujours pas utilisable avec LAZARUS,

Printer.GetPrinter(PChar(FDevice), PChar(FDriver), PChar(FPort), DeviceMode);

Et je ne peux pas savoir quelle imprimante est utilisée ... Pourtant J'ai créé une autre combobox qui m'affiche les imprimantes, et ma HL-3070CW y est bien référencée.

Si quelqu'un a une idée, je suis preneur avec gratitude.


2 réponses

Cezarbi Messages postés 7 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 14 septembre 2022
14 sept. 2022 à 20:05

Précisions : Mon PC tourne avec Windows 10x64 et le PC portable avec Windows 11x64


0
Cezarbi Messages postés 7 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 14 septembre 2022
14 sept. 2022 à 23:01

Bon, J'ai changé :

procedure TForm1.Button6Click(Sender: TObject);
  Var
    print_parameters: TPrintParams;
  begin
    If Not PrinterSetupDialog1.Execute Then Exit; // Optional: printer selection

    print_parameters.JobTitle := 'Print test';
    print_parameters.Margins.Top := 30;
    print_parameters.Margins.Bottom := 30;
    print_parameters.Margins.Left := 30;
    print_parameters.Margins.Right := 30;
    RichMemo1.Print( print_parameters );
  End;                       

Et miracle ! Et sans passer par Word ! PrinterSetupDialog trouve l'imprimante.

Mais ça ne me dit pas ce qui n'allait pas avec la méthode ShellExecute ...


0
Rejoignez-nous