IpHtmlPanel

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: IpHtmlPanel

Beitrag von hbr »

theo hat geschrieben:
Na und? Das ist doch völlig wumpe, nur umständlicher.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
const Dta='<html>aha <i> aha </i> aga</html>';
var
  aMStream: TMemoryStream;
begin
  ..................
  aMStream.Position:=0;
  aFormat:=ClipBoard.FindFormatID('text/html');
  if ClipBoard.FindFormatID('text/html') = 0 then
    aFormat:=RegisterClipBoardFormat('text/html');
  ClipBoard.AddFormat(aFormat, aMStream);
  aMStream.Free;
end;  
Hallo,
es geht nicht mit viel html-Code!!!!
Die Ablage bleibt leer.
Versuch es mit einer gefüllten HTML-Seite.
Dann wirst Du sehen das es nicht funktioniert mit 'text/html'.
Und mit 'text/plain' geht es aber nur als Text (html-code).

Gruß
Zuletzt geändert von hbr am Mi 13. Aug 2014, 15:40, insgesamt 1-mal geändert.

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

Re: IpHtmlPanel

Beitrag von theo »

Michl hat geschrieben:Hatte eben noch eine Vermutung zuvor hineineditiert...
Warum sollte Libre Office das auf Win anders machen? Ist ja eh Java.

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

Re: IpHtmlPanel

Beitrag von theo »

hbr hat geschrieben:es geht nicht mit viel html-Code!!!!
Die Ablage bleibt leer.
Versuch es mit einer gefüllten HTML-Seite.
Dann häng mal deinen HTML Code als Text an, dann versuche ich's.
Vllt. liegt es auch nicht an der Menge sondern am HTML Code.

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

Re: IpHtmlPanel

Beitrag von Michl »

theo hat geschrieben:Warum sollte Libre Office das auf Win anders machen? Ist ja eh Java.
Dafür reicht mein Halbwissen leider nicht, warum man das so machen muss :wink:

Nochmal meine Vermutung: kopiere ich aus einem Browser einen selektierten Inhalt mit <Ctrl>+<C> und schaue mir diesen mit dem Button2Click (aus meinem Bsp.) an, so sind die Textpassagen einzeln als 'text/plain' gekennzeichnet. Schaue ich mir den Text aus dem Bsp., was Du bzw. ich gerade ausprobiert haben, dann ist dort nirgendwo ein 'text/plain' sichtbar. Ich vermute jetzt, dass alle Textprogramme, die ich auf meinem Rechner zur Verfügung habe (OpenOffice, Notepad, LazarusIDE etc.) nur nach 'text/plain' suchen und daher nichts zum Einfügen haben.

Code: Alles auswählen

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

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

Re: IpHtmlPanel

Beitrag von theo »

@Michl: Verstehe die Logik zwar nicht ganz, aber dann liefer das doch auch noch mit.

Code: Alles auswählen

 
procedure TForm1.Button1Click(Sender: TObject);
const Dta='<html>aha <i> aha </i> aga</html>';
var
  aMStream: TMemoryStream;
begin
  Clipboard.AsText:='aha aha aga'; <!----------------------------------
  aMStream:=TMemoryStream.Create;
  aMStream.Write(Dta,Length(Dta));
  aMStream.Position:=0;
  aFormat:=ClipBoard.FindFormatID('text/html');
  if ClipBoard.FindFormatID('text/html') = 0 then
    aFormat:=RegisterClipBoardFormat('text/html');
  ClipBoard.AddFormat(aFormat, aMStream);
  aMStream.Free;
end; 
Sieht dann so aus:
Dateianhänge
clipbrdlo.png

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

Re: IpHtmlPanel

Beitrag von Michl »

Ja das geht, der erste Teil wird eingefügt, der zweite nicht!

Liege ich mit meiner Vermutung also doch nicht so verkehrt :wink:

Code: Alles auswählen

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

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: IpHtmlPanel

Beitrag von hbr »

Hallo Theo,
versuch doch mal volgendes.

Nim Dir eine Html-Datei mit verschiedenen Standard html-befehlen.

Code: Alles auswählen

  aMStream := TMemoryStream.Create;
  aMStream.LoadFromFile('d:\testen.htm');
  aMStream.Position:=0;
  aFormat:=ClipBoard.FindFormatID('text/html');
  if ClipBoard.FindFormatID('text/html') = 0 then
    aFormat:=RegisterClipBoardFormat('text/html');
  ClipBoard.AddFormat(aFormat, aMStream);
  aMStream.Free;    
Dann wirst Du sehen, das die Zwischenablage leer bleibt.


Gruß

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

Re: IpHtmlPanel

Beitrag von theo »

Bei mir auf Linux geht's.
Da du mir keine Datei geschickt hast, habe ich diese genommen:
http://3dtalk.net/forum/readme.html

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: IpHtmlPanel

Beitrag von hbr »

Hallo,
theo hat geschrieben:Bei mir auf Linux geht's.
Da du mir keine Datei geschickt hast, habe ich diese genommen:
http://3dtalk.net/forum/readme.html
und der Text wird in die Textverarbeitung so eingesetzt wie er im HTML zu sehen ist ?

Was ist bei Dir anders als bei mir unter Win7 64bit lazarus v1.2.0 32bit???

Gruß

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

Re: IpHtmlPanel

Beitrag von theo »

hbr hat geschrieben: und der Text wird in die Textverarbeitung so eingesetzt wie er im HTML zu sehen ist ?
Ja, natürlich ohne das externe CSS, woher sollte das auch kommen via CB.
Dateianhänge
clipbrdlo.png

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: IpHtmlPanel

Beitrag von hbr »

Toll!
Das einzige was bei mir geht ist TMemoryStream Lesen und wieder schreiben, sind dann identisch (zur Kontrolle).

Es scheint ja bei anderen auch nicht zu funktionieren, woran könnte es denn legen?

Bei welche Version von Lazarus funktioniert es denn?

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

Re: IpHtmlPanel

Beitrag von theo »

hbr hat geschrieben: Es scheint ja bei anderen auch nicht zu funktionieren, woran könnte es denn legen?
Bei welche Version von Lazarus funktioniert es denn?
Tja, dann hat es doch was mit Windows zu tun. Ist vllt. irgendwo ein Char #0 vorne im Spiel?

Meiner Version ist Lazarus 1.3 r45860M FPC 2.7.1 x86_64-linux-gtk 2

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

Re: IpHtmlPanel

Beitrag von theo »

Naja, hab's mal auf Windows angeschaut. Googeln hilft auch hier.
Z.B. Dieser Code mit Laz geladen und aufs CB kopiert, kommt bei OpenOffice an:

Code: Alles auswählen

Version:0.9
StartHTML:00000173
EndHTML:00001157
StartFragment:00000207
EndFragment:00001121
SourceURL:http://msdn.microsoft.com/en-us/library/aa767917%28VS.85%29.aspx
<html><body>
<!--StartFragment--><div id="code-snippet-4" class="codeSnippetContainer" xmlns=""><div class="codeSnippetContainerCodeContainer"><div id="CodeSnippetContainerCode_68cc6856-c1d4-459b-90cb-28b371d4b7fe" class="codeSnippetContainerCode" dir="ltr">
            <div style="color:Black;"><pre>
 <BODY><TABLE BORDER><TR><TH 
 ROWSPAN=2>Head1</TH><TD>Item 1</TD> 
 <TD>Item 2</TD> <TD>Item 3</TD> 
 <TD>Item 4</TD></TR><TR><TD>Item 
 5</TD> <TD>Item 6</TD> <TD>Item 
 7</TD> <TD>Item 
 8</TD></TR><TR><TH>Head2</TH><TD>Item 
 9</TD> <TD>Item 10</TD> <TD>Item 
 11</TD> <TD>Item 
 12</TD></TR></TABLE></BODY>
</pre></div>
 
        </div>
    </div>
</div>
<p>This appears as test:</p><!--EndFragment-->
</body>
</html>
StartHTML, StartFragment etc. müssen nat. stimmen. Dafür sollte man eine Fkt. schreiben.

Ausserdem heisst das Format nicht text/html sondern

Code: Alles auswählen

 
  aFormat:=ClipBoard.FindFormatID('HTML Format');
  if ClipBoard.FindFormatID('HTML Format') = 0 then
    aFormat:=RegisterClipBoardFormat('HTML Format'); 
Windoof halt. :wink:

http://msdn.microsoft.com/en-us/library ... 85%29.aspx

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

Re: IpHtmlPanel

Beitrag von Michl »

theo hat geschrieben:Ausserdem heisst das Format nicht text/html sondern

Code: Alles auswählen

      aFormat:=ClipBoard.FindFormatID('HTML Format');
Das hatte ich auch erfolglos probiert. ...es lag also an dem nicht ordentlich definierten Header in dem Testbsp. Da lag ich wohl etwas daneben mit meiner Vermutung :oops:

Wieder was gelernt! Danke! :)

Code: Alles auswählen

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

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: IpHtmlPanel

Beitrag von hbr »

Hallo,
Das hatte ich auch erfolglos probiert. .....
Bei mir führt 'HTML Format' auch zu keinem Ergebnis.
Also ein Back bei Windows.

Nun gibt es wahrscheinlich z.Z. keine Möglichkeit der Darstellung für Windows.

Gruß

Antworten