Страница 1 из 1

Vb6 to PB

СообщениеДобавлено: 03.02.2019 (Вс) 16:09
TrueTrue
ребят, изучая PB, портирую програмку с VB6 на PB, столкнулся с проблемой, что в PB отсутствуют Типы данных Object и Boolean,

А чем же мне теперь заменить их, ну Boolean, я то ещё заменю "Byte". А object, как обратиться изнутри функции к ListBox на форме?
Подскажите, а лучше кусочек кода с синтаксисом, пожалуйста.

Вобщем, как конвертировать такую строку?
Код: Выделить всё
Function ReadList (ByRef objList As Object)
...
End Function

Re: Vb6 to PB

СообщениеДобавлено: 03.02.2019 (Вс) 18:41
jangle
ListBox это контрол SDK/DDT? Если да, то обращаться можно по его хендлу.

Re: Vb6 to PB

СообщениеДобавлено: 03.02.2019 (Вс) 19:58
TrueTrue
jangle писал(а):ListBox это контрол SDK/DDT? Если да, то обращаться можно по его хендлу.

Можешь мне в коде написать, как это сделать? У него есть ID Name и ID Value. Но только ID Value похож на Хендл. Как мне это оформить в коде? Можешь пример написать?

Re: Vb6 to PB

СообщениеДобавлено: 03.02.2019 (Вс) 20:40
bon818
Пример с DDT

Код: Выделить всё

'----------------------------------------------------------------------------------------------------------------------
'   **LISTBOX Sample Code **
'----------------------------------------------------------------------------------------------------------------------
Function ListBox_Add(ByVal hDlg As Dword, ByVal lID As Long, ByVal lCount As Long) As Long
   Local i As Long

   For i = 1 To lCount
      ListBox Add hDlg, lID, Using$("Test Item #", i)
   Next i
   
End Function
'----------------------------------------------------------------------------------------------------------------------

'----------------------------------------------------------------------------------------------------------------------
'   ** LISTBOX Sample Code **
'----------------------------------------------------------------------------------------------------------------------
Function ReadList (ByVal hDlg As Dword, ByVal lID As Long)  As Long

   Local i, lCount As Long, txt as STRING

   LISTBOX GET COUNT hDlg, lID TO lCount

   For i = 1 To lCount
      LISTBOX GET TEXT hDlg, lID , i TO txt
      ? txt
   Next i

End Function
'----------------------------------------------------------------------------------------------------------------------



Re: Vb6 to PB

СообщениеДобавлено: 03.02.2019 (Вс) 22:25
ger_kar
TrueTrue писал(а):ребят, изучая PB, портирую програмку с VB6 на PB, столкнулся с проблемой, что в PB отсутствуют Типы данных Object и Boolean,
Тип данных Object по факту в PB присутствует, только называется по другому. Под типом Object в VB6 скрывается не что иное, как объект поддерживающий интерфейс IDispatch. В PB нужно использовать IDispatch.

Re: Vb6 to PB

СообщениеДобавлено: 04.02.2019 (Пн) 17:31
TrueTrue
jangle писал(а):ListBox это контрол SDK/DDT? Если да, то обращаться можно по его хендлу.

Код: Выделить всё
FUNCTION ShowfrmDataInspector(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG

#PBFORMS BEGIN DIALOG %frmDataInspector->->
    LOCAL hDlg  AS DWORD

    DIALOG NEW hParent, "Inspector", 269, 222, 385, 278, %WS_POPUP OR _
        %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR %WS_SYSMENU OR _
        %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
        %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT _
        OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg
    CONTROL ADD LABEL,    hDlg, %lblPath, "Path:", 5, 4, 20, 15
    CONTROL ADD TEXTBOX,  hDlg, %txtPath, "", 26, 2, 100, 13
    CONTROL ADD LABEL,    hDlg, %lblMask, "Mask:", 135, 4, 25, 10
    CONTROL ADD TEXTBOX,  hDlg, %txtPattern, "", 161, 2, 35, 13
    CONTROL ADD CHECKBOX, hDlg, %chkIncSubFolders, "SubFolders", 26, _
        16, 100, 10
    CONTROL ADD BUTTON,   hDlg, %cmdAudition, "Audit", 199, 2, 49, 13
    CONTROL ADD LISTBOX,  hDlg, %lstFiles, , 1, 27, 166, 246
#PBFORMS END DIALOG

    DIALOG SHOW MODAL hDlg, CALL ShowfrmDataInspectorProc TO lRslt

#PBFORMS BEGIN CLEANUP %frmDataInspector
#PBFORMS END CLEANUP

    FUNCTION = lRslt
END FUNCTION


Это какой метод? как мне определить?

Re: Vb6 to PB

СообщениеДобавлено: 04.02.2019 (Пн) 18:08
jangle
Ты создаешь контрол ListBox, задавая его ID - %lstFiles

Код: Выделить всё
CONTROL ADD LISTBOX,  hDlg, %lstFiles, , 1, 27, 166, 246


Зная хендл формы и ID контрола ты можешь получить хендл контрола, используя функцию CONTROL HANDLE

Код: Выделить всё
Dim hListBox as Long
CONTROL HANDLE hDlg, %lstFiles TO hListBox

Re: Vb6 to PB

СообщениеДобавлено: 06.02.2019 (Ср) 8:44
TrueTrue
jangle писал(а):Ты создаешь контрол ListBox, задавая его ID - %lstFiles

Код: Выделить всё
CONTROL ADD LISTBOX,  hDlg, %lstFiles, , 1, 27, 166, 246


Зная хендл формы и ID контрола ты можешь получить хендл контрола, используя функцию CONTROL HANDLE

Код: Выделить всё
Dim hListBox as Long
CONTROL HANDLE hDlg, %lstFiles TO hListBox

Спасибо. Немного не привычно, но я начинаю по чуть-чуть адаптироваться.

Спасибо всем за советы и помощь.