|
Tutoriaux
- SynEdit - Editeur HTML |
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.
|
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] [
editeurhtml.zip]
Auteur : Yoann
Site internet : http://delphipage.free.fr/
|
|
|