IpHtml von v128 auf v144

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
hbr
Beiträge: 285
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)

IpHtml von v128 auf v144

Beitrag von hbr »

Hallo folgendes Problem.
In den vorherigen IpHtml Versionen konnte das Problem (keine Transparente Tabellen) durch den
Patches viewtopic.php?f=55&t=6768&start=15 von Pluto realisiert werden.

Nun hat sich das IpHtml geändert und die Tabellen sind wieder Weiß.

Ich habe schon an vielen Stellen probiert, jedoch ohne Ergebnis.
Wie ist denn die Transparente Farbe?
Wenn ich z.B. in Zeile 9930 TrBgColor := BgColor auf -1, oder 1 ändere wird die Farbe Weiß oder Schwarz auch dargestellt.
Welcher Parameter wäre dann für Transparenz?
Bitte um Hilfe.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtml von v128 auf v144

Beitrag von wp_xyz »

So wie ich den den verlinkten Thread verstehe, waren das Änderungen am lokalen Source-Code, die nicht in die offizielle Version eingepflegt wurden, weil niemand einen Patch für den Bugtracker eingereicht hat. Daher gehen deine Änderungen am Source-Code beim Installieren einer neuen Lazarus-Version verloren. --> Einfach in deiner aktuellen Version wiederholen.

Poste hier doch mal ein Beispiel-Projekt, in dem man das geschilderte Problem nachvollziehen kann. Bitte nur absolutes Minimalbeispiel, und keine exe, ppu etc, sondern nur pas, lfm, lpi und lpr-Dateien, zusammen in 1 zip gepackt. Bitte auch html-Datei beifügen, die im Browser korrekt angezeigt wird. Dann kann ich mir das mal ansehen, ich habe vor kurzem einige Änderungen am iPro vorgenommen und finde mich so halbwegs zurecht.

hbr
Beiträge: 285
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: IpHtml von v128 auf v144

Beitrag von hbr »

wp_xyz hat geschrieben:So wie ich den den verlinkten Thread verstehe, waren das Änderungen am lokalen Source-Code, die nicht in die offizielle Version eingepflegt wurden, weil niemand einen Patch für den Bugtracker eingereicht hat. Daher gehen deine Änderungen am Source-Code beim Installieren einer neuen Lazarus-Version verloren. --> Einfach in deiner aktuellen Version wiederholen.

Poste hier doch mal ein Beispiel-Projekt, in dem man das geschilderte Problem nachvollziehen kann. Bitte nur absolutes Minimalbeispiel, und keine exe, ppu etc, sondern nur pas, lfm, lpi und lpr-Dateien, zusammen in 1 zip gepackt. Bitte auch html-Datei beifügen, die im Browser korrekt angezeigt wird. Dann kann ich mir das mal ansehen, ich habe vor kurzem einige Änderungen am iPro vorgenommen und finde mich so halbwegs zurecht.


Hallo ,
es geht um die Transparents des Hintergrundes einer Tabelle in einem HTML-File.
Ein Patch würde mir auch genügen, ich bekomme es einfach nicht hin, da die neue IPHTML anders aufgebaut ist.
Die IPHTML- Datei von v128 funktioniert leider nicht in v144.
Habe viele versuche vorgenommen, bekomme es aber nicht hin.

Eventuell kennt sich ja jemand aus, der weis, wo genau man eine Änderung durchführen muß.

Hier ein Beispiel die das Verdeutlicht.
HTML-Test.zip
Muster
(181.23 KiB) 90-mal heruntergeladen


Gruß

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtml von v128 auf v144

Beitrag von wp_xyz »

Ich füge in der Anlage einen Patch bei, der dafür sorgt, dass ein Hintergrundbild nicht mehr von der Tabelle übermalt wird. Der Patch ist allerdings auf die aktuelle Version bezogen, so dass ich die wesentlichen Änderungen hier nochmals in Detail aufführe - ich hoffe, du kannst die Stellen in der von dir verwendeten Version finden:

Code: Alles auswählen

 
// Datei "IpHtml.pas":
procedure TIpHtmlNodeTABLE.Draw(Block: TIpHtmlNodeBlock);
var
  z, i, j : Integer;
  R : TRect;
  Al : TIpHtmlVAlign3;
  TRBgColor, TrTextColor: TColor;
  aCanvas : TCanvas;
begin
  aCanvas := Owner.Target;
  { Diesen Teil ...
  if (Props.BGColor <> -1) and PageRectToScreen(BorderRect, R) then begin
    aCanvas.Brush.Color := Props.BGColor;
    aCanvas.FillRect(R);
  end;
  }

  // ... ersetzen durch ...
  if (BGColor <> -1) and PageRectToScreen(BorderRect, R) then begin   
    aCanvas.Brush.Color := BgColor;
    aCanvas.FillRect(R);
  end else
  if (BGColor = -1) then
    aCanvas.Brush.Style := bsClear;
  { Ende der Ersetzung }
  aCanvas.Pen.Color := clBlack;
  ...
 
// Datei "IpHtmlBlockLayout.pas"
procedure TIpNodeTableElemLayouter.Render(RenderProps: TIpHtmlProps);
var
  R : TRect;
begin
  Props.Assign(RenderProps);
  Props.DelayCache:=True;
  {$IFDEF IP_LAZARUS}
  FOwner.LoadAndApplyCSSProps;
  {$ENDIF}
//  if FTableElemOwner.BgColor <> -1 then    // Diese Zeile entfernen!
    Props.BgColor := FTableElemOwner.BgColor;
....
  if FOwner.PageRectToScreen(FTableElemOwner.PadRect, R) then
  begin
    if (Props.BgColor <> -1) then
    begin
      FIpHtml.Target.Brush.Color := Props.BGColor;
      FIpHtml.Target.FillRect(R);
  { das "end;" ersetzen durch... }
    end else                                               // statt dem "end;"
      FIpHtml.Target.Brush.Style := bsClear;               // neu
  end;
 


Es wäre schön, wenn du den Patch testen könntest, nicht nur hinsichtlich der Transparenz, sondern auch allgemein bzl. der Hintergrundfarben. Nach meinen eigenen Tests sollte das "bgcolor"-Attribut im <table>, <th> und <td>-Tag funktionieren. Im <tr> geht's nicht, auch nicht als "background-color" im style. (--> da gibt's noch zu tun...)
Dateianhänge
turbopower_ipro.patch.zip
(769 Bytes) 81-mal heruntergeladen

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

Re: IpHtml von v128 auf v144

Beitrag von pluto »

Ja, wp_xyz hat leider recht, ich habe es nicht auf die Reihe bekommen, ein Patch einzureichen. Inzwischen müsste ich mich auch wieder erneut Einarbeiten.
Aber du müsstest wohl nur auf clNone stellen, die Hintergrundfarbe.

Wenn das nicht geht, müsste ich mir das noch mal anschauen.
MFG
Michael Springwald

hbr
Beiträge: 285
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: IpHtml von v128 auf v144

Beitrag von hbr »

wp_xyz hat geschrieben:
Es wäre schön, wenn du den Patch testen könntest, nicht nur hinsichtlich der Transparenz, sondern auch allgemein bzl. der Hintergrundfarben. Nach meinen eigenen Tests sollte das "bgcolor"-Attribut im <table>, <th> und <td>-Tag funktionieren. Im <tr> geht's nicht, auch nicht als "background-color" im style. (--> da gibt's noch zu tun...)


Vielen Dank!!!!!

Es funktioniert!
Ich setze mittels Tabbele ca. 10 Bilder zusammen wobei der Hintergrund jetzt wieder zu sehen ist.

DANKE

Gruß

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtml von v128 auf v144

Beitrag von wp_xyz »

pluto hat geschrieben:Aber du müsstest wohl nur auf clNone stellen, die Hintergrundfarbe.

Ich glaube nicht, dass es so geht. In der Komponente wird durchgehend der Wert "-1" als Leerfarbe, d.h. als transparent, behandelt. Das Problem ist, dass dieser Wert zunächst auch verwendet wird, aber während der Routinen bis zur Ausgabe mit clWhite überschrieben wird; gerade bei Tabellen, wo viele Einzelelemente zusammenspielen, ist das leider recht unübersichtlich.

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

Re: IpHtml von v128 auf v144

Beitrag von pluto »

Es wäre schön, wenn du den Patch testen könntest, nicht nur hinsichtlich der Transparenz, sondern auch allgemein bzl. der Hintergrundfarben. Nach meinen eigenen Tests sollte das "bgcolor"-Attribut im <table>, <th> und <td>-Tag funktionieren. Im <tr> geht's nicht, auch nicht als "background-color" im style. (--> da gibt's noch zu tun...)

Mich hat die Struktur Verrück gemacht, da es für jeden HTML Tag eine bzw. zwei Klassen gab/gibt.

Ich glaube nicht, dass es so geht. In der Komponente wird durchgehend der Wert "-1" als Leerfarbe, d.h. als transparent, behandelt. Das Problem ist, dass dieser Wert zunächst auch verwendet wird, aber während der Routinen bis zur Ausgabe mit clWhite überschrieben wird; gerade bei Tabellen, wo viele Einzelelemente zusammenspielen, ist das leider recht unübersichtlich.

Ich müsste jetzt nach schauen, du könntest auch den Brush.style auf bsClear stellen. Bin mir aber nicht sicher ob das läuft.

Edit1: Gerade gesehen, machst du sogar :oops:
MFG
Michael Springwald

hbr
Beiträge: 285
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: IpHtml von v128 auf v144

Beitrag von hbr »

pluto hat geschrieben:Ich müsste jetzt nach schauen, du könntest auch den Brush.style auf bsClear stellen. Bin mir aber nicht sicher ob das läuft.

Edit1: Gerade gesehen, machst du sogar :oops:


Hallo Pluto,
ich benutze bis auf die Tabellen ziemlich Primitive HTML-Files.
Sogar runde Ausgeschnittene Bilder im GIF - Format werden Transparent dargestellt wie es sein soll.
Gedruckt werden Sie auch ohne Hintergrund richtig.
Also für das wie ich sie Verwenden will klappt es erst mal mit dem Patch.
Ihr könnt ja das Problem wie auch immer für die Nächste Version vormeken.
Hauptsache es geht erst ein mal.

Danke.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtml von v128 auf v144

Beitrag von wp_xyz »

@hbr: Ich habe jetzt eine korrigierte Version von TurboPower iPro hochgeladen und für Version 1.6 angemeldet. In dieser Version werden die durch "bgcolor" gesetzten Hintergrundfarben von <table>, <tr>, <th> und <td> Elementen berücksichtigt. Entsprechend wird, wie von dir gewünscht, explizit kein Hintergrund gezeichnet, wenn "bgcolor" nicht verwendet wird, so dass der Hintergrund des HTML-Dokuments sichtbar bleibt. Das ganze ist etwas anders gelöst als weiter oben vorgeschlagen, und sollte nun aber auch für den Zeilenhintergrund funktionieren. Für Tests wäre ich aber dankbar. NB: Eine im Style definierte Hintergrundfarbe wird aber noch weiterhin ignoriert.

hbr
Beiträge: 285
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: IpHtml von v128 auf v144

Beitrag von hbr »

wp_xyz hat geschrieben:@hbr: Ich habe jetzt eine korrigierte Version von TurboPower iPro hochgeladen und für Version 1.6 angemeldet.

Hallo, wo hochgeladen?

Gruß

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtml von v128 auf v144

Beitrag von wp_xyz »

Aktualisiere deine Lazarus-Installation mit svn, falls du die Trunk-Version verwendest. Ansonsten kannst du die wenigen gegenüber deiner Version geänderten Dateien von http://svn.freepascal.org/cgi-bin/viewv ... ot=lazarus einzeln herunterladen und das Package neu kompilieren. Oder du wartest ein paar Tage auf auf den RC2 von Lazarus 1.6.

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: IpHtml von v128 auf v144

Beitrag von Christian »

@xp_xyz kümmerst du dich aktiv um Ipro ?
kann ich bei dir jetzt Patches einreichen ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: IpHtml von v128 auf v144

Beitrag von wp_xyz »

Ja, aber "aktiv" heißt, dass ich mich zu nichts verpflichtet fühle und jederzeit wieder damit aufhören kann, wenn mir die Sache über den Kopf wächst... Und reiche Patches nicht per PN an mich ein, sondern primär über den Bugtracker, es sei denn der englische Report fällt dir schwer, dann kannst du auch hier im Forum einen Beitrag starten. Hast du was auf Eis liegen?

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: IpHtml von v128 auf v144

Beitrag von Christian »

Schade ich dacht ich kann dir was per Mail schicken, der Bugtracker nervt einfach nur. Ich muss jedesmal meinen proxy umgehen da der Bugtarcker alles was kein Referer Feld mitschickt ablehnt. Vor 2 Jahren hat er mal meine Zugangsdaten vergessen u.s.w.

Ja ich hab noch irgendwo ein paar kleine Änderungen die Exceptions und Endlosschleifen verhindern liegen muss ich aber erstmal zusammensuchen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten