RTF formatiert an Clipboard

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

RTF formatiert an Clipboard

Beitrag von Tom »

Jahu.

Ich suche mir schon den ganzen Tag lang den Wolf. Ich will einen kompletten formatierten RTF-Text an die Zwischenablage übergeben und in ein RTF-Control (TX Text Control) einfügen. Wenn ich das standardmäßig - oClipBoard:SetBuffer(cRtfText) - mache, landet natürlich der gesamte Text mit Formatierungsanweisungen dort. Also muss ich der Zwischenablage beim SetBuffer() über den zweiten Parameter sagen, dass es sich um RTF handelt. Mit RegisterFormat('RTF') oder 'Rich Text Format' und anschließender Nutzung der zurückerhaltenen ID landet doch nur 'plain text' in der Zwischenablage. Wenn ich in einer Schleife oClipBoard:GetFormatName() abrufe und anschließend einen Wert nutze, für den 'Rich Text Format' oder 'RTF' zurückgegeben wurde, bleibt es trotzdem bei reinem Text. In der XPB.CH ist keine Konstante hierfür definiert. Wenn ich aber z.B. aus WordPad einen Text in die Zwischenablage kopiere und dann in mein Control einfüge, landet er formatiert dort. WTF? Hat jemand eine Lösung?
Herzlich,
Tom
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: RTF formatiert an Clipboard

Beitrag von Herbert »

Tom,
indem du die Auslagerung nicht über das Clipboard machst, sondern via temp. Datei.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: RTF formatiert an Clipboard

Beitrag von Tom »

Hallo, Herbert.

Ich habe mehrere Sammlungen von (Standard-)Texten und Textbausteinen, die mit TX verwaltet werden. Diese Texte kann man in verschiedenen Verwaltungssystematiken abrufen. Dort besteht schon die Möglichkeit, sie - quasi als Vorlage - zu laden. Ich will aber a) die Möglichkeit bieten, in einen bestehenden Text oder an einen bestehenden Text heran zu kopieren, wofür sich das Clipboard anbietet. Gleichzeitig muss b) die Möglichkeit bestehen, diese Texte formatiert über die Zwischenablage auch in anderen Anwendungen (TV) zu nutzen. Der Umweg über eine gespeicherte Textdatei, die geladen wird, wird also erstens schon genutzt und ist zweitens in diesem Fall nicht sinnvoll. Und - es muss ja gehen. Wenn ich in WordPad einen RTF-Text öffne und (auch teilweise) kopiere, wandert er als "RTF" in die Zwischenablage und kann in meine Module - auch als neuer Teil - importiert werden. Ich weiß nur nicht, wie ich dem Clipboard sage, dass JETZT RTF kommt. Wenn ich mir in einem solchen Fall die Zwischenablage z.B. mit "ClipMagic" ansehe, kann ich dort den formatierten und den ursprünglichen Text (mit Formatierungsanweisungen) anschauen, und als Clip-Format wird "RTF" angezeigt.

Also - danke für Hinweise auf irgendwelche Workarounds, aber das kann ich leider nicht brauchen. :wink:
Herzlich,
Tom
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: RTF formatiert an Clipboard

Beitrag von Herbert »

Ja, deine Argumentation leuchtet ein.
Schade, genau du hast sonst die unglaublich einfachen Lösungs-Umwege, die hinhauen. do hoffte ich, zurückzugeben, was du so glatt mit links tust...

Also: Clipboard erkennt scheinbar die RTF. Also musst du dem Clipboard beibringen, dass...

schau mal hier: http://www.ml-consult.co.uk/foxst-35.htm
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: RTF formatiert an Clipboard

Beitrag von brandelh »

Hi,

Das Clipboard kennt auf jeden Fall das Format RTF, denn wenn ich im Büro in Lotus Notes
oder Framemaker nur den Text einfügen will zerschlägt mir meist RTF Text mein gewünschtes Ergebnis ;-)
Erst wenn ich Inhalte einfügen wähle oder über Notepad nochmal cut & paste mache erhalte ich "plain Text".
Bei den Inhalten wird RTF Format angezeigt.

Genauso wie in Windev ...

Code: Alles auswählen

if ClipboardFormat(cfRtf) THEN -> RTF-Format in Zwischenablage
if ClipboardFormat(cfText) THEN -> NUR TEXT-Format in Zwischenablage


Beim Auslesen nutzt WinDev eine andere Funktion:

Code: Alles auswählen

Clipboard()    -> Text ODER Bitmap
ClipboardRTF() -> RTF Text
daraus schließe ich, dass es normal ist, dass auch RTF als normaler Text gelesen wird und im Programm
dann daraus "etwas besonderes" wird - daher die andere Funktion.

So wie ich XbpRtf() verstehe, wird dieses doch mit plain Text im RTF Format gefüttert und es nutzt dieses oder ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: RTF formatiert an Clipboard

Beitrag von AUGE_OHR »

Tom hat geschrieben:Ich will einen kompletten formatierten RTF-Text an die Zwischenablage übergeben und in ein RTF-Control (TX Text Control) einfügen. Wenn ich das standardmäßig - oClipBoard:SetBuffer(cRtfText) - mache, landet natürlich der gesamte Text mit Formatierungsanweisungen dort. Also muss ich der Zwischenablage beim SetBuffer() über den zweiten Parameter sagen, dass es sich um RTF handelt.
frage "wie" hast du den RTF-Text "geladen", "markiert" und dann "kopiert" ?

wenn du als "wie" XbpRTF() verwendest solltest du mal die Property :SelRTF ausprobieren, der ganze RTF-Text wäre dann die Property :TextRTF

für das "kopieren" in das Clipboard hat RICHTX32.OCX selber nichts, aber man kann das verwenden

Code: Alles auswählen

METHOD MyRtf:Copy()
   SendMessageA( ::GetHWND(), WM_COPY, 0, 0 )
RETURN SELF
wenn gar nichts mehr hilft könnte man noch OLE DragDrop mit dem RICHTX32.OCX versuchen ...
gruss by OHR
Jimmy
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: RTF formatiert an Clipboard

Beitrag von Rolf Ramacher »

Hi tom,

wie wäre es, wenn du den RTF-Text in eine Datei speicherst und diese dann in einem MLE anzeigst.

du kannst dann so

Code: Alles auswählen

		oMle:format:=3
die Formatierung rausnehmen.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: RTF formatiert an Clipboard

Beitrag von Tom »

Hallo, Rolf.

Geiler Vorschlag. :lol: Aber unformatierten Text kann ich längst kopieren. Dafür brauche ich auch keinen Umweg über MLEs. :wink:

Hallo, Jimmy.

Das TX erlaubt mir den Zugriff auf den Rohtext (unformatierter Text) und den Text im vorliegenden Format (also hier RTF).

Aber Deine Frage hat mich prinzipiell in die richtige Richtung gelenkt. Da der Text im Moment des Kopierens zu sehen ist (es wird eine Tabelle mit den Textnamen und darunter der jeweilige Text angezeigt), kann ich ihn auch programmgesteuert im Control komplett markieren und die implizite Kopierfunktion des TX Controls benutzen. Und, siehe da: Es landet RTF im Clipboard. Und wieder im Zieltext! :)
Herzlich,
Tom
Antworten