Как вынуть картинку из RichTextBox и вставить в Image

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Как вынуть картинку из RichTextBox и вставить в Image

Сообщение $Yastrebov$ » 15.10.2007 (Пн) 1:02

В RichTextBox будет находится только один OLE-объект - картинка и больше ничего.

В коллекции Ole-объектов соответственно будет находится тут:
RTB1.OLEObjects(0)

Хотелось бы вставить картинку в Image:
Image1.Picture = ... или Image1.Picture = LoadPicture(...)

Как это правильно реализовать без "Type Mismatch"?
Спасибо!
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 15.10.2007 (Пн) 20:16

:( Шаманы и повелители VB выручайте))))
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

RUSYA
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 22.07.2005 (Пт) 20:17
Откуда: Харьков

Сообщение RUSYA » 17.10.2007 (Ср) 0:42

Код: Выделить всё
Private Sub Command1_Click()
'First, just add plain text:
rchText1.SelText = rchText1.SelText & "Guest: " & Text1 & vbCrLf

'Then change what needs to be changed to pictures:
RefreshPics
DoEvents
rchText1.SelStart = Len(rchText1.Text) 'Put the start at the end, thats where you want to add the next line
Text1 = ""
Call Text1.SetFocus
End Sub

Private Sub Form_Load()
rchText1.OLEObjects.Clear 'Clear the ole objects to prevent errors
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
DoEvents
rchText1.OLEObjects.Clear 'You must add this or the
                            'program will crash. This doesnt
                            'happen in Windows 2k
DoEvents
End Sub

Sub RefreshPics() 'This scans the text for :) and (l)'s to change
Dim lFoundPos As Long           'Position of first character
                                        'of match
Dim lFindLength As Long         'Length of string to find

Dim MakeSure As Boolean 'I have this to do the procedure twice, just to "make sure"


GoTo Skip:
Start:
MakeSure = True
Skip:

lFoundPos = rchText1.Find(":)", 0, , rtfNoHighlight)
        While lFoundPos > 0
          rchText1.SelStart = lFoundPos
          'The SelLength property is set to 0 as
          'soon as you change SelStart
          rchText1.SelLength = 2
          rchText1.SelText = ""
          rchText1.OLEObjects.Add , , App.Path & "\smile.bmp" 'Add the picture after it has deleted the string
          DoEvents
          'Attempt to find the next match
          lFoundPos = rchText1.Find(sFindString, lFoundPos + 2, , rtfNoHighlight)
Wend
If MakeSure = False Then GoTo Start

' I guess by changing or adding a few lines, you
'   can make it add more pictures with different strings.

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Command1_Click
End Sub
А как оно на самом деле - Х.З. !

RUSYA
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 22.07.2005 (Пт) 20:17
Откуда: Харьков

Сообщение RUSYA » 17.10.2007 (Ср) 1:22

а тьфу сорр, вынуть оказывается..

ну как-то так http://support.microsoft.com/default.as ... -us;119395

Завтра ещё мож подробнее поковыряю, а то спать охото :)
А как оно на самом деле - Х.З. !

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 17.10.2007 (Ср) 23:56


Спасибо за пример, похоже на правду...

Вот только проблема в строке:
GetMetaFile MFPict, ole1 - тут ошибка

В качестве ole1, я так понимаю, нужно передавать мой RTB1 или RTB1.OLEObjects(0) Но увы, ни то, ни другое не работает!
Помогите разобраться в страшном коде от Майкрософт :!:
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 98

    TopList