![]() |
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 |
AW: HTML WYSIWYG Editor
Du könntest gegf. TWebBrowser dafür verwenden:
Delphi-Quellcode:
Für einen Zeilenumbruch benötigst Du CTRL+ENTER, da ENTER speichern möchte.
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; |
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. |
AW: HTML WYSIWYG Editor
|
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? |
AW: HTML WYSIWYG Editor
Zitat:
|
AW: HTML WYSIWYG Editor
Zitat:
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! |
AW: HTML WYSIWYG Editor
...
|
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:
macht leider keine <br> aus den <p> (bzw stellt <p> als <br> dar).
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; |
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. |
AW: HTML WYSIWYG Editor
Wieso ist das 'leider' ein 'ganz typisches Verhalten'? Das ist so, denn bei Texten geht es um Fließtext. Wenn Du das als 'Zeilen' ansehen willst, dann definiere den Absatzendeabstand entsprechend. Falls ein Absatz im Blocksatz formatiert werden soll, würde ein <br> dazu führen, das die Zeile auf die gesamte Breite gezogen wird und dagegen hat man i.A. etwas (einfach weil es Kacke aussieht).
|
AW: HTML WYSIWYG Editor
Ich meinte "leider", weil viele Leute schlicht [Return] drücken um eine neue Zeile zu machen. Auch mehrmal hintereinander, damit der Abstand größer wird. Und zwar vom unbedarften, briefschreibenden Opa bis zur erfahrenen Sekretärin. Eben weil es geht und meiner Erinnerung nach nie einen (sichtbaren) Unterschied machte.
Den Absatzabstand an den Zeilenabstand anzugleichen ist aber mehr als kurzsichtig, denn viele Empfänger haben E-Mail-Programme die nicht standardkonform arbeiten und z.B. kein CSS auswerten. Das würde vielleicht scheiße aussehen. Ein Lösungsansatz wäre den Code so abzuändern, dass beim Drücken der [Return]-Taste der gleiche Ablauf erfolgt wie bei [Strg]+[Return]. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz