TIpHtmlPanel: String anzeigen

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

Komischerweise will das HTML Panel nicht so wie ich....
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

so, ich weiß noch nicht warum CSS nicht beachtet wird, aber vielleicht geht es ja bei einem von euch:

Code: Alles auswählen

procedure HTMLStringToHtmlPanel(const HTMLString:String; var HTMLPanel:TIpHtmlPanel);
var
  html:TIpHtml;
  ms:TMemoryStream;
  StrList:TStringList;
begin
  StrList:=TStringList.Create;
  StrList.Text:=HTMLString;
 
  ms:=TMemoryStream.Create;
  StrList.SaveToStream(ms);
  ms.Position:=0; // Von entscheidender Bedeutung, sonst geht es nicht(Vielleicht ein BUG in der LCL bzw. von  TStream bzw. von TStringList.
 
  html:=TIpHtml.Create;
  html.LoadFromStream(ms);
  HTMLPanel.SetHtml(html);
  ms.Free; StrList.Free;
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  HTMLStringToHtmlPanel(SynMemo1.Lines.Text,IpHtmlPanel1);
end;
Zum Code: Du brauchst ein SynMemo und das HTML Panel(Vielleicht musst es nach Installieren).
Und ein BitBnt Button.
Im SynMemo1 Schreibst du z.b. folgenden Code:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>text-decoration</title>
<style type="text/css">
  .Test {color:red;}
</style>
</head><body>
 
<p>
Test <span id="test">test2</span>
</p>
 
</body>
</html>
nach meiner Auffassung müsste es so gehen. Nur bin ich mit ID und Class nicht so vertraut. Ich habe aber alles ausprobiert. In einem alten Projekt ging es auf eine Ähnliche Art und weiße. Jedoch verwende ich da keine SynEdit sondern direkt ein TStringList.
MFG
Michael Springwald

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: TIpHtmlPanel: String anzeigen

Beitrag von Maik81ftl »

pluto hat geschrieben:so, ich weiß noch nicht warum CSS nicht beachtet wird, aber vielleicht geht es ja bei einem von euch:

Code: Alles auswählen

procedure HTMLStringToHtmlPanel(const HTMLString:String; var HTMLPanel:TIpHtmlPanel);
var
  html:TIpHtml;
  ms:TMemoryStream;
  StrList:TStringList;
begin
  StrList:=TStringList.Create;
  StrList.Text:=HTMLString;
 
  ms:=TMemoryStream.Create;
  StrList.SaveToStream(ms);
  ms.Position:=0; // Von entscheidender Bedeutung, sonst geht es nicht(Vielleicht ein BUG in der LCL bzw. von  TStream bzw. von TStringList.
 
  html:=TIpHtml.Create;
  html.LoadFromStream(ms);
  HTMLPanel.SetHtml(html);
  ms.Free; StrList.Free;
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  HTMLStringToHtmlPanel(SynMemo1.Lines.Text,IpHtmlPanel1);
end;
Zum Code: Du brauchst ein SynMemo und das HTML Panel(Vielleicht musst es nach Installieren).
Und ein BitBnt Button.
Im SynMemo1 Schreibst du z.b. folgenden Code:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>text-decoration</title>
<style type="text/css">
  .Test {color:red;}
</style>
</head><body>
 
<p>
Test <span id="test">test2</span>
</p>
 
</body>
</html>
nach meiner Auffassung müsste es so gehen. Nur bin ich mit ID und Class nicht so vertraut. Ich habe aber alles ausprobiert. In einem alten Projekt ging es auf eine Ähnliche Art und weiße. Jedoch verwende ich da keine SynEdit sondern direkt ein TStringList.
also häng ich da nicht als einziger... :S das ist schon mal gut zu wissen :mrgreen:
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

Ich suche noch nach den Grund. Es kann sein, dass ich das HTML Panel verändert hatte, damit es ging. Aber ich bin mir nicht mehr ganz sicher.
MFG
Michael Springwald

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: TIpHtmlPanel: String anzeigen

Beitrag von Maik81ftl »

pluto hat geschrieben:Ich suche noch nach den Grund. Es kann sein, dass ich das HTML Panel verändert hatte, damit es ging. Aber ich bin mir nicht mehr ganz sicher.
Die Überlegung ein TStringList zu verwenden kam mir auch schon, nur war ich mir net sicher, ob ich dies ohne große Probleme in einen ANSIString wandeln kann.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

Ich bin dem Problem auf der Spur. Denke ich. Es liegt an den Steuerzeichen. Schau dir mal die Methode "TCSSProps.ReadCommands" an.

edit01: Also, das HTML Panel lädt wohl mein CSS Bereich, wendet es aber nicht an. Selbst beim Zeichnen ist die Schrift Farbe nur clBlack und nicht clRed.
MFG
Michael Springwald

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: TIpHtmlPanel: String anzeigen

Beitrag von Maik81ftl »

pluto hat geschrieben:Ich bin dem Problem auf der Spur. Denke ich. Es liegt an den Steuerzeichen. Schau dir mal die Methode "TCSSProps.ReadCommands" an.

edit01: Also, das HTML Panel lädt wohl mein CSS Bereich, wendet es aber nicht an. Selbst beim Zeichnen ist die Schrift Farbe nur clBlack und nicht clRed.
wenn ich die nun mal richtig verstehe, muß ich die als Bsp:

Code: Alles auswählen

TStringList.add(text-align: left);
TStringList.add(background-color: rgb(255, 255, 255));
und

Code: Alles auswählen

TCSSProps.ReadCommands(TStringList);
wandelt dies denne um?! Mach versuchen.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

wandelt dies denne um?! Mach versuchen.
NEIN. Diese Methode wird Intern verwendet.

edit01: Habe möglicherweise den Grund gefunden. Ich muss aber noch ein paar Tests machen. es scheint ein Fehler im HTML Panel zu sein.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

Lösung:
Du musst das HTML Panel ändern. Du musst an zwei bestimmten stellen Trim einfügen:
TCSSProps.GetCommandArgs in der unit ipcss.inc
Überall wo in dieser Methode result.Add verwendet wird musst du Result.Add(Trim(Arg)); raus machen.
schon sollte es gehen.

unterstreichen geht aber noch nicht. Ich werde dazu noch ein paar Tests machen.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

Wenn du in die iphtml.pas nach der Zeile 9602 folgendes einfügst:

Code: Alles auswählen

if fsUnderline in Owner.Target.Font.Style then begin
            Owner.Target.MoveTo(p.x,R.Bottom);
            Owner.Target.LineTo(r.Right,R.Bottom);
          end;
wird auch das U Tag unterstützt. nach ersten Tests geht das ganz gut.

PS: Ich baue gerade das HTML Panel etwas aus. Ich kann jetzt auch im CSS Bereich Text Decoration anwenden. Die Änderungen sind aber etwas mehr.

edit01: Die zwei Dateien die hier vorher waren habe ich hier hinzugefügt: http://www.lazarusforum.de/viewtopic.php?f=29&t=5090" onclick="window.open(this.href);return false;
Zuletzt geändert von pluto am So 19. Jun 2011, 20:09, insgesamt 2-mal geändert.
MFG
Michael Springwald

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: TIpHtmlPanel: String anzeigen

Beitrag von Maik81ftl »

pluto hat geschrieben:Wenn du in die iphtml.pas nach der Zeile 9602 folgendes einfügst:

Code: Alles auswählen

if fsUnderline in Owner.Target.Font.Style then begin
            Owner.Target.MoveTo(p.x,R.Bottom);
            Owner.Target.LineTo(r.Right,R.Bottom);
          end;
wird auch das U Tag unterstützt. nach ersten Tests geht das ganz gut.

PS: Ich baue gerade das HTML Panel etwas aus. Ich kann jetzt auch im CSS Bereich Text Decoration anwenden. Die Änderungen sind aber etwas mehr.
d.H. die Function schaut umterm Strich so aus?!

Code: Alles auswählen

function TIpHtml.CheckKnownURL(URL: string): boolean;
var
  P : Integer;
begin
  if assigned(FOnURLCheck) then begin
    P := CharPos('#', URL);
    if P <> 0 then
      SetLength(URL, P - 1);
    {$IFDEF IP_LAZARUS}
    Result:=true;
    {$ENDIF}
    FOnURLCheck(Self, URL, Result);
  if fsUnderline in Owner.Target.Font.Style then begin
     Owner.Target.MoveTo(p.x,R.Bottom);
     Owner.Target.LineTo(r.Right,R.Bottom);
     end;
  end;
end;
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

Wie kommst auf auf "CheckKnownURL" ? bei mir ist das in der "RenderQueue" nach den ersten TextOut muss das hin.
Aber lass das mal, ich habe die Unit noch etwas erweitert. Ich lade sie nachher hoch und du brauchst sie nur zu ersetzten. OK?
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

Mist, habe die Dateien zum Falschen Beitrag hinzugefügt. Ich hoffe du findest den Beitrag, ein paar Beiträge unter diesem Hier.
MFG
Michael Springwald

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: TIpHtmlPanel: String anzeigen

Beitrag von Maik81ftl »

pluto hat geschrieben:Wie kommst auf auf "CheckKnownURL" ? bei mir ist das in der "RenderQueue" nach den ersten TextOut muss das hin.
das ist bei mir de Zeile 10170.
pluto hat geschrieben:Aber lass das mal, ich habe die Unit noch etwas erweitert. Ich lade sie nachher hoch und du brauchst sie nur zu ersetzten. OK?
Jopp. also die denne nur ersten und das Org. saven.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TIpHtmlPanel: String anzeigen

Beitrag von pluto »

das ist bei mir de Zeile 10170.
Diese Zeile habe ich auch gar nicht geschrieben. Schau noch mal genau an. Ich habe "9602".

Die zwei Dateien findest du weiter Unten, in einer meiner Beiträge.
MFG
Michael Springwald

Antworten