Как вызвать окно свойств ActiveX Control в run-time?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Как вызвать окно свойств ActiveX Control в run-time?

Сообщение jangle » 29.06.2006 (Чт) 13:22

Надо вызвать окошко свойств контрола в режиме run-time. Подскажите, как это сделать

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 29.06.2006 (Чт) 13:54

Код: Выделить всё
'
Private Type GUID
    Data1                   As Long
    Data2                   As Integer
    Data3                   As Integer
    Data4(7)                As Byte
End Type

Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpszProgID As Long, pCLSID As GUID) As Long
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Declare Function OleCreatePropertyFrame Lib "oleaut32.dll" (ByVal hWndOwner As Long, ByVal x As Long, ByVal y As Long, ByVal lpszCaption As Long, ByVal cObjects As Long, ByRef ppUnk As Long, ByVal cPages As Long, ByRef pPageClsID As GUID, ByVal lcid As Long, ByVal dwReserved As Long, ByVal pvReserved As Long) As Long
'

Public Sub ShowFontProperty(ByVal hwnd As Long, ByVal Caption As String, ByRef MyObject As Object)
Dim CLSID               As GUID

    CLSIDFromString StrPtr("{7EBDAAE0-8120-11CF-899F-00AA00688B10}"), CLSID
    OleCreatePropertyFrame hwnd, 0&, 0&, StrPtr(Caption), 1, ObjPtr(MyObject), 1, CLSID, GetSystemDefaultLCID, 0&, 0&

End Sub
'
Public Sub ShowPictureProperty(ByVal hwnd As Long, ByVal Caption As String, ByRef MyObject As Object)
Dim CLSID               As GUID

    CLSIDFromString StrPtr("{7EBDAAE2-8120-11CF-899F-00AA00688B10}"), CLSID
    OleCreatePropertyFrame hwnd, 0&, 0&, StrPtr(Caption), 1, ObjPtr(MyObject), 1, CLSID, GetSystemDefaultLCID, 0&, 0&

End Sub

Public Sub ShowColorProperty(ByVal hwnd As Long, ByVal Caption As String, ByRef MyObject As Object)
Dim CLSID               As GUID

    CLSIDFromString StrPtr("{7EBDAAE1-8120-11CF-899F-00AA00688B10}"), CLSID
    OleCreatePropertyFrame hwnd, 0&, 0&, StrPtr(Caption), 1, ObjPtr(MyObject), 1, CLSID, GetSystemDefaultLCID, 0&, 0&

End Sub

Public Sub ShowStandardProperty(ByVal hwnd As Long, ByVal Caption As String, ByRef MyObject As Object)
Dim CLSID               As GUID
   
    CLSIDFromString StrPtr("{13696E69-DD77-4151-A5E7-45DF368FCA91}"), CLSID
    OleCreatePropertyFrame hwnd, 0&, 0&, StrPtr(Caption), 1, ObjPtr(MyObject), 1, CLSID, GetSystemDefaultLCID, 0&, 0&

End Sub

Public Sub ShowFormatProperty(ByVal hwnd As Long, ByVal Caption As String, ByRef MyObject As Object)
Dim CLSID               As GUID
'MSStdFmt Format Property Page Object
    CLSIDFromString StrPtr("{699DDBCC-DC7E-11D0-BCF7-00C04FC2FB86}"), CLSID
    OleCreatePropertyFrame hwnd, 0&, 0&, StrPtr(Caption), 1, ObjPtr(MyObject), 1, CLSID, GetSystemDefaultLCID, 0&, 0&

End Sub

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 29.06.2006 (Чт) 14:07

Да нет, мне нужно окно свойств контрола. Control -> (Custom)

Посмотри скриншот такого окна
Вложения
1.gif
(10.78 Кб) Скачиваний: 56

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.06.2006 (Чт) 14:21

А Custom - это обычная форма. Если контрол твой, то вызываешь эту форму.
Lasciate ogni speranza, voi ch'entrate.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 29.06.2006 (Чт) 14:31

А Custom - это обычная форма. Если контрол твой, то вызываешь эту форму.


Нет это Microsoft Multimedia Control, у него есть свойство Custom, в браузере свойств. Жмешь на него, открывается окошко свойств контрола. Но это в design-time, а мне это же самое окно надо получить в run-time!

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 29.06.2006 (Чт) 14:37

Мне кажется, что никак... А ты видел где-нибудь, что бы это окно вызывалось во время работы программы? А вопрос, зачем оно тебе?
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 29.06.2006 (Чт) 14:43

Мне кажется, что никак


Можно, в VB IDE оно же вызывается, а это тоже обычная программа.

А вопрос, зачем оно тебе?


Дла задания свойств контрола в run-time, разве неясно?

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 29.06.2006 (Чт) 14:56

Радикальный метод - возьми, раскомпилируй VB IDE, и посмотри, как он это делает.

Но мое личное мнение, что ничего у тебя не получится. Представь себе, что каждый начнет тянуть во время работы программы это окошко, и представь себе, что после этого будет с программой? Кроме того, мне почему-то очень сильно кажется, что свойства из этого окошка пишутся в сам проект, и компиляются вместе с ним. Хотя я могу и ошибаться.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 29.06.2006 (Чт) 14:57

А какие свойства тебе надо задать в run-time?
Подпись проходит рефакторинг

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 29.06.2006 (Чт) 15:10

Радикальный метод - возьми, раскомпилируй VB IDE, и посмотри, как он это делает.


А может еще и виндовс раскомпилировать? :D

Но мое личное мнение, что ничего у тебя не получится. Представь себе, что каждый начнет тянуть во время работы программы это окошко, и представь себе, что после этого будет с программой?


No comments.............

А какие свойства тебе надо задать в run-time?


Видимость кнопок, путь к файлу, режимы воспроизведения видео и звука.

У меня есть пример от Edanmo вроде должен рабоать в связке с OLE_LIB.TLB но к сожалению у меня он не работает


Код: Выделить всё
Sub ShowProperties( _
   ByVal Ctrl As Object, _
   Optional ByVal CtrlName As String, _
   Optional ByVal hWndParent As Long)
Dim oSPP As ISpecifyPropertyPages
Dim tPages As CAUUID

   On Error Resume Next
   
   ' Get ISpecifyPropertyPages interface
   ' of the control
   Set oSPP = Ctrl
   
   If oSPP Is Nothing Then
   
      ' If the QI fails try using the
      ' Object property of the control
      Set oSPP = Ctrl.Object
     
      If oSPP Is Nothing Then
         
         ' Reset the error handler
         On Error GoTo 0
         
         ' Raise an error
         Err.Raise 13
         
      End If
     
   End If
   
   ' Get the CLSIDs of the pages
   oSPP.GetPages tPages
   
   ' Show the pages
   OleCreatePropertyFrame hWndParent, 0, 0, _
      CtrlName, 1, Ctrl, tPages.cElems, _
      ByVal tPages.pElems, 0, 0, 0

   ' Release the pages array
   CoTaskMemFree tPages.pElems
   
End 

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.06.2006 (Чт) 21:28

jangle, только что проверил этот код с MMControl -- работает.
Edanmo дурного не подскажет ;-)
Изображение

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 29.06.2006 (Чт) 22:22

Всё, что ты перечислил, можно задать программно. Например видимость кнопок можно задать так:
Код: Выделить всё
MMControl1.PlayVisible = False

Невидимой будет кнопка Play

А путь к файлу так:
Код: Выделить всё
MMControl1.FileName = "Путь к файлу"


Какие ты имел в виду режимы воспроизведения звука и видео. Распиши поподробнее, я что-то не очень понял.
Подпись проходит рефакторинг

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 30.06.2006 (Пт) 10:26

jangle, только что проверил этот код с MMControl -- работает.


Можешь показать код который работает?

Всё, что ты перечислил, можно задать программно


Мне не нужно задавать их программно. Свойства должны задаваться через окно свойств компонента

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 30.06.2006 (Пт) 10:49

Создать свою форму похожую форму, в которой и задавать нужные свойства и не париться.
подписи нет и не будет

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.06.2006 (Пт) 10:51

jangle писал(а):Можешь показать код который работает?

Возможно, твой компонент требует более полной реализации хоста, чем MMControl.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.06.2006 (Пт) 11:10

jangle писал(а):
jangle, только что проверил этот код с MMControl -- работает.


Можешь показать код который работает?


Код: Выделить всё
Private Sub Form_DblClick()
    ShowProperties MMControl1, "MMControl1", hWnd
End Sub
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.06.2006 (Пт) 14:21

jangle

:D
так я же это уже все написал сразу, че совсем туго чуток подправить :shock:


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

    TopList