Vb6 to PB

Раздел посвящен программированию с использованием Power Basic.
TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Vb6 to PB

Сообщение TrueTrue » 03.02.2019 (Вс) 16:09

ребят, изучая PB, портирую програмку с VB6 на PB, столкнулся с проблемой, что в PB отсутствуют Типы данных Object и Boolean,

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

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

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

Re: Vb6 to PB

Сообщение jangle » 03.02.2019 (Вс) 18:41

ListBox это контрол SDK/DDT? Если да, то обращаться можно по его хендлу.

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Vb6 to PB

Сообщение TrueTrue » 03.02.2019 (Вс) 19:58

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

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

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Vb6 to PB

Сообщение bon818 » 03.02.2019 (Вс) 20:40

Пример с 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
'----------------------------------------------------------------------------------------------------------------------


Вложения
Sample LB.zip
Пример с DDT
(37.55 Кб) Скачиваний: 186

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Vb6 to PB

Сообщение ger_kar » 03.02.2019 (Вс) 22:25

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

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Vb6 to PB

Сообщение TrueTrue » 04.02.2019 (Пн) 17:31

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


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

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

Re: Vb6 to PB

Сообщение jangle » 04.02.2019 (Пн) 18:08

Ты создаешь контрол 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

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Vb6 to PB

Сообщение TrueTrue » 06.02.2019 (Ср) 8:44

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

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

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


Вернуться в Power Basic

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

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

    TopList