Fontveränderung TRichMemo - Wie machen?

Rund um die LCL und andere Komponenten
Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von m.fuchs »

and4more hat geschrieben:Wird das HTML-Formular dann im Browser angezeigt oder statt des MemoFelds, also im gleichen Unterfenster?...und eigentlich wollte ich in der nächsten Ausbaustufe ein PDF-Formular generieren!!! Oh je mir schwant Schlimmes :shock: :shock: :shock:
Wie wolltest du das PDF erstellen? Per Ausdruck? Dann wäre es kein Problem, das TIpHtmlPanel hat auch eine Druck Funktionalität.

Code: Alles auswählen

 IpHtmlPanel1.Print(1,1); 
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10906
Registriert: Mo 11. Sep 2006, 19:01

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von theo »

Hör auf mit dem Krampf und nimm ein IpHTMLPanel.
Ich habe dir oben ein funktionierendes Beispiel gemacht, das funzt nat. auch mit SetHtmlFromStr.

Eine Tabelle geht z.B. so in einfachem HTML

Code: Alles auswählen

IpHtmlPanel1.SetHtmlFromStr('<table border="1"><tr><td>eins</td><td>zwei</td></tr><tr><td>drei</td><td>vier</td></tr>/table>');

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von Michl »

Hey, damit Du nicht hin- und hergerissen bist, stimme im Theo bzw. M.Fuchs zu. So lernst Du auch noch ein bischen HTML kennen, was auf jeden Fall nicht verkehrt ist! Ich hatte nur versucht, Dir Deine Denkfehler aufzuzeigen, der bessere Ansatz scheint IpHtmlPanel zu sein - habe da praktisch zu wenig Erfahrung (setze weder lzRichEdit noch RichMemo in der Praxis ein - IpHtmlPanel nutzte ich eine Zeit lang in einem Projekt - war da ausreichend).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von and4more »

Wäre wirklich zu überlegen die Ausgabe in HTML durchzuziehen, allerdings ist "wiki.freepascal.org/Lazarus_Packages" momentan nicht erreichbar und ich finde keine alternative Downloadquelle außer den GitHubs. Aber 'ne ZIP-Datei von turbopoweripro und turbopoweriprodsgn wär mir echt lieber als alle Dateien einzelnen zu laden.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Benutzeravatar
theo
Beiträge: 10906
Registriert: Mo 11. Sep 2006, 19:01

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von theo »

Das hast du schon. Ist bei Lazarus dabei. Package TurbopowerIPro1.0

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von and4more »

m.fuchs hat geschrieben: Wie wolltest du das PDF erstellen? Per Ausdruck? Dann wäre es kein Problem, das ....
Nee, wollte das eigentlich mit PowerPDF machen, aber wenn ich noch nicht mal ein simples RichMemo/-Edit hinkriege. :cry:
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von and4more »

theo hat geschrieben:...Hier ein MinmalBeispiel:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var NewHTML:TIpHtml;
  Strm:TStringStream;
begin
  NewHTML:=TIpHtml.Create;
  Strm:=TStringStream.Create('test <b>test</b> test <br> test <i>test</i> test');
  NewHTML.LoadFromStream(Strm);
  IpHtmlPanel1.SetHtml(NewHTML);
  Strm.Free;
end;    
O. K., so wie ich das verstehe erzeugst du erst ein HTML-Dokument (NewHTML), das dann im HTML-Fenster (IpHTMLPanel1) angezeigt wird. In welcher unit sind diese Funktionen enthalten?

Benutzeravatar
theo
Beiträge: 10906
Registriert: Mo 11. Sep 2006, 19:01

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von theo »

and4more hat geschrieben:O. K., so wie ich das verstehe erzeugst du erst ein HTML-Dokument (NewHTML), das dann im HTML-Fenster (IpHTMLPanel1) angezeigt wird. In welcher unit sind diese Funktionen enthalten?
Die Frage verstehe ich jetzt zwar überhaupt nicht, aber ohne weitere Nachfragen: Die Unit heisst IpHtml

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von and4more »

So, ich habe jetzt auf HTML umgestellt und glaube, dass es eine Super-Idee war. Allerdings bleibt das HTML-Panel leer. Habe alles folgendermaßen realisiert:

Code: Alles auswählen

 
var
    RisikoListe: TStringList;
.
.
//Hauptprogramm
.
.
  // ***** Abschließende Beurteilung *****
  // ----- Platz für Firmenlogo oben ----
  InhaltListe.Add('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'+
    '<html><head><meta http-equiv="content-type" content="text/html; charset=utf8">');
  InhaltListe.Add('<title>Osteoporose-Risiko-Check</title></head><body><br><br><br>');
  InhaltListe.Add('<br><br><br><h1><b>Osteoporose-Risiko Erhebungsbogen</b></h1>');
  // --------- Inhalt ---------------------------
  InhaltListe.Add('<br><h3>');
  InhaltListe.Add('<b>Datum der Befunderhebung: '+tab+tab+tab+tab+tab+tab+tab+tab+
                   TEdUTT.Text+'.'+TEdUMM.Text+'.'+TEdUJJJJ.Text+'</b></h3><br><br>');
  InhaltListe.Add('Patientenname: '+tab+tab+tab+tab+tab+tab+tab+tab+tab+tab+
                   TEdVName.Text+' '+TEdName.Text+'<br>');
  InhaltListe.Add('Geburtsdatum: '+tab+tab+tab+tab+tab+tab+tab+tab+tab+
                   TEdTT.Text+'.'+TEdMM.Text+'.'+TEdJJJJ.Text+'<br>');
  InhaltListe.Add('Alter zum Untersuchungszeitpunkt: '+tab+tab+tab+tab+tab+
                   tab+tab+TEdAlter.Text+'<br>');
  InhaltListe.Add('Körpergröße: '+tab+tab+tab+tab+tab+tab+tab+tab+tab+
                   TEdGroesse.Text+' cm'+'<br>');
.
.
  // ***** Übertragung an das HTML-Panel aus InhaltListe *****
//  ResultsForm.MemBewertung.Text:='';
  InhaltListe.Add('</body></html>');
  for i:=1 to InhaltListe.Count do
    ResultsForm.MemBewertung.SetHtmlFromStr(InhaltListe[i-1]);
//  InhaltListe.Free;
.
.
 
Eigentlich sollte der HTML-Code im Panel angezeigt werden, irgendwie klappt das aber in dieser Form nicht, d. h. das Formular bleibt leer, aber auch keine Fehlermeldung. Möglicherweise irgendwo ein Fehler im HTML-Code.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von and4more »

...Nachtrag: Natürlich sind die 'tab' im HTML-Code wirkungslos und werden später ersetzt.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Benutzeravatar
theo
Beiträge: 10906
Registriert: Mo 11. Sep 2006, 19:01

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von theo »

Das muss in einem Rutsch raus:

Code: Alles auswählen

ResultsForm.MemBewertung.SetHtmlFromStr(InhaltListe.Text);

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von and4more »

theo hat geschrieben:Das muss in einem Rutsch raus:

Code: Alles auswählen

ResultsForm.MemBewertung.SetHtmlFromStr(InhaltListe.Text);
Super, das war's, jetzt klappt die Ausgabe. Vielen Dank. Allerdings werden die Sonderzeichen leider nicht korrekt dargestellt. Gibt es einen einfachen Weg oder muss jedes Zeichen gemäß &#...; kodiert werden?
Dateianhänge
HTML-Ausgabe
HTML-Ausgabe
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Fontveränderung TRichMemo - Wie machen?

Beitrag von and4more »

Ergänzung: Hab's grade selbst rausgefunden. Hatte noch im Kopf 'charset=UTF-8' auskommentiert. Nach Aktivierung klappt's super. Nochmal vielen Dank an Alle, die sich soviel Zeit und Mühe mit meinem Problem gemacht haben.
Dateianhänge
UTF8-Ausgabe
UTF8-Ausgabe
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Antworten