Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - SynEdit - Editeur HTML

Présentation 

Cette exemple complet illustre les possibilités principales du composant TSynEdit. Pour cela, nous allons créer un éditeur HTML.


Vous pourrez bien entendu, si vous le souhaitez, modifier les couleurs des mots clés grâce à l'inspecteur d'objet.


Présentation 

Ajouter un composant TSynEdit ainsi qu'un composant TSynEditPrint pour l'impression. Mettez la propriété "Align" du composant TSynEdit à "alCenter".
Ajoutez un composant TMainMenu et ajoutez-y plusieurs items.
Ajoutez aussi un composant TStatusBar constitué de 3 panels (indice de 0 à 2).

Voici le code source des possibilités principales de SynEdit :

Nouveau document HTML


procedure TForm1.Nouveau1Click(Sender: TObject);
begin
SynEdit1.ClearAll; //Supprime tout le texte du SynEdit
end;

Ouvrir un fichier HTML

procedure TForm1.Ouvrir1Click(Sender: TObject);
begin
if OpenDialog1.Execute then //Execute la boite de dialogue "Ouvrir" et si l'utilisateur clique sur "Ouvrir" alors...
SynEdit1.Lines.LoadFromFile(OpenDialog1.FileName); //Ouvre le fichier dans le SynEdit
end;

Enregistrer un document HTML

procedure TForm1.Enregistrersous1Click(Sender: TObject);
begin
if SaveDialog1.Execute then //Execute la boite de dialogue "Enregistrer"
SynEdit1.Lines.SaveToFile(SaveDialog1.FileName); //Enregistre le contenu du SynEdit dans le fichier spécifié
end;

Imprimer le document HTML

procedure TForm1.Imprimer1Click(Sender: TObject);
begin
if PrintDialog1.Execute then
begin
SynEditPrint1.SynEdit:=SynEdit1;
SynEditPrint1.Title:='Titre';
SynEditPrint1.Print;
end;
end;

Annuler les dernières opérations effectuées


procedure TForm1.Annuler1Click(Sender: TObject);
begin
SynEdit1.Undo;
end;

Rétablir les dernières opérations effecutées

procedure TForm1.Retablir1Click(Sender: TObject);
begin
SynEdit1.Redo;
end;

Couper la sélection dans le presse-papier

Pour se servir du presse-papier, il faut ajouter l'unité "ClipBrd".

Uses ClipBrd;

procedure
TForm1.Couper1Click(Sender: TObject);
begin
SynEdit1.CutToClipboard;
end;

Copier la sélection dans le presse-papier

procedure TForm1.Copier1Click(Sender: TObject);
begin
SynEdit1.CopyToClipboard;
end;

Coller le contenu du presse-papier

procedure TForm1.Coller1Click(Sender: TObject);
begin
SynEdit1.PasteFromClipboard;
end;

Supprimer la sélection

procedure TForm1.Supprimer1Click(Sender: TObject);
begin
SynEdit1.ClearSelection;
end;

Sélectionner tout le texte du document HTML

procedure TForm1.Toutselectionner1Click(Sender: TObject);
begin
SynEdit1.SelectAll;
end;

Rechercher un mot ou une expression dans le document HTML

procedure TForm1.Rechercher1Click(Sender: TObject);
begin
FindDialog1.Execute; //Execute la boite de dialogue "Rechercher"
end;

function FindOptionsToSearchOptions (const FindOptions: TFindOptions): TSynSearchOptions; //Cette fonction indique les options que l'on ajoute à la recherche dans le SynEdit
begin
Result:=[];
if frMatchCase in FindOptions then
Include(Result,ssoMatchCase); //Différencie ou non les majuscules ou les minuscules (Respecter la casse)
if frWholeWord in FindOptions then
Include(Result,ssoWholeWord); //Recherche un mot entier (Mot entier uniquement)
if not(frDown in FindOptions) then Include(Result,ssoBackwards); //Recherche le texte vers le haut ou vers le bas (Direction)
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
begin
FindDialog1.CloseDialog; //Ferme la boite de dialogue "Rechercher"
if SynEdit1.SearchReplace(FindDialog1.FindText,'',
FindOptionsToSearchOptions(FindDialog1.Options))=0 then //Recherche le texte avec les différentes options
MessageDlg(Format('Chaîne recherchée ''%s'' non trouvée',[FindDialog1.FindText]),mtInformation,[mbYes],0); //Affiche un message indiquant que le texte n'a pas été trouvé
end;

procedure TForm1.Rechercherlesuivant1Click(Sender: TObject);
begin
if FindDialog1.FindText='' then
Rechercher1Click(Sender) //Si il n'y a pas de texte à rechercher alors on ouvre la boite de dialogue "Rechercher" en passant par l'item Rechercher du menu
else
FindDialog1Find(FindDialog1); //Sinon, on effectue la recherche
end;

Remplacer un mot ou une expression dans le document HTML

procedure TForm1.Remplacer1Click(Sender: TObject);
begin
ReplaceDialog1.Execute; //Execute la boite de dialogue "Remplacer"
end;
procedure TForm1.ReplaceDialog1Find(Sender: TObject);
begin
if SynEdit1.SearchReplace(FindDialog1.FindText,'',
FindOptionsToSearchOptions(FindDialog1.Options))=0 then //Recherche le texte avec les différentes options
MessageDlg(Format('Chaîne recherchée ''%s'' non trouvée',[FindDialog1.FindText]),mtInformation,[mbYes],0); //Affiche un message indiquant que le texte n'a pas été trouvé
end;

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var Bol: Boolean;
begin
if not(frMatchCase in ReplaceDialog1.Options) then //Si l'option "Respecter la casse" n'a pas été sélectionnée
Bol:=AnsiCompareText(SynEdit1.SelText,ReplaceDialog1.FindText)=0 //Compare la sélection avec le mot recherché (les différences de majuscules/minuscules ne sont pas détectées)
else //Sinon
Bol:=SynEdit1.SelText=ReplaceDialog1.FindText;
if Bol then
SynEdit1.SelText:=ReplaceDialog1.ReplaceText; //Sélectionne le texte recherché
if SynEdit1.SearchReplace(ReplaceDialog1.FindText,'',
FindOptionsToSearchOptions(ReplaceDialog1.Options))=0 then //Recherche le texte avec les différentes options
MessageDlg(Format('Chaîne recherchée ''%s'' non trouvée',[ReplaceDialog1.FindText]),mtInformation,[mbYes],0) //Affiche un message indiquant que l'on n'a pas trouvé le mot recherché
else //Sinon
if frReplaceAll in ReplaceDialog1.Options then //Si ltutilsateur clique sur le bouton "Remplacer tout" alors
begin
ReplaceDialog1.CloseDialog; //Ferme la boite de dialogue "Remplacer"
repeat //Répéter...
SynEdit1.SelText:=ReplaceDialog1.ReplaceText; //Sélectionne le texte recherché
until SynEdit1.SearchReplace(ReplaceDialog1.FindText,'',FindOptionsToSearchOptions(ReplaceDialog1.Options))=0; //..Jusqu'a ce que l'on ne trouve plus le mot recherché
end;
end;

procedure TForm1.Edition1Click(Sender: TObject);
begin
Annuler1.Enabled:=SynEdit1.CanUndo; //Si on peut annuler alors l'item "Annuler" dans le menu est activé
Retablir1.Enabled:=SynEdit1.CanRedo;
Couper1.Enabled:=SynEdit1.SelAvail;
Copier1.Enabled:=SynEdit1.SelAvail;
Coller1.Enabled:=Clipboard.HasFormat(CF_TEXT); //Si le contenu du presse-papier est bien du texte alors l'item "Coller" dans le menu est activé
Supprimer1.Enabled:=SynEdit1.SelAvail; //Si une sélection a été réalisé alors l'item "Supprimer" dans le menu est activé
end;

Indiquer la ligne et la colonne du curseur de texte

procedure TForm1.SynEdit1StatusChange(Sender: TObject;
Changes: TSynStatusChanges);
begin
StatusBar1.Panels[0].Text := Format('%4d:%4d', [SynEdit1.CaretY, SynEdit1.CaretX]);
end;

Indiquer s'il ya eu une modification ou non


procedure TForm1.SynEdit1StatusChange(Sender: TObject;
Changes: TSynStatusChanges);
begin
...
if scModified in Changes then
begin
if SynEdit1.Modified then
StatusBar1.Panels[1].Text:='Modifié'
else
StatusBar1.Panels[1].Text:='Non modifié';
end;
end;

Indiquer le mode insérer ou remplacer

procedure TForm1.SynEdit1StatusChange(Sender: TObject;
Changes: TSynStatusChanges);
const InsertText: Array[Boolean] of String = ('Remplacé', 'Inséré');
begin
...
if scInsertMode in Changes then
StatusBar1.Panels[2].Text:=InsertText[SynEdit1.InsertMode];
end;

Editeur HTML    [ 22-07-2004 ]
Utilisation complète du composant SynEdit en Delphi.
Télécharger :  [12 Ko] [Télécharger editeurhtml.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Tous droits réservés - Contacts
Haut de la page