La Web del Programador: Comunidad de Programadores
 
    Pregunta:  3693 - OBJETOS OLE EN RICHTEXTBOX
Autor:  Jorge Garay
Tengo un control Rich TextBox al cual le pego
imagenes bmp previamente almacenadas en el portapapeles. Estas aparecen luego en la coleccion OLEObjects del control.

El problema es al seleccionar una imagen en el control, cuando quiero saber a que objeto de la coleccion OLEObjects corresponde. No encuentro la forma!

Alguien tiene una solucion?

Muchas gracias.

  Respuesta:  José Ariel Limandri
hE aqui la solucion a tu problema:
' pone en un formulario un RichText y un command Button
'(Asegurate de instalar el service pack 4 de VStudio
'ya que el RichTXT tiene algunos problemitas
Option Explicit

Private Sub Command1_Click()
Dim ST As Long
Dim Pos As Long
Dim Pos2 As Long
Dim ObjName As String

With RichTextBox1
Pos = InStr(1, .SelRTF, "}\objw", vbTextCompare)
If Pos > 0 Then 'Objeto Seleccionado
Pos2 = InStr(Pos + 3, .SelRTF, "\", vbTextCompare)
ObjName = Mid(.SelRTF, Pos + 2, Pos2 - Pos - 2)

' tengo el nombre del objeto seleccionado.
' Primero busco la posicion absoluta de este y luego
'Busco cuantos Objetos hay antes del mismo

Pos = InStr(1, .TextRTF, ObjName, vbTextCompare)

MsgBox "Objeto Seleccionado: " & UBound(Split(Left(.TextRTF, Pos), "OBJDATA", , vbTextCompare))
End If
End With
End Sub

EXPLICACION LOGICA (POR SI NO TE FUNCIONA):
Lo que hace el codigo es buscar (en el texto seleccionado) el nombre del objeto (si es que hay uno)
Luego busca en todo el texto la posicion del objeto
Luego busca en Todo el texto(hasta la posicion del objeto seleccionado) cuantos otros objetos hay. y ete aqui que este nro es el nro correspondiente a oleobjects.

Suerte. y cualquier dudad mandame un mail (no te olvides de mandarme la pregunta porque muchas veces no me acuerdo los nombre de todas las personas a las que respondo).