mre0311 Posté(e) le 4 février 2008 Partager Posté(e) le 4 février 2008 Bonjour, pour les cours, je fais un mini-projet, un bloc note... tout fonctionne comme je le souhaite, sauf la police! Je pense que cela viens du type de fichier (.txt) mais je n'ai pas trouvé comment faire un autre type de fichier (.rtf?) voila mon code: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus; type TForm1 = class(TForm) RichEdit1: TRichEdit; MainMenu1: TMainMenu; Fichier1: TMenuItem; Ouvrir1: TMenuItem; Enregistrer1: TMenuItem; Fermer1: TMenuItem; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; FontDialog1: TFontDialog; Style1: TMenuItem; Font1: TMenuItem; procedure Fermer1Click(Sender: TObject); procedure Ouvrir1Click(Sender: TObject); procedure Font1Click(Sender: TObject); procedure Enregistrer1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Fermer1Click(Sender: TObject); begin Application.terminate; end; procedure TForm1.Ouvrir1Click(Sender: TObject); begin if opendialog1.Execute then begin richedit1.lines.LoadFromFile(opendialog1.FileName); end; end; procedure TForm1.Font1Click(Sender: TObject); begin fontdialog1.Execute; richedit1.SelAttributes.name:=fontdialog1.Font.Name; richedit1.SelAttributes.style:=fontdialog1.Font.style; richedit1.SelAttributes.color:=fontdialog1.Font.color; richedit1.SelAttributes.size:=fontdialog1.Font.size; end; procedure TForm1.Enregistrer1Click(Sender: TObject); var F : textfile; ligne : string; i : integer; begin if savedialog1.execute then begin assignfile(F,savedialog1.filename); if fileexists(savedialog1.filename) then begin if MessageDlg('Ecraser le fichier existant?', mtConfirmation,[mbYes, mbNo], 0) = mrYes then begin rewrite(F); for I := 0 to richedit1.lines.count do begin ligne := richedit1.lines[I]; writeln(F,ligne); end; closefile(F); end else begin showmessage('Veuillez spécifier un autre nom de fichier!'); end; end else begin rewrite(F); for I := 0 to richedit1.lines.count do begin ligne := richedit1.lines[I]; writeln(F,ligne); end; closefile(F); end; end; end; end. Si qqn a une idée... Merci! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Drak Posté(e) le 5 février 2008 Partager Posté(e) le 5 février 2008 Delphi 6 standard ? entreprise ? pourquoi ne pas utiliser un composant office et ainsi sauvegarder ton texte au format .doc ? Sinon dans ton savedialog si tu lui spécifie que l'utilisateur ne peut sauvegarder que en .rtf au lieu de .txt tu ne récupère pas ta police ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
mre0311 Posté(e) le 5 février 2008 Auteur Partager Posté(e) le 5 février 2008 C'est la version personnel. Jamais entendu parler d'un composant office! (c'est gratuit? ) Sinon, dans mon savedialog, je lui ai dis qu'on pouvais sauvegarder en .txt , .rtf et .bat, si je sauvegarde en .rtf, il ne garde pas la police (ni en .txt et en .bat donc) ! C'est possible que cela vienne de ma variable "textfile" ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
BreizFenrir Posté(e) le 6 février 2008 Partager Posté(e) le 6 février 2008 Hmmm... Y'a l'intégralité de ton code dans ton premier message ? Je n'ai jamais fait de Delphi, mais j'imagine que writeln écrit la ligne de texte contenue dans la variable ligne dans le fichier F. La chose, c'est que c'est une simple chaîne de caractère, et qu'elle ne dispose pas de propriété de style particulière (hormis pour ce qui est de l'affichage, si j'ai bien compris la nature du composant RichEdit). Ce qu'il faut bien comprendre, c'est qu'un fichier .txt, .bat ou .rtf est composé de texte pur. Les propriétés de mises en forme sont gardées en RTF à l'aide d'une syntaxe que je qualifierais personnellement d'absconse. Plus de détail sur la page de Wikipedia qui en parle. Tu peux aussi créer un fichier RTF sous wordpad, puis l'ouvrir sous notepad et te faire peur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mre0311 Posté(e) le 6 février 2008 Auteur Partager Posté(e) le 6 février 2008 Oui, y a l'intégralité de mon code... pour l'histoire du writeln, je me sens idiot d'un coup! Effectivement, il va lire, ligne par ligne, les chaines de caractères du richedit... Sinon, j'ai testé le .rtf ouvert avec le bloc note... Du coup, je crois que je vais laisser tomber la police, c'est peut être un peut trop poussé pour mon niveau actuel... Néanmoins, je ne met pas encore en résolu, si qqn a une solution, sa m'intéresse quand même... Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 8 février 2008 Partager Posté(e) le 8 février 2008 Pour utiliser le widget memo riche de microsoft faut evidement un widget richedit, dans celui ci tu pourra tout faire ( a la creation du widget tu configure une structure pour les bouton à activer ou non ). De mémoire la seul chose que peut pas faire du rich edit c'est l'insertion d'image meme en OLE .. Apres pour la sauvegarde du contenu c'est un format connu http://fr.wikipedia.org/wiki/Rich_Text_Format , c'est un format de mise en page comme latex sauf que le seul élément qui dans windows peut te l'interpreté sans codage de ta part c'est un rich edit. http://www.greatis.com/delphicb/tips/lib/f...tfontstyle.html http://delphi.developpez.com/faq/?page=richedit http://www.developpez.net/forums/showthread.php?t=81766 http://www.developpez.net/forums/showthread.php?t=254167 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mre0311 Posté(e) le 8 février 2008 Auteur Partager Posté(e) le 8 février 2008 Merci beaucoup, je prend note de tes liens, et j'y regarderais de plus près quand je serais plus avancé dans ma formation Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.