Autor Beitrag
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mo 16.02.04 20:03 
Hi,
ich habe ein SynEdit auf meinen Form. Ich möchte in einer HTML-Komponente quasi eine Vorschau des Codes der im SynEdit steht machen. Dazu müssen ja HTML-spezifische-Informationen und Style-Informationen angefügt werden.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.TabSheet4Enter(Sender: TObject);
var
HTML : TStringList;
begin
HTML :=TStringList.create;
HTML.Add('<html><head><style>body {backgroundcolor:#ffffff; color:#000000; font:10pt Arial, sans-serif;}</style></head><body>');
HTML.Add(SynEdit1.text);
HTML.add('</body></html>');
HTML.SaveToFile(ExtractFilePath(Application.ExeName) + 'htmlpreview.html');
htmllite1.LoadFromFile(ExtractFilePath(Application.ExeName) + 'htmlpreview.html');
end;
Also das geht ja auch aber dann werden alle Zeilenumbüche (also ENTERs) gelöscht. Aus folgenden
ausblenden Quelltext
1:
2:
3:
Hallo
hallo2
HALLO3
wird dann Hallo hallo2 HALLO3

Wie kann ich da machen das die Umbrüche erhalten bleiben. Hab mir gedacht das ich jede Zeile auslese und dann in einer FOR-Schleife immer einzeln HTML.add(LINE1 + #1310); mache. Aber ich weiß nicht wie ich das machen soll.. Vielleicht gibts ja auch eine einfachere Lösung...

Könnt ihr mir helfen?

Greetz
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 16.02.04 21:24 
Hi,

Mach doch einfach HTML.AddStrings(SynEdit.Lines);

Oder meintest du was komplett anderes? :roll:
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Mo 16.02.04 21:33 
die lösung ist ganz einfach:
du must der html-seite auch mitteilen, das der text in eine neue zeile geschrieben wird.
das machst du mit dem HTML-befehl <br>
ich hoffe allerdings das ich dein probem richtig interpretiert habe...

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
Andreas L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 17.02.04 14:12 
patrick hat folgendes geschrieben:

ich hoffe allerdings das ich dein probem richtig interpretiert habe...


Nicht wirklich

patrick hat folgendes geschrieben:
die lösung ist ganz einfach:
du must der html-seite auch mitteilen, das der text in eine neue zeile geschrieben wird.
das machst du mit dem HTML-befehl <br>


Das ist mir klar aber irgendwie muss das ja automatisiert werden. Der Code der im SynEdit steht ist kein HTML-Code, es ist ein Pascal-Code und der soll zu dokumentationszwecken in einer HTML-Datei untergebracht werden. Jede Zeile des SynEdits muss in der HTML-Datei dann auch als neue Zeile dargestellt werden. Man könnte jetzt ja hinter jeder zeile ein <br> einfügen, aber 1. ich weiß nicht wie ich das machen soll; 2. gibts nicht eine leichtere lösung.

Greetz und thx
ixtreme
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 17.02.04 15:25 
einfach die pre tags benutzen!


ixtreme.de
Andreas L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 17.02.04 21:01 
Ich glaube ihr versteht mich alle nicht so richtig.

Also, im SynEdit schreib ein User folgendes (und zwar so wie es da steht, also mit Returns (Linebreaks die mit der ENTER-taste erzeugt werden *g*):

ausblenden Quelltext
1:
2:
3:
begin
 Memo1.clear;
end;


Mit meinen im ersten Post genannten Code erstelle ich nun eine HTML-Datei die als Dokumentationszweck verwendet werden soll. Im Browser sieht das dann aber so aus:

ausblenden Quelltext
1:
begin  Memo1.clear; end;					


Also wird alles in eine Zeile rein gequetscht. Es soll aber so aussehen:
ausblenden Quelltext
1:
2:
3:
begin
 Memo1.clear;
end;


Wie mache ich das jetzt?

1. Ich klappere jede einzelne Zeile im SynEdit ab und setzte ein <-br> dahinter oder ein <pre> davor oder ich füge jede Zeile einzeln mit StringList.add hinzu.

2. Es gibt eine leichtere Methode, habe schon daran gedacht einfach das ganze mit einen Memo zu realiseren das auf VISIBLE :=FALSE; gestellt ist. Würde aber auch nur wieder die EXE größer machen und ist irgendwie schmlapig programmiert.

Ich weiß nicht wie ich 1. und 2. machen soll. habe davon keine Ahnung, wisst ihr wie ich es machen soll?

habt ihr mich jetzt verstanden?

Greetz und thx