# OLE-Objekt in einem RTF erstellen



## Squdus (23. Oktober 2007)

Tachchen

Ich habe folgendes Problem, wieder mal.
Ich soll meinem TVP (Textverarbeitungsprogramm) Smileys zur Verfügung stellen. Ich habe rechts vom RTF ne Picturebox gesetzt und dort die Smileys reingepackt. Wenn man nun einen Smiley anklickt wird er direkt in das RTF eingefügt.
Dies bewerkstellige ich über "OLEObjects.Add", soweit so gut. Das Problem dabei ist allerdings, das sich beim einfügen der Smileys ins RTF der "Microsoft Photo Editor" öffnet.

Nun die Frage, jemand ne Idee wie ich das unterbinden kann?


Zitat von Quellcode

Private Sub picSmiley_Click(Index As Integer)
Dim File As String

File = picSmiley(Index).Tag

rtfText.OLEObjects.Add , , SmPath & File


Zur Erläuterung des Codes.
Ich hab jedes Smiley in eine weitere Picturebox gepackt, welche einen Index haben. So brauch ich die Prozedur ja nur einmal zu schreiben.
"SmPath" ist der Zielpfad bis kurz vor dem Smiley, im Tag steht dann die Endung des Pfades. Also:
SmPath = C:\Dokumente und Einstellungen\adamsb\Desktop\VB6 Programme\Drow\Smileys\
und picSmiley(Index).Tag:
Grins.Gif oder Smile.gif etc. pp.
dies weise ich dann dem String "File" zu und verbinde ihn mit dem anderen String "SmPath".
Damit hätten wir schonmal den kompletten Zielpfad.
Dann pack ich den Smiley über "OLEObjects" des "RichtTextField" mit "Add" hinzu. Und genau dort öffnet sich dann der Photo Editor von Microsoft.


----------



## wincnc (23. Oktober 2007)

Hallo

Ich habe einen Artikel über das Einfügen von Objekten in der RichRextBox gefunden.

Einfügen von Bildern und Objekten in die RichTextBox

Smileys in der Richtextbox


----------



## Squdus (23. Oktober 2007)

Die beiden Artikel aus dem VB-Archiv kenne ich schon, genau wie den Vorschlag aus MSDN-Online.
Das Problem bei der Sache ist allerdings, das sie es über das Clipboard regeln wollen. Was bei mir zu einem genauso schwer lösbaren Problem führt wie die OLEObject.Add Methode.
Bei der Methode mit dem Clipboard wird der "MS Photo Editor" zwar nicht aufgerufen, allerdings ist nachdem einfügen eines Smileys die Zwischenablage leer. In den Beschreibungen lager ich die Inhalte des Clipboards zwar in nen String und einen Variant aus, nur wird man spätestens bei "Clipboard.SetData Buf" ein Problem haben. Da ich aus dem Variant Buf nur eine 0 zurückbekomme. Was daran liegt das ich nur bestimmte Datentypen wie RTF, Link, Bilder, Farbpaletten etc. reinpacken kann, aber eigentliche keine Dateien aus dem Explorer. In einem Szenario will das folgendes heißen:
Ich beginne einen Kopiervorgang. Rechtsklick auf eine Datei im Explorer und "Kopieren", öffne mein TVP und drücke dort auf einen Smiley, und will dann meine Datei welche in der Zwischenablage liegt wohin kopieren. ZONK!
Die Zwischenablage ist leer.
Aber auch nur weil ich den Variant Buf nicht mehr in die Zwischenablage zuweisen kann.


----------



## Oridon (16. Juli 2008)

Hi

ich hab das selbe Problem....nur füge ich keine Smiles ein sondern eine FehlerLogDatei (.txt) mithilfe von  OLEObjects.Add und direkt nach der ADD funktion wird die datei im Editor aufgerufen. Fals dir also irgendwer eine antwort auf dieses komische Ereigniss gegeben hat lass es mich bitte wissen =)

mfg 

Oridon

Ps.: ich hatte mir schon eine Lösungslogik ausgedacht wie man sowas unterbinden kann jedoch fehlen mir leider die benötigten VB kenntnisse noch dafür........man müsste eine Rotine schreiben die programmaufrufe ausserhalb von VB6 erkennt und abfängt solange es nicht gestattet ist...fals da jemand was zu einfällt (und wenn auch nur nen stichwort) bitte melden =)


----------



## Zvoni (16. Juli 2008)

Habt ihr mal an die DisplayType-Eigenschaft des OLEObjects gedacht?

Guggt ihr hier: http://www.vbarchiv.net/workshop/workshop_53.html


----------

