FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 933, dernière mise à jour : 28 septembre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- Comment activer/désactiver la correction lors de la frappe ?
- Comment supprimer les messages d'alerte ?
- Pourquoi désactiver la mise à jour de l'écran ?
- Comment programme-t-on la correction orthographique ?
- Comment récupérer des informations de Word dans Delphi ?
- Comment exporter au format PDF sous Word ?
Cette correction automatique ralenti Word lors d'une saisie, il est possible de la désactiver à l'aide du code suivant :
Code delphi : | Sélectionner tout |
1 2 | WordApplication1.Options.CheckSpellingAsYouType := False; WordApplication1.Options.CheckGrammarAsYouType := False; |
Les messages d'avertissements peuvent être supprimés en faisant
Code delphi : | Sélectionner tout |
1 2 3 | WordApplication1.Connect; WordApplication1.DisplayAlerts:=wdAlertsNone; |
DisplayAlerts peut prendre une des valeurs suivantes :
- wdAlertsNone : aucune alerte
- wdAlertsMessageBox : Uniquement les boites de dialogues
- wdAlertsAll : Toutes les alertes
Il ne s'agit pas de messages d'erreurs, mais de messages proposant un choix à l'utilisateur. Désactiver ces messages revient à toujours exécuter la même action que si l'utilisateur avait cliqué sur OUI.
Désactiver la mise à jour n'est pas toujours pertinent.
La désactivation se fait par
Code delphi : | Sélectionner tout |
1 2 | WordApplication1.Connect; WordApplication1.ScreenUpdating:=False; |
Cela dépend de ce que l'on veut obtenir.
Pour démarrer la correction sur une feuille par exemple il suffit de faire :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | WordApplication1.Connect; WordApplication1.Visible:=True; NomFichier:='c:\tuto.doc'; DocWord:=WordApplication1.Documents.Open(NomFichier,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); Param1:=False; DocWord.CheckSpelling(EmptyParam,Param1,Param1,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam); |
Utilisez le code suivant :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | Function TForm1.CleanString(lTexte:WideString):WideString; // Test et supprime les caractéres spéciaux d'un texte issu de Word begin // Tabulations lTexte:= StringReplace(lTexte,#$D, '', [rfReplaceAll]); // Coupures de ligne lTexte:= StringReplace(lTexte, #$7, '', [rfReplaceAll]); // Saut de pages lTexte:= StringReplace(lTexte, #$C, '', [rfReplaceAll]); Application.ProcessMessages; // Saut de colonnes lTexte:= StringReplace(lTexte, #$E, '', [rfReplaceAll]); // Trait d'union conditionnel. CTRL+- (trait d'union) lTexte:= StringReplace(lTexte, #$96, '', [rfReplaceAll]); // Trait d'union insécable. CTRL+MAJ+- (trait d'union) Result:= StringReplace(lTexte, #$97, '', [rfReplaceAll]); end; ... var S:String; MesPar: Paragraphs; MonPar: Paragraph; begin // Sélection par l'objet Paragraph MesPar:=WordDocument1.Paragraphs; // récupére le 4 eme paragraphe MonPar:=MesPar.Item(4); MonPar.Range.Select; S:=MonPar.Range.Text; S:=CleanString(S); end; |
Voici un code d'exemple ; il faut bien sur l'adapter selon votre projet :
Code Delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | procedure SavePdf(const AFileName: String); var WdApp, WdDoc: Variant; FichierPDF: String; const WdExportFormat = 17; // wdExportFormatPDF WdExportOptimizeFor = 0; // wdExportOptimizeForPrint WdExportRange = 0; // wdExportAllDocument WdExportItem = 0; // wdExportDocumentContent WdExportCreateBookmarks = 0; // wdExportCreateNoBookmarks begin try WdApp := CreateOleObject('Word.Application'); if VarType(WdApp) <> VarDispatch then Abort; WdApp.Visible := False; WdApp.DisplayAlerts := wdAlertsNone; WdDoc := WdApp.Documents.Open(AFileName); // Change l'extension du nom du fichier en pdf FichierPDF := StringReplace(AFileName, ExtractFileExt(AFileName), '.pdf', []); WdDoc.ExportAsFixedFormat(FichierPDF, WdExportFormat, False, WdExportOptimizeFor, WdExportRange, 1, 1, WdExportItem, True, True, WdExportCreateBookmarks, True, True, False); WdApp.Quit; except on E: Exception do .... end; WdDoc := Unassigned; WdApp := Unassigned; end; |
Consultez la MSDN pour des infos détaillées sur chaque argument :
ExportAsFixedFormat(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, Range, From, To, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr).
Ce code est fonctionnel sous Delphi XE et les composants Word2000. Avec XE3, il existe une unité Word2010 qui contient les constantes citées ci-dessus.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.