Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi BBCode Kompnente (https://www.delphipraxis.net/79026-bbcode-kompnente.html)

xZise 15. Okt 2006 09:40


BBCode Kompnente
 
Gibt es eine BBCode Komponente?
Also womit ich phpbb Text anzeigen kann mit der korrekten Formatierung?
Am besten kostenlos :D

[edit] @ Balu: Danke ^^ Hatte phpbb mit BBCode verwechslet :D [/edit]

Balu der Bär 15. Okt 2006 09:42

Re: phpbb Kompnente
 
Eine phpBB-Komponente?

Du meinst man gibt [ b] Text [/ b] ein und es kommt Text heraus? Das ganze nennt sich BBCode, eine Komponente kenne ich aber leider nicht. Was nicht schlimm ist, weil du BBCode doch ganz einfach selber parsen kannst.

xZise 15. Okt 2006 09:46

Re: phpbb Kompnente
 
Zitat:

Zitat von Balu der Bär
Was nicht schlimm ist, weil du BBCode doch ganz einfach selber parsen kannst.

Naja... relativ, weil ich wüsste z.B. nicht, wie ich verschieden Formatierten Text ausgeben kann.
Das zu parsen, also z.B. zu sagen, dass etwas fett sein soll, krieg ich vielleicht hin, aber ich wüsste nicht, wie ich dasa Anzeigen könnte.

PS: Ups ^^ Habe das Forum mit dem Code verwechselt :D

Balu der Bär 15. Okt 2006 09:49

Re: BBCode Kompnente
 
Dieser Beitrag dürfte interessant für dich sein. Die Ausgabe kannst du doch gestalten wie du willst? :gruebel: Eine Möglichkeit wäre zum Beispiel das ganze in einem RichEdit auszugeben, dort kannst du auch wunderbar Formatierungen anwenden, alternativ könntest du es auch in HTML-Code umwandeln und im TWebBrowser anzeigen, da gibts doch viele Möglichkeiten. ;)

Daniel 15. Okt 2006 09:53

Re: BBCode Kompnente
 
Was Fertiges gibt es zum Beispiel von den WPTools. Die können die Standard-BBCodes parsen und entsprechend darstellen.

Ansonsten ist halt schon wie vorgeschlagen Handarbeit mit einen RichEdit fällig. Oder Du bettest ein Browser-Control ein.

xZise 15. Okt 2006 10:14

Re: BBCode Kompnente
 
Ich habe mit dem RichEdit angefangen:
Delphi-Quellcode:
  reVorschau.Lines.Clear;
  Showmessage('Bla');
  reVorschau.Lines.Add('{\rtf');
  Showmessage('Bla2');
  for j := 0 to mChangeLog.Lines.Count - 1 do begin
    // fett
    reVorschau.Lines.Add(StringReplace(StringReplace(mChangeLog.Lines[j], '[/b]', '}', [rfReplaceAll]), '[b]', '{/b', [rfReplaceAll]));
  end;
 
  reVorschau.Lines.Add('}');
"Bla" zeigt er mir an, aber "Bla2" nicht mehr. Da kommt dann nämlich ein Fehler. Weiß jemand warum?

r2c2 15. Okt 2006 10:38

Re: BBCode Kompnente
 
Zitat:

Zitat von xZise
"Bla" zeigt er mir an, aber "Bla2" nicht mehr. Da kommt dann nämlich ein Fehler. Weiß jemand warum?

Sorry, meine Glaskugel is auf Urlaub, welcher Fehler kommt nochmal?

BTW: Warum nimmst du nicht gleich Lines.Text?

mfg

Christian

xZise 15. Okt 2006 10:58

Re: BBCode Kompnente
 
Zitat:

Zitat von r2c2
Zitat:

Zitat von xZise
"Bla" zeigt er mir an, aber "Bla2" nicht mehr. Da kommt dann nämlich ein Fehler. Weiß jemand warum?

Sorry, meine Glaskugel is auf Urlaub, welcher Fehler kommt nochmal?

Ich habe angenommen es ist ein Standard RichEdit fehler:
Zitat:

---------------------------
Debugger Exception Notification
---------------------------
Project DevProject.exe raised exception class EOutOfResources with message 'RichEdit line insertion error'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Zitat:

Zitat von r2d2
BTW: Warum nimmst du nicht gleich Lines.Text?

mfg

Christian

Warum nicht :D

[edit]Also das hat nicht das Problem gelöst :(
Ich probiere es einmal, wo ich zuerst den Text erstelle und den dann anzeigen lasse.[/edit]

Jelly 15. Okt 2006 11:14

Re: BBCode Kompnente
 
Von TMS gibts noch THTMLStaticText. Ist nicht direkt BBCode sondern html, aber das Umwandeln von BBCode in HTML sollte wirklich nicht allzu schwer sein.

r2c2 15. Okt 2006 11:21

Re: BBCode Kompnente
 
Zitat:

Zitat von xZise
Ich habe angenommen es ist ein Standard RichEdit fehler:
Zitat:

---------------------------
Debugger Exception Notification
---------------------------
Project DevProject.exe raised exception class EOutOfResources with message 'RichEdit line insertion error'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

Ich nehm mal an TRichEdit kommt nicht mit klar, wenn du den Formatcode direkt reinschreibst. 2 Möglichkeiten:
- In n Stream schreiben und LoadFromStream
- mit Paragraph arbeiten
- Doch n TWebbrowser nehmen

//Nachtrag:

Zitat:

Zitat von xZise
Zitat:

Zitat von r2d2
BTW: Warum nimmst du nicht gleich Lines.Text?
[...]

Warum nicht :D

[edit]Also das hat nicht das Problem gelöst :([...]

War nur n Hinweis nebenbei. for-Schleife und Lines is nicht falsch, nur gehts mit Text einfacher...
BTW: Ich nenne mich r2c2...

mfg

Christian

xZise 15. Okt 2006 13:31

Re: BBCode Kompnente
 
Zitat:

Zitat von r2c2
Ich nehm mal an TRichEdit kommt nicht mit klar, wenn du den Formatcode direkt reinschreibst. 2 Möglichkeiten:
- In n Stream schreiben und LoadFromStream
- mit Paragraph arbeiten
- Doch n TWebbrowser nehmen

@ Stream: Damit habe ich noch net so viel gearbeitet... Nur muss ich den Stream abspeichern?
@ Paragraph: VErstehe ich nicht...
@ TWebbrowser: 1. Habe ich nicht und 2. müsste ich es zwischenspeichern, was ich vermeiden will!

Zitat:

Zitat von r2c2
//Nachtrag:
Zitat:

Zitat von xZise
Zitat:

Zitat von r2d2
BTW: Warum nimmst du nicht gleich Lines.Text?
[...]

Warum nicht :D

[edit]Also das hat nicht das Problem gelöst :([...]

War nur n Hinweis nebenbei. for-Schleife und Lines is nicht falsch, nur gehts mit Text einfacher...
BTW: Ich nenne mich r2c2...

@ Text: Mit und ohne Text und auch mit oder ohne Zwischenspeichern: Er meckert rum... Aber wenn ich den Text direkt beim erstellen in den CodeEditor eingebe, gehts... ( :wiejetzt: )
@ r2c2: sry :D Ich sag ja: Zitatsplittenmöglichkeit


Zitat:

Zitat von Jelly
Von TMS gibts noch THTMLStaticText. Ist nicht direkt BBCode sondern html, aber das Umwandeln von BBCode in HTML sollte wirklich nicht allzu schwer sein.

1. Ist die kostenlos?
2. Findet er die vlcdb (o.s.ä.) nicht

Zitat:

Zitat von Daniel
Was Fertiges gibt es zum Beispiel von den WPTools. Die können die Standard-BBCodes parsen und entsprechend darstellen.

Ansonsten ist halt schon wie vorgeschlagen Handarbeit mit einen RichEdit fällig. Oder Du bettest ein Browser-Control ein.

Also ich habe da nichts gescheites gefunden... Wo finde ich das denn? Ich habe zwar nach den WPTools gegooglet, aber da gibts keine BBCode-Komponente. (Das habe ich ergooglet)

Flocke 15. Okt 2006 13:37

Re: BBCode Kompnente
 
Zitat:

Zitat von r2c2
Ich nehm mal an TRichEdit kommt nicht mit klar, wenn du den Formatcode direkt reinschreibst.

Genau. Du kannst RTF nicht häppchenweise hineinfüttern. Arbeite doch der Einfachheit halber erst einmal mit einem String, an den du die einzelnen Fragmente einfach mit + anhängst. Abschließend setzt du den Text mit
Delphi-Quellcode:
RichEdit1.Perform(WM_SETTEXT, 0, Integer(PChar(Str))
Ebenfalls wichtig:
1. Ersetze alle \, { und } durch \\, \{ und \}
2. Ersetze alle Zeilenumbrüche durch \par
Danach kannst du dich um die Formatierung kümmern, dies muss aber nicht zeilenweise geschehen, du kannst das StringReplace einfach auf mChangeLog.Lines.Text loslassen.

// NACHTRAG

Außerdem solltest du hinter den RTF-Steuerzeichen jeweils ein Leerzeichen lassen, also
'[ b]' wird zu '\b '
'[ /b]' wird zu '\b0 '
'[ i]' wird zu '\i '
'[ /i]' wird zu '\i0 '
Die meisten Formatierungen kann man mit 0 (Null) dahinter wieder ausschalten. Dann sparst du dir die Klammern, die würden sowieso Fehler geben wenn der BBCode nicht korrekt geschachtelt ist.

Flocke 15. Okt 2006 13:37

Re: BBCode Kompnente
 
Sorry, falscher Button :oops:

r2c2 15. Okt 2006 13:44

Re: BBCode Kompnente
 
Zitat:

Zitat von xZise
@ Stream: Damit habe ich noch net so viel gearbeitet... Nur muss ich den Stream abspeichern?

N MemoryStream nicht...

Zitat:

@ Paragraph: VErstehe ich nicht...
So macht man eigentlich die Formatierungen im RichEdit: TRichEdit.Pragraph(und TextAttributes IMHO)...

Zitat:

@ TWebbrowser: 1. Habe ich nicht und 2. müsste ich es zwischenspeichern, was ich vermeiden will!
TWebBrowser is n ActiveX-Control, das du ganz einfach importieren kannst: Komponente->ActiveX importieren->MS Internet Controls->OK->Installieren (IIRC) Kannst ja mal danach suchen. Würd die Sache deutlich einfacher machen...

mfg

Christian

arbu man 15. Okt 2006 14:08

Re: BBCode Kompnente
 
Zum webbrowser abspeichern:

Mit about:<quelltext> kanst du html über die URL im browser anzeigen

xZise 25. Okt 2006 13:42

Re: BBCode Kompnente
 
Ich melde mich nochmal :D
Und zwar habe ich jetzt das von TMS gedownloadet (Diese Komponente), aber ich kriegs nicht hin, das zu installieren :( Er nennt mir folgenden Fehler:
Zitat:

[Fatal Error] htmlStaticTextpkgd7.dpk(32): Required package 'vcldb' not found


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 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