Dobrej pokec   Lišanská šlapka   MSDN   VB na Microsoft.cz   NCHAT Nový design
   Portál  O firmě  Profil  Reference  Produkty  Odkazy  Diskuse  Tisková verze 



  Novinky e-mailem
Pokud chcete být informováni o změnách ,přihlašte se k odběru novinek!
  
  
  Nejčtenější články
 Seznam všech českých hubů abecedně. (32252)
 Seznam hubů nad 100 uživatelů (20977)
 Konfigurovatelné rozbalovací menu (17596)
 Jak na makra (14425)
 Rozbalovací menu v JavaScriptu (2.) (12799)
  Nejstahovanější soubory
 Action Meter (1846)
 Slovní Fotbal (777)
 IE Boss Guard (484)
 zdroják slovní fotbal (383)
 Folder Watcher (370)
  Anketa

  Nabídka portálu

 Adobe Premiere
    Jak se dá udělat
 Alternativní prohlížeče
    FireFox
 ASP
    Tipy a triky
 Direct Connect
    Huby
    Scripty pro HUB
    Tipy a triky CZDC++
 Game Maker
    Tipy a triky
 Hry
    Akční
    Logické
 HTML
    Scripting (VBS,JS)
    Tipy a triky
 Internet
    Užitečné triky
 Microsoft Office
    Tipy, triky, návody
    Užitečná makra
    VBA Tipy a triky
 MS SQL Server
    Nastavení
    Seriály
    Tipy a triky
 Multimedia
    Návody
 Oracle
    PL/SQL
 PHP
    Jak na to
    Tipy a triky
 Užitečné odkazy
    Grafické programy
    Programátorské
 Visual Basic
    DirectX
    Formuláře
    Jak se dá udělat ...
    Užitečné funkce
    Win32Api
    Zdroje
 Visual Basic .NET
    Užitečné funkce
 Vtípky
    Vtipy a anekdnoty
 Vypalování
    DVD Shrink
    Tipy a triky
 Windows
    Jak se dá ...
    Tipy a triky pro XP
    Triky pro IE


Nabídka portálu se při zobrazení článku přesouvá na konec pravého sloupce nabídek.

 Vložení OLE objektu do RichTextBoxu

Autor: Kočí Marek
Zdroj: 
Vytvořeno: 10.1.2003
Publikováno: 10.1.2003
Čtenářů: 2206
Unikátních: 2172


Jak vložit např. obrázek to RichTechBoxu? Jistě znáte dialog Vložit ze souboru, obrázek .…

Potřebujete, aby si uživatel vkládal do RTFBoxu obrázek nebo nějaký soubor? Lze využít služeb Win32API. Já vám zde poradím krok za krokem jak na to.

Postup

Vytvořte Standard EXE projekt ve VB. Do seznamu komponent vložte Microsoft Rich Text Control (pravým tlačítkem na ControlBoxu a volba Components). Přidejte RichTextBox a jedno tlačítko Command1 na formulář. Vložte do kódu formuláře následující kód.

Option Explicit
   'Deklarace API funkci a procedur
   Private Declare Function OleUIInsertObject _
                   Lib "oledlg.dll" _
                   Alias "OleUIInsertObjectA" _
                   (inParam As Any) As Long
   Private Declare Function ProgIDFromCLSID _
                   Lib "ole32.dll" _
                   (clsid As Any, _
                   strAddess As Long) As Long
   Private Declare Sub CoTaskMemFree _
                   Lib "ole32.dll" _
                   (ByVal pvoid As Long)
   Private Declare Sub CopyMemory _
                   Lib "kernel32" _
                   Alias "RtlMoveMemory" _
                   (Destination As Any, _
                   Source As Any, _
                   ByVal Length As Long)
   Private Declare Function lstrlenW _
                   Lib "kernel32" _
                   (ByVal lpString As Long _
                   ) As Long
   'Konstannty
   Const IOF_SHOWHELP = &H1
   Const IOF_SELECTCREATENEW = &H2
   Const IOF_SELECTCREATEFROMFILE = &H4
   Const IOF_CHECKLINK = &H8
   Const IOF_CHECKDISPLAYASICON = &H10
   Const IOF_CREATENEWOBJECT = &H20
   Const IOF_CREATEFILEOBJECT = &H40
   Const IOF_CREATELINKOBJECT = &H80
   Const IOF_DISABLELINK = &H100
   Const IOF_VERIFYSERVERSEXIST = &H200
   Const IOF_DISABLEDISPLAYASICON = &H400
   Const IOF_HIDECHANGEICON = &H800
   Const IOF_SHOWINSERTCONTROL = &H1000
   Const IOF_SELECTCREATECONTROL = &H2000

   'Konstanty navratovych kodu
   Const OLEUI_FALSE = 0
   Const OLEUI_SUCCESS = 1
   Const OLEUI_OK = 1
   Const OLEUI_CANCEL = 2

   ' GUID, IID, CLSID, atd
   Private Type GUID
       Data1 As Long
       Data2 As Integer
       Data3 As Integer
       Data4(0 To 7) As Byte
   End Type

   'UDT pouzite v OleUIInsertObject.
   Private Type OleUIInsertObjectType
       cbStruct As Long
       dwFlags As Long
       hWndOwner As Long
       lpszCaption  As String
       lpfnHook As Long
       lCustData As Long
       hInstance  As Long
       lpszTemplate As String
       hResource As Long
       clsid As GUID
       lpszFile As String
       cchFile As Long
       cClsidExclude As Long
       lpClsidExclude As Long
       IID As GUID
       oleRender As Long
       lpFormatEtc As Long
       lpIOleClientSite As Long
       lpIStorage As Long
       ppvObj As Long
       sc As Long
       hMetaPict As Long
   End Type

   Private Sub Command1_Click()
     Dim UIInsertObj As OleUIInsertObjectType
     Dim retValue As Long
     Dim lpolestr As Long
     Dim strsize As Long
     Dim ProgId As String

     On Error GoTo err 'Pri chybe skoc na err

     'Priprav strukturu
     With UIInsertObj
       .cbStruct = LenB(UIInsertObj)
       .dwFlags = IOF_SELECTCREATENEW
       .hWndOwner = Me.hWnd
       .lpszFile = String(256, " ")
       .cchFile = Len(.lpszFile)
     End With

     'Zobraz dialog box
     retValue = OleUIInsertObject(UIInsertObj)

     If (retValue = OLEUI_OK) Then
       If ((UIInsertObj.dwFlags And _
            IOF_SELECTCREATENEW) = _
            IOF_SELECTCREATENEW) Then
          retValue = ProgIDFromCLSID(UIInsertObj.clsid, _
                                     lpolestr)
          strsize = lstrlenW(lpolestr) + 1
          ProgId = String(strsize, 0)
          CopyMemory ByVal StrPtr(ProgId), _
                     ByVal lpolestr, strsize * 2
          CoTaskMemFree lpolestr
          RichTextBox1.OLEObjects.Add , , "", ProgId
       Else
          RichTextBox1.OLEObjects.Add , _
          , UIInsertObj.lpszFile
       End If
      End If
   Exit Sub

err:
       MsgBox "Doslo k chybe cislo: " & _
              err.Number & _
              "Popis chyby:" & _
              vbNewLine & err.Description
   End Sub

Tak a to je vše, nyní můžete vyzkoušet všechny možnosti systémového dialogu pro vkládání OLE objektu. Na závěr malé upozornění, Dialogové okno je vždy ve stejném jazyce jako Systém WINDOWS.




Příspěvky ke článku:



© Swit.cz, Marek Kočí 2003