Les composants du navigateur Web EmbeddedWB de bsalsa.com offrent uniquement les outils pour le faire.
Editer: bsalsa.com n'existe plus. Nouvel emplacement: https://bitbucket.org/wpostma/tembeddedwb
Vous placez un contrôle EmbeddedWB (navigateur Web) (fenêtre) pour afficher le code HTML, par exemple à partir d'un site Web. Vous placez ensuite un composant EditDesigner sur le formulaire et le liez au contrôle EmbeddedWB dans l'inspecteur d'objets - Propriétés. Avec EditDesigner, vous pouvez paramétrer le WebBrowser en mode édition et effectuer des modifications de base, telles que l'insertion ou la suppression de texte ou la définition de certaines propriétés de police. Pas un éditeur complet cependant.
Ne désespérez pas, ce paquet est un wrapper complet à l'éditeur MSHTML. Une légère addition à l'unité EditDesigner vous permet un accès complet à l'interface execCommand de MSHTML.
Code d'origine:
procedure ExecCommand(Command: Widestring; ShowUI: Boolean; Value: Integer);
begin
if Assigned(FEmbeddedWB) then
GetHTMLDoc2FromWB.execCommand(Command, showUI, Value);
end;
Vous verrez que cette procédure EditDesigner.pas accepte uniquement la valeur et parse Integer au HTMLDoc.execCommand. Ce qui est tout ce dont vous avez besoin pour certaines commandes, ayant généralement besoin de 0 comme valeur. Mais de nombreuses commandes ont besoin d'informations Chaîne pour la valeur, telles que la modification du nom de la police. Le HTMLDoc.execCommand acceptera réellement un variant comme valeur, ainsi j'ai ajouté une autre procédure à EditDesigner.pas, comme suit, pour donner l'accès presque complet à l'éditeur MSHTML, si vous connaissez les commandes à envoyer.
procedure TEditDesigner.ExecCommandEx(Command: Widestring; ShowUI: Boolean; Value: OleVariant);
begin
if Assigned(FEmbeddedWB) then
GetHTMLDoc2FromWB.execCommand(Command, showUI, Value);
end;
Vous accédez à cette procédure lorsque vous devez envoyer une commande plus avancée à l'éditeur. Cela changera la couleur de la police.
procedure TfrmComposer.actFontColourExecute(Sender: TObject);
begin
if dlgColorDialog.Execute then
begin
EditDesigner1.ExecCommandEx('foreColor',False,dlgColorDialog.Color);
end;
EditDesigner1.EmbeddedWB.SetFocus;
end;
Cela va changer la police ...
procedure TfrmComposer.JvFontComboBoxChange(Sender: TObject);
begin
EDewbMessageBody.ExecCommandEx('fontname',False,JvFontComboBox.FontName);
EDewbMessageBody.EmbeddedWB.SetFocus;
end;
Il y a aussi une procédure EditDesigner1.InsertHTML qui vous permettra d'insérer tout ce que vous voulez.
Bonne Delphiin';)
L'élément visé dans la réponse a été déplacé vers une nouvelle adresse - trouvée, et ont mis à jour la réponse ... – HeartWare
Embarcadero a son propre éditeur web basé sur TWebBrowser. Mais il a des problèmes: http://stackoverflow.com/questions/39594393/twebbrowser-crashes-with-most-html-files – Ampere
Ceci est une question valide (fermée pour une mauvaise raison) avec une réponse super utile. Voter pour la réouverture. – Ampere