TIpHtmlPanel

Für Fragen von Einsteigern und Programmieranfängern...
hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TIpHtmlPanel

Beitrag von hbr »

Hallo
pluto hat geschrieben:Das HTML Panel unterstützt Tabellen. .........
Ja kann es, aber das Hintergrund wird von den Tabbelen verdeckt, dass ist auch kein Standard!
Leider nur Probleme!!!

Gruß
hbr

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: TIpHtmlPanel

Beitrag von Christian »

Was meinst du mit Hintergrund wird verdeckt ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TIpHtmlPanel

Beitrag von hbr »

Hallo,
Christian hat geschrieben:Was meinst du mit Hintergrund wird verdeckt ?
Der Hintergrund vom HtmlPanel. Wie ich beschrieben habe.
Normalerweise im HTML, wird der Hintergrund in den Body gesetzt.

Code: Alles auswählen

 
<body background="hintergrund.jpg">
 
  <table  background="hintergrund.jpg" width="500" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
    <td width="42"> </td>
    <td width="157"><img src="bild.jpg" width="80" height="60"></td>
    <td width="301"><h1>Beschreibung</h1></td>
  </tr>
</table>
bgcolor oder background="hintergrund.jpg" funktioniren aber in einer Tabelle nicht!
Die Tabelle hat ohne eine Angabe die Farbe Weiß! Im html-Standard ist die Tabelle aber normal transparent!!!

Also habe ich einen Weißen Kasten in der Darstellung, weil es mir nicht ohne Tabelle gelinkt ein Bild und einen Text(Überschrift)
nebeneinander Mittig, mit dem html-Panel darzustellen.

Mit hspace und vspace geht es, aber wenn man es drucken will, wird es linksbündig gedruckt.
Also bleibt nur die Tabelle übrig, aber die macht nur das, wie beschrieben.

gruß
Zuletzt geändert von Lori am Mo 25. Mär 2013, 18:01, insgesamt 1-mal geändert.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: TIpHtmlPanel

Beitrag von Christian »

Ach soo, und nen Patch willst du keinen machen ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TIpHtmlPanel

Beitrag von hbr »

Christian hat geschrieben:Ach soo, und nen Patch willst du keinen machen ?
Gibt es denn einen? Wenn ja wo?

Gruß

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

Beitrag von pluto »

Also, Standard ist Eigentlich nach meinem Wissen, dass Grafische Hintergründe per CSS gesetzt werden sollten. Das geht in diesen Fall natürlich im HTML Panel nicht.

Ich habe mir das Problem mit den Pfaden angeschaut:
Hast du dir das Beispiel Angesehen, was beim HTML Panel dabei ist?
Da ist ein Event, was sich um Grafiken jeder Art kümmert, ob Hintergrund Grafiken oder nicht.

Wenn ich es RICHTIG verstehe, wird in diesem Event geregelt woher die Grafik kommt(kann man vielleicht so ausdrücken).
D.H. hier müsstest du Sagen, dass die Grafiken eben Relativ zur HTML Datei und nicht Relativ zum Arbeitsverzeichnis sein soll. Schau dir mal das Beispiel an. Ich meine die Methode(oder Event):TIpHtmlPanelH.HTMLGetImageX

Was das neue Problem angeht, du müsstest wohl die Farben beim HTML Panel auf NONE Setzten oder eine Möglichkeit einbauen.

Das HTML Panel, weicht an einigen Stellen vom Standard ab. Z.B. werden Tabellen in HTML beim HTML Panel nicht als Block Elemente da gestellt, sondern als Inline Elemente. gelöst werden kann dies, durch ein <br> vor der Tabelle.

(Aus diesen Gründen, schreibe ich ja auch eine eigene Anzeige Komponente, die aber noch einige Zeit braucht, bis sie so weit ist, kann aber dafür mehr CSS(ca 50 bis 60 CSS Eigenschaften) und hält sich auch besser an HTML . Ich bin aber schon seit Jahren dabei ein Konzept zu suchen und habe jetzt glaube ich auch eins gefunden... aber die Entwicklung ist recht Schwirig, wegen CSS. Ohne CSS wäre es deutlich einfacher und natürlich ist es auch ein Problem, dass viele Browser eigenartiges Verhalten an den Tag legt, bei ein und der Selben HTML Datei.... )
MFG
Michael Springwald

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TIpHtmlPanel

Beitrag von hbr »

Hallo Pluto,
Danke für den Tipp 'TIpHtmlPanelH.HTMLGetImageX' das hat schon mal geklappt.
Pluto hat geschrieben: Das HTML Panel, weicht an einigen Stellen vom Standard ab. Z.B. werden Tabellen in HTML beim HTML Panel nicht als Block Elemente da gestellt, sondern als Inline Elemente. gelöst werden kann dies, durch ein <br> vor der Tabelle.
Habe ich Versucht! Leider ohne Erfolk

Code: Alles auswählen

 
<body background="[b]Hintergrundbild.jpg[/b]">
  [b] <br>[/b]
  <table width="500" align="center">
      <tr>
    <td width="42"> </td>
    <td width="157"><img src="bild.jpg" width="80" height="60"></td>
    <td width="301"><h1>Beschreibung</h1></td>
  </tr>
</table>
Die Tabbele bleibt nach wie vor Weiß auf dem Hintergrundbild!
Hast Du eventuell noch eine andere Idee hierzu?

Gruß

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

Beitrag von pluto »

Ich haben noch EINE Idee, ist ungetestet:
dazu musst du folgende Methode Ändern:
TIpHtmlNodeTABLE.Draw in der Unit ipHTML.pas
Wenn du dir die Methode Anschaust, findest du den Grund warum es weiß ist.

Code: Alles auswählen

 
  if (Props.BGColor <> -1) and PageRectToScreen(BorderRect, R) then begin
    aCanvas.Brush.Color := Props.BGColor;
    aCanvas.FillRect(R);
  end;
 
Das könntest du so ändern:

Code: Alles auswählen

 
  if (Props.BGColor <> -1) and PageRectToScreen(BorderRect, R) then begin
//    aCanvas.Brush.Color := Props.BGColor;
//    aCanvas.FillRect(R);
  end;
 
Jedoch könnte es Grafik Fehler geben, aber ich bin mir sicher, dass in der Haupt Zeichen Methode, der Komplette Canvas sowieso einmal neugezeichnet wird, daher könnte es klappen, jedoch hast du dann gar kein Hintergrund mehr. Genau das was du möchtest. Wenn das klappt, können wir noch eine bessere "Lösung" finden. Jedoch ist das eine Änderung, die nicht Offiziell ist.
(Ich habe mich einige Zeit mit dem HTML Panel befasst und sogar eine eigene Version davon raus gebracht, findest du hier im Forum, dürfte jedoch nicht dein Problem lösen, aber dort könnten wir es so ändern, dass es gelöst wird).
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: TIpHtmlPanel

Beitrag von Christian »

Gibt es denn einen? Wenn ja wo?
Meine Frage war warum du keinen machst.
Du hast den kompletten Source, und kannst problemlos herausfinden wo und warum der Hintergrund der Tabelle gezeichnet wird.
Einfach betreffende Stelle Ändern Patch einreichen und freun wenn er akzeptiert wird.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TIpHtmlPanel

Beitrag von hbr »

Hallo,
Nein leider nicht, dass einzige was Duchscheint sind die Zellen der Tabelle.

Siehe selbst.

Gruß
Dateianhänge
bild.jpg

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

Beitrag von pluto »

OK! Dann wird wohl für jede Zeile/Zelle ein FillRect gemacht. Ich werde mal danach suchen.
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

Beitrag von pluto »

Wie ich mir gedacht habe:
in der Methode "TIpHtmlNodeTableHeaderOrCell.Render" wird noch mal ein Fillrect gemacht:

Code: Alles auswählen

 
      Owner.Target.Brush.Color := Props.BGColor;
      Owner.Target.FillRect(R);
 
Aber nur, wenn auch eine Hintergrund Farbe gesetzt wurde. Wenn du die Farbe auf -1 setzt, müsste es mit etwas Glück gehen.
MFG
Michael Springwald

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TIpHtmlPanel

Beitrag von hbr »

Halo Pluto,
Vielen vielen Dank,
habe zusätzlich die Komplette "if (Props.BgColor <> -1)" Bedingung auskommentiert.

Und jetzt geht es!! :D

Gruß
hbr

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

Beitrag von pluto »

Prima. Die Frage ist, wie man das jetzt richtig einbauen könnte.

Eine Idee wäre: Wenn die Hintergrund Farbe auf clNone steht, dass dann auch kein Hintergrund gezeichnet wird.
So hast du nämlich die Wahl. Dann könnte man es sogar als "Bug" Fix einreichen.... wenn damit jemand Erfahrung hat.
MFG
Michael Springwald

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TIpHtmlPanel

Beitrag von hbr »

Hallo,
da müßte aber sowieso ein Bug drinne stecken!
pluto hat geschrieben:Prima. Die Frage ist, wie man das jetzt richtig einbauen könnte.

Eine Idee wäre: Wenn die Hintergrund Farbe auf clNone steht, dass dann auch kein Hintergrund gezeichnet wird.
So hast du nämlich die Wahl. Dann könnte man es sogar als "Bug" Fix einreichen.... wenn damit jemand Erfahrung hat.
den auf bgColer="red" oder "$00CFECFF" oder "#CC0000" reagiert die Tabelle nicht.

habe ich alles durch.

gruß

Antworten