Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: TextBox с картинками ??? Добавлено: 25.12.08 15:36  

Автор вопроса:  Alex
Скажите а есть ли в природе TextBox в который можно добавлять анимированную gif картинку, или как добавить в TextBox картину?

Очень долго искал в интернете но ничего не нашёл :(( может у кого что есть?

PS. Максимум что я нашёл это как добавить картинку в RichTextBox но это не то... надо добиться того чтобы выглядело как в ICQ (смайлики)

Ответить

  Ответы Всего ответов: 23  

Номер ответа: 1
Автор ответа:
 Alex



Вопросов: 10
Ответов: 131
 Профиль | | #1 Добавлено: 25.12.08 15:37
Вот что я нашёл.

Данный пример покажет, как можно программно вставить графический файл в элемент RichTextBox.
Наличие событий Form_Load и Form_QueryUnload обязательно, иначе ваш VB-проект просто-напросто "рухнет".

  1. Private Sub Command1_Click()
  2. a = RichTextBox1.SelStart
  3. RichTextBox1.OLEObjects.Add , , "D:\4\add_pictures_to_richtextbox\smile.bmp"
  4. RichTextBox1.SelStart = a + 1
  5. RichTextBox1.SetFocus
  6. End Sub
  7. Private Sub Form_Load()
  8. RichTextBox1.OLEObjects.Clear
  9. End Sub
  10. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  11. RichTextBox1.OLEObjects.Clear
  12. End Sub

Ответить

Номер ответа: 2
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #2 Добавлено: 25.12.08 16:22
Webbrowser или чтото созвучное.

Ответить

Номер ответа: 3
Автор ответа:
 Alex



Вопросов: 10
Ответов: 131
 Профиль | | #3 Добавлено: 25.12.08 17:32
В смысле, использовать Webbrowser?
Что-то я не пойму (или незнаю) как его можно связать с текстом... (с отображением может и понятно но с набором...) ?
А есть где пример :-[ ???

Ответить

Номер ответа: 4
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 25.12.08 18:49
Прости, чел, но тут тока отображать =) Хотя, если попарица, то можно и ввод сделать.

Ответить

Номер ответа: 5
Автор ответа:
 Alex



Вопросов: 10
Ответов: 131
 Профиль | | #5 Добавлено: 25.12.08 22:09
придётся возится

Ответить

Номер ответа: 6
Автор ответа:
 Alex



Вопросов: 10
Ответов: 131
 Профиль | | #6 Добавлено: 25.12.08 22:14
Скажите а можно собрать ActiveX для VB6 на С++ (VST-2005)??

Ответить

Номер ответа: 7
Автор ответа:
 



Вопросов: 5
Ответов: 79
 Профиль | | #7 Добавлено: 26.12.08 00:38
ВОТ!!!
Детище моих мучений. Alex, и все остальные - зацените фичу! (пардон за глючность и попадающиеся куски ненужного кода - я действительно помучился над этой ерундой)
  1. 'Надо: Picture1(0) (PictureBox) и Text1 (TextBox)
  2.  
  3. Private Declare Function GetTextExtentPoint Lib "gdi32" Alias "GetTextExtentPointA" ( _
  4.     ByVal hdc As Long, _
  5.     ByVal lpszString As String, _
  6.     ByVal cbString As Long, _
  7.     lpSize As Size _
  8. ) As Long
  9.  
  10. Private Type Size
  11. cx As Long
  12. cy As Long
  13. End Type
  14.  
  15. Private Type TypePiece
  16. STR As String
  17. x As Integer
  18. y As Long
  19. End Type
  20.  
  21. Const STR = "Порнография :) - :) по :) греч. :) описание :) проституции. :) Сообразно :) с :) этим :)  :) первые :) литературные :) произведения, :)  :) восстававшие :)  :) против :)  :) развития :)  :) проституции, :) назывались :) П. :) Такова, :) напр., :) книга :) Ретиф :) де :) ла :) Бретонна, :)  :) озаглавленная: :) ""Le :) Pornographe :) ou :) Idees :) d'un :) honnete :) homme :) sur :) un :) projet :)  :) de :)  :) reglement :) pour :)  :) les :)  :)  :) prostituees"" :)  :)  :) etc. :)  :)  :) Л., :)  :)  :) 1769). :)  :)  :) Когда(1836) :)  :)  :) появилось :) обстоятельное :) исследование :) знаменитого :) врача :) Паран :) Дюшателе :) по :)  :) тому :)  :) же :) предмету, :) то :) оно :) уже :) никем :) не :) рассматривалось :) как :) П., :) а :) было :) признано :)  :) в :) высокой :)  :) степени :)  :) поучительным :)  :)  :) и :)  :)  :) полезным."
  22. Const SMILE = ":)"
  23. Dim isInFormLoad As Boolean
  24.  
  25. Private Function getTextSize(ByRef s As String) As Size
  26. Dim sz As Size
  27. a = GetTextExtentPoint(Form1.hdc, s, Len(s), getTextSize)
  28. End Function
  29.  
  30. Private Sub Form_Activate()
  31. Dim step As Long, cx As Long, cy As Long, t As String, tt As String
  32. isInFormLoad = True
  33. Form1.ScaleMode = 3
  34. 'Тебе осталось сделать совсем немного - твоя задача это сделать так, чтобы ты снял апостроф перед Text1.MultiLine = True и после этого всё корректно отображалось! Делов-то, Господи! ;)
  35. 'Text1.MultiLine = True
  36. smilewidth = getTextSize(SMILE).cx
  37. Picture1(0).Width = smilewidth
  38. Picture1(0).BorderStyle = 0
  39. step = 1
  40. cx = Text1.Left
  41. k = 0
  42. t = Text1
  43. Text1 = ""
  44.  
  45. For j = 1 To Len(t)
  46. b = Mid(t, j, 1)
  47. Text1 = Text1 + b
  48. tt = tt + b
  49. If step = Len(SMILE) Then
  50.  
  51. cx = cx + getTextSize(tt).cx
  52. k = k + 1
  53. If k >= Picture1.Count Then Load Picture1(k)
  54. Picture1(k).Visible = True
  55. Picture1(k).Left = cx - smilewidth
  56. Picture1(k).Top = cy + Text1.Top
  57. tt = ""
  58. step = 1
  59.  
  60. Else
  61. If b = Mid(SMILE, step, 1) Then
  62. step = step + 1
  63. Else
  64. step = 1
  65. End If
  66. End If
  67. Next j
  68.  
  69. Text1.ZOrder 1
  70. isInFormLoad = False
  71. End Sub
  72.  
  73. Private Sub Form_Load()
  74. Text1 = STR
  75. End Sub
  76.  
  77. Private Sub Text1_Change()
  78. If Not isInFormLoad Then Form_Activate
  79. End Sub

Ответить

Номер ответа: 8
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #8
Добавлено: 26.12.08 00:50
Да, надо бы еще высоту текста найти и в зависимости от номера строки менять позицию по Y.

Ответить

Номер ответа: 9
Автор ответа:
 Alex



Вопросов: 10
Ответов: 131
 Профиль | | #9 Добавлено: 26.12.08 02:38
Интересное решение :)
Спасибо, будем развивать :)

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 26.12.08 11:21
Уже как минимум двое предложили единственное рациональное решение - Webbrowser.
Похоже впустую...

Ответить

Номер ответа: 11
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #11 Добавлено: 26.12.08 11:46
А мы не ищем легких путей.
Для изврата, можно еще предложить сабклассинг.
Отлавливать WM_CTLCOLOREDIT , WM_ERASEBKGND и нем блиттинг смайлика.

Ответить

Номер ответа: 12
Автор ответа:
 Alex



Вопросов: 10
Ответов: 131
 Профиль | | #12 Добавлено: 26.12.08 12:41
надо будет наверное свой контрол писать, и только тогда будет выглядить нормально :)

Ответить

Номер ответа: 13
Автор ответа:
 



Вопросов: 5
Ответов: 79
 Профиль | | #13 Добавлено: 26.12.08 17:22
2 Father: ну а что же ты сидишь? напиши нам всем СУПЕР чтобы мы все сказали примерно: 'да, я лох а вот Father умеет своим компом рулить' запусти мой код если начать с начала (именно сначала, ибо глючит) удалять буковки то смайлы удаляются как и остальные символы а вот тебе в твоем webBROWSER ещё предстоит попотеть чтоб достичь такого эффекта (у тебя вообще сначала ничего редактироваться не будет) к тому же, перспектива таскать везде за собой ocx браузера не радует, ваще не радует...

Ответить

Номер ответа: 14
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #14 Добавлено: 26.12.08 20:56
Я не наезжал на тебя, как ты наверное подумал.
А написать правильно действительно не проблема, но я не люблю таких подначек.
Насчет сабклассинга, я и имел ввиду textbox, а не webbrowser.
Кстати, подумай, что ты будешь делать при скролинге с твоим вариантом.
А там где ты будешь обрабатывать WM_VSCROLL, может созреть решение не пикчебоксы плодить по-верху, а BitBlt по контексту.
Или ты не понимаешь, о чем я?

Ответить

Номер ответа: 15
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #15
Добавлено: 26.12.08 23:08
Alex, свой контрол = написать с нуля ричтекстбокс? довай)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам