Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   HTML WYSIWYG Editor (https://www.delphipraxis.net/181888-html-wysiwyg-editor.html)

machstuhl 15. Sep 2014 14:34

HTML WYSIWYG Editor
 
Hallo zusammen,

ich möchte gerne das meine Nutzer eine E-Mail-Signatur in einem WYSIWYG-Editor anlegen können.
Dieser Editor soll mir am Ende dann einen mit HTML-Tags versehenen String ausgeben.

Ich habe schon ein wenig im Internet gesucht, und habe nix passendes gefunden (TMS HTML Pack eignet sich nicht, TRichView ist zu überladen).

Hat wer einen Tipp woher ich so einen Editor bekommen kann? Oder zumindest eine Komponente die HTML verschiedene Fonts zulässt, damit ich mir zur Not selbst was basteln kann. TRichMemo eignet sich leider nicht, da man dort nur zeilenweise verschiedene Formatierungen angeben kann.

Gruß und Kuss

Bummi 15. Sep 2014 15:11

AW: HTML WYSIWYG Editor
 
Du könntest gegf. TWebBrowser dafür verwenden:

Delphi-Quellcode:
implementation
uses MSHTML;
{$R *.dfm}

var
  DocInterface:IHTMLDocument2;



procedure TMiniDemoForm.InitalisierenClick(Sender: TObject);
begin
  WebBrowser1.Navigate('file:///C:/temp/empty.html');
  DocInterface := (WebBrowser1.Document as IHTMLDocument2);
  DocInterface.DesignMode := 'On';
end;

procedure TMiniDemoForm.Selection_FettClick(Sender: TObject);
begin
  DocInterface.execCommand('Bold', false,0);
end;

procedure TMiniDemoForm.Schrift30Click(Sender: TObject);
begin
   DocInterface.execCommand('FontSize', false,30);
end;


procedure TMiniDemoForm.GetHTMLClick(Sender: TObject);
begin
  Showmessage(DocInterFace.body.InnerHTML)
end;
Für einen Zeilenumbruch benötigst Du CTRL+ENTER, da ENTER speichern möchte.

mquadrat 16. Sep 2014 06:31

AW: HTML WYSIWYG Editor
 
Wir verwenden aktuell, die arg sperrige Lösung alles zwischen HTML und RTF hin und her zu wandeln und dann TRichView zu nehmen.

GS Auftrag von Sage verwendet den CK Editor, wahrscheinlich innerhalb eines TWebBrowser. Das ist im Moment auch meine favorisierte Variante, wobei der nicht ganz billig ist.

Mschmidt 16. Sep 2014 07:24

AW: HTML WYSIWYG Editor
 
schau mal hier http://www.entwickler-ecke.de/viewtopic.php?t=50584

mfg
Mathias

machstuhl 26. Sep 2014 10:18

AW: HTML WYSIWYG Editor
 
Das mit dem Webbrowser funktioniert ganz gut. Man kann den ja sogar mit StringStreams füllen :-)

Nächstes Problem. Wenn ich im WebBrowser im EditMode bin und einen Zeilenumbruch mache, füllt der Webbrowser immer <p> anstatt <br> ein.

Hat irgendwer eine Idee wie ich die doofen Absätze beim Zeilenumbruch weg bekommen kann?

mjustin 26. Sep 2014 10:25

AW: HTML WYSIWYG Editor
 
Zitat:

Zitat von machstuhl (Beitrag 1273895)
Nächstes Problem. Wenn ich im WebBrowser im EditMode bin und einen Zeilenumbruch mache, füllt der Webbrowser immer <p> anstatt <br> ein.

Hat irgendwer eine Idee wie ich die doofen Absätze beim Zeilenumbruch weg bekommen kann?

Was ist das konkrete Problem, der Zeilenabstand (der bei br und p unterschiedlich hoch ist)? Das kann man durch das Auftragen von etwas CSS beheben.

machstuhl 26. Sep 2014 10:57

AW: HTML WYSIWYG Editor
 
Zitat:

Zitat von mjustin (Beitrag 1273899)
Zitat:

Zitat von machstuhl (Beitrag 1273895)
Nächstes Problem. Wenn ich im WebBrowser im EditMode bin und einen Zeilenumbruch mache, füllt der Webbrowser immer <p> anstatt <br> ein.

Hat irgendwer eine Idee wie ich die doofen Absätze beim Zeilenumbruch weg bekommen kann?

Was ist das konkrete Problem, der Zeilenabstand (der bei br und p unterschiedlich hoch ist)? Das kann man durch das Auftragen von etwas CSS beheben.

In der Tat. Der Webbrowser soll ein WYSIWYG Editor für Endanwender werden damit diese sich ihre eigene EMail Signatur basteln können. Diese wird als String in der Datenbank gespeichert.
Wie stellst du dir das mit dem CSS vor? Kann man nicht irgendwie dem Webbrowser sagen, dass er <br>s anstatt <p>s einfügen soll?

edit: hab es... das Interface hat eine StyleSheet-Property. Wie praktisch :-)
Danke!

fs999 26. Sep 2014 15:59

AW: HTML WYSIWYG Editor
 
...

machstuhl 30. Sep 2014 09:03

AW: HTML WYSIWYG Editor
 
Ich raffs doch nicht so ganz wie ich jetzt die <p> so umbiege, dass sie wie <br> angezeigt bekomme. Kann mir wer evtl mit nem Codebeispiel auf die Sprünge helfen?

Code:
procedure TFormHTMLText.FormShow(Sender: TObject);
const
  CSS = 'p {'#13#10
        + '   margin-top: 0;'#13#10
        + '   margin-bottom: 0;'#13#10
        + '}';
var
  StylesheetIndex: Integer;
  Stylesheet: IHTMLStyleSheet;
begin
  // Ein Navigate muss gemacht werden
  WebBrowser1.Navigate('about:blank');
  FDocInterface := (WebBrowser1.Document as IHTMLDocument2);
  LoadDocFromString(WebBrowser1, FHTMLString);

  // CSS StyleSheet laden
  StylesheetIndex := FDocInterFace.StyleSheets.Length;
  if stylesheetIndex > 31 then
     raise Exception.Create(Lan('Maximal 32 Stylesheets erlaubt.'));
  Stylesheet := FDocInterFace.createStyleSheet('', StylesheetIndex);
  Stylesheet.cssText := CSS;

  // String in Browser laden
  LoadDocFromString(WebBrowser1, FHTMLString);

  DesignMode(True);
end;
macht leider keine <br> aus den <p> (bzw stellt <p> als <br> dar).

WM_CLOSE 30. Sep 2014 14:07

AW: HTML WYSIWYG Editor
 
Das ist leider ein ganz typisches Verhalten, das auch Word und Konsorten zeigen.
Um nur einen Zeilenumbruch zu machen müsste man [Strg]+[Return] drücken.
Wie man dieses Verhalten unterdrückt, weiß ich auf Anhieb jetzt nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf