On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение





Пост N: 46
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 23.01.24 11:27. Заголовок: НwGUI, в окне Browse просмотра информации полосы прокрутки работают не корректно


Добрый день! Использую HwGUI, в окне Browse просмотра информации полосы прокрутки (горизонтальная, вертикальная) работают не корректно. При "захвате" мышкой ползунка не происходит перемещение по записям. Подскажите в чем дело. Текст функции смю ниже.


#include "hwgui.ch"
#include "MAIN.h"
#include "dbstruct.ch"
#include "error.ch"


#include "hbdyn.ch"
#include "simpleio.ch"

#include "hbgtinfo.ch"
#include "setcurs.ch"
#include 'wvtwin.ch'


#define LeftToDetScr 24

#define x_BLUE 16711680
#define x_DARKBLUE 10027008
#define x_WHITE 16777215
#define x_CYAN 16776960
#define x_BLACK 0
#define x_RED 255
#define x_GREEN 32768
#define x_GRAY 8421504
#define x_YELLOW 65535

#include "windows.ch"
#include "guilib.ch"

&&*=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=**=▒░▒=*
FUNCTION BBr_SpisSotr_GUI(pcWPOD , pcl_Work, pcName)
&&**********************************************************

LOCAL hChild := ''
LOCAL fname := "Список сотрудников."

LOCAL oWindow, oBrowse, i, nArea, kolf
LOCAL oStyle := HStyle():New( { 0xffffff, 0xbbbbbb }, 1 )
LOCAL oStyle1 , oMsg
LOCAL bPosChg := {|o| oBrowse:Refresh }
LOCAL oToolbarbot1, oButton1, oCombobox1, oLabel1
LOCAL VAR_KEY
LOCAL oPanel
LOCAL oToolbartop1
LOCAL oOwnerbutton1, oOwnerbutton3, oOwnerbutton2, oOwnerbutton4, oOwnerbutton5
LOCAL oOwnerbutton6, oOwnerbutton7, oOwnerbutton8, oOwnerbutton9
LOCAL F1
LOCAL oEdGoto
LOCAL nRec := 1
LOCAL nLast := 0
LOCAL nI

Al_FL01 := S_Open(FN_Faces)
(Al_FL01)->(DBGOTOP())

oIcon1 := HIcon():AddResource("MainIcon3")

INIT DIALOG oDlg TITLE fname ;
AT 0,25 SIZE 1500,740 ;
ICON oIcon1 ;
STYLE WS_SYSMENU+WS_SIZEBOX+WS_VISIBLE

MENU OF oDlg
MENU TITLE TRS("Список F1")
MENUITEM TRS("Список F1") ACTION Help_F1()
ENDMENU

MENU TITLE TRS("Отчеты")
MENUITEM TRS('[1] Отчет 1') ACTION {||PRT_SPIS_W() } BITMAP ExePath +"IMAGE\MENU_3.bmp"
MENUITEM TRS('[2] Отчет 2') ACTION {||PRT_OKLAD_SOTR_W(.F.,.F.) } BITMAP ExePath +"IMAGE\MENU_3.bmp"
MENUITEM TRS('[3] Отчет 3') ACTION {||PRT_OKLAD_SOTR_W(.F.,.T.) } BITMAP ExePath +"IMAGE\MENU_3.bmp"
ENDMENU

MENU TITLE TRS("Выход")
MENUITEM TRS("Выход из режима") ACTION oDlg:Close()
ENDMENU
ENDMENU

@ 0,0 PANEL oPanel OF oDlg ;
SIZE oDlg:nWidth-2,45 ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS

@ 10,12 OWNERBUTTON oOwnerbutton1 OF oPanel ;
ON CLICK {|| LSC1_W() } ;
SIZE 32,32 ;
BITMAP "KEY_EDIT" FROM RESOURCE TRANSPARENT ;
TOOLTIP "ПРосмотр информации"

@ 90,12 OWNERBUTTON oOwnerbutton3 OF oPanel ;
ON CLICK {|| Print_F6()} SIZE 32,32 ;
FLAT BITMAP "KEY_PRINT" FROM RESOURCE TRANSPARENT COLOR 12632256 ;
TOOLTIP TRS("Печать")

@ 130,12 OWNERBUTTON oOwnerbutton5 OF oPanel ON CLICK {|| Help_F1() } ;
SIZE 32,32 ;
FLAT BITMAP "KEY_NASTR" FROM RESOURCE TRANSPARENT COLOR 12632256 ;
TOOLTIP TRS("Список клавиш режима.")

@ 1, 70 BROWSE oBrowse DATABASE SIZE 1480, 600;
STYLE WS_VSCROLL + WS_HSCROLL ;
ON SIZE ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ;
ANCHOR_TOPABS + ANCHOR_BOTTOMABS + ;
ANCHOR_TOPREL + ANCHOR_LEFTREL + ;
ANCHOR_BOTTOMREL + ANCHOR_RIGHTREL ;
ON GETFOCUS {|o|dbSelectArea(o:alias)}

oBrowse:htbcolor := 0x777777
oBrowse:bcolorSel := BCOLOR_SEL
oBrowse:tcolorSel := TCOLOR_SEL
oBrowse:oStyleHead := oStyle
oBrowse:ofont := oBrwFont
oBrowse:alias := Al_FL01
oBrowse:aColumns := {}

nArea := SELECT()
kolf := FCount()

ADD COLUMN {|| (Al_FL01)->W68 } TO oBrowse HEADER 'Таб.N' ;
TYPE 'C' LENGTH 4
ADD COLUMN {|| (Al_FL01)->W00 } TO oBrowse HEADER 'Номер.'
ADD COLUMN {|| (Al_FL01)->W01 } TO oBrowse HEADER 'Фамилия.'
ADD COLUMN {|| (Al_FL01)->W02 } TO oBrowse HEADER PADC('Имя.',25)
ADD COLUMN {|| (Al_FL01)->W03 } TO oBrowse HEADER PADC('Отчество.',25)
ADD COLUMN {|| DTOC((Al_FL01)->W22) } TO oBrowse HEADER 'Дата рожд.' ;
TYPE 'C' LENGTH 10 DEC 0
ADD COLUMN {|| (Al_FL01)->W41 } TO oBrowse HEADER 'СНИЛС.' ;
TYPE 'C' LENGTH 15 DEC 0
ADD COLUMN {|| (Al_FL01)->W65 } TO oBrowse HEADER 'ИНН сотрудника'
ADD COLUMN {|| DTOC((Al_FL01)->W04) } TO oBrowse HEADER 'Дата.'

oBrowse:bScrollPos := {|o,n,lEof,nPos|hwg_VScrollPos(o,n,lEof,nPos)}
oBrowse:bHScrollPos := {|o,n,lEof,nPos|hwg_HScrollPos(o,n,lEof,nPos)}

FOR nI := 1 TO LEN(oBrowse:aColumns)
oBrowse:aColumns[nI]:bColorBlock := {|| IF( EMPTY((Al_FL01)->W41) ,;
{x_RED , x_WHITE , x_CYAN , x_GRAY} ,;
{x_BLUE, x_WHITE , x_BLACK, x_YELLOW }) ;
}

NEXT nI

oDlg:Activate()
S_CLOSE(FN_Faces) // FL01

RETURN IIF( lMdi, oDlg:handle, oTabMain:GetActivePage() )

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 20 [только новые]


moderator


Пост N: 1579
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 23.01.24 15:14. Заголовок: Здравствуйте, долж..


Здравствуйте,

должно работать. Попробуйте сделать короткий пример, который я мог бы воспроизвести.
И укажите, что используете: версия HwGUI, windows или linux.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 47
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 23.01.24 16:02. Заголовок: Добрый день! Коротк..


Добрый день!

Короткий пример и файл - https://disk.yandex.ru/d/36dU4gV9nO8L6Q
"версия HwGUI" - windows. HWGUI 2.23 buld 2 (hwgui-2.23-b2.bcc). Компилятор C++ 5.5.1



#include "hwgui.ch"
#include "MAIN.h"
#include "dbstruct.ch"
#include "error.ch"


#include "hbdyn.ch"
#include "simpleio.ch"

#include "hbgtinfo.ch"
#include "setcurs.ch"

&& GTWVT - вҐа¬Ё- « (б Ја дЁЄ®©)
#include 'wvtwin.ch'

#ifdef __UNIX__
#define DEF_SEP '/'
#else
#define DEF_SEP '\'
#endif


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
FUNCTION TEST_1()
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

LOCAL hChild := ''
LOCAL fname := TRS('‘Їа ў®з-ЁЄ - «®Ј®ўле ўлзҐв®ў')

LOCAL oWindow, oBrowse, i, nArea, kolf
LOCAL oStyle := HStyle():New( { 0xffffff, 0xbbbbbb }, 1 )
LOCAL oMsg

LOCAL bCol1 := {|o,h,x1,y1,x2,y2|
oStyle:Draw( h,x1,y1,x2,y2 )
RETURN Nil
}

LOCAL bPosChg := {|o| oBrowse:Refresh() }

LOCAL oToolbarbot1, oButton1, oCombobox1, oLabel1
LOCAL VAR_KEY
LOCAL oPanel
LOCAL oToolbartop1
LOCAL oOwnerbutton1, oOwnerbutton3, oOwnerbutton2, oOwnerbutton4, oOwnerbutton5
LOCAL F1

PUBLIC aBrwFont := { "MS Sans Serif", "0", "-13" }, oBrwFont, oMainFont
PUBLIC lMdi := .T.

gl_CpageRU1251 := "RU1251"
hb_cdpSelect( gl_CpageRU1251 ) // gl_CpageRU1251 := "RU1251" / gl_CpageRU866 := "RU866"

Use 'SNV' Shared Alias SNV
al_NalV := ALIAS()

(al_NalV)->(DBSETORDER()) // KODNV

oIcon1 := HIcon():AddResource("MainIcon3")

oBrwFont := HFont():Add( aBrwFont[1], Val(aBrwFont[2]), Val(aBrwFont[3]) )

INIT DIALOG oDlg TITLE fname ;
AT 0,25 SIZE 1500,600 ;
ICON oIcon1 ;
STYLE WS_SYSMENU+WS_SIZEBOX+WS_VISIBLE

SET KEY 0,VK_F6 TO RK_BRSNALV(2)
SET KEY 0,VK_F5 TO hwg_Msginfo("F5")
SET KEY 0,VK_F7 TO RK_BRSNALV(10)

@ 0,0 PANEL oPanel OF oDlg ;
SIZE oDlg:nWidth-2,45 ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS

@ 10,12 OWNERBUTTON oOwnerbutton1 OF oPanel ;
ON CLICK {|| RK_BRSNALV(3)};
SIZE 32,32 ;
BITMAP "KEY_EDIT" FROM RESOURCE TRANSPARENT ;
TOOLTIP TRS("ђҐ¤ ЄвЁа®ў -ЁҐ")

@ 1, 70 BROWSE oBrowse DATABASE OF oDlg ;
ON SIZE {|o,x,y|o:Move( ,,x,y-38 ) }

oBrowse:bPosChanged := bPosChg
oBrowse:htbcolor := 0x777777
oBrowse:bcolorSel := BCOLOR_SEL
oBrowse:tcolorSel := TCOLOR_SEL
oBrowse:oStyleHead := oStyle
oBrowse:ofont := oBrwFont

nArea := Select()
kolf := FCount()

oBrowse:alias := ALIAS()
oBrowse:aColumns := {}


ADD COLUMN {|| field->KODNV } TO oBrowse ;
HEADER TRS('Љ®¤') ;
TYPE 'C' LENGTH 3 DEC 0 ;
COLORBLOCK {|| _COLOR_() }

ADD COLUMN {|| field->NAME } TO oBrowse ;
HEADER PADC(TRS('Ќ Ё¬Ґ-®ў -ЁҐ Є®¤  - «®Ј®ў®Ј® ўлзҐв '),55) ;
TYPE 'C' LENGTH 55 DEC 0 ;
COLORBLOCK {|| _COLOR_() }

ADD COLUMN {|| field->SUM_NV } TO oBrowse ;
HEADER PADC(TRS('‘㬬  ўлзҐв '),17) ;
JUSTIFY LINE DT_RIGHT ;
PICTURE '999 999 999.99' ;
COLORBLOCK {|| _COLOR_() }

ADD COLUMN {|| DTOC(field->DAT_BEG) } TO oBrowse ;
HEADER TRS('„ в  - з.') ;
COLORBLOCK {|| _COLOR_() }

ADD COLUMN {|| DTOC(field->DAT_END) } TO oBrowse ;
HEADER TRS('„ в  § ў.') ;
TYPE 'C' LENGTH 10 DEC 0 ;
COLORBLOCK {|| _COLOR_() }

oBrowse:lAppable := .T.
oBrowse:bScrollPos := {|o,n,lEof,nPos|hwg_VScrollPos(o,n,lEof,nPos)}
oBrowse:lInFocus := .T.
oBrowse:freeze := 1
oBrowse:Refresh() //*- Refresh()

oDlg:Activate()

(al_NalV)->( dbCloseArea() )

gl_CpageRU866 := "RU866"
hb_cdpSelect( gl_CpageRU866 )

RETURN IIF( lMdi, oDlg:handle, oTabMain:GetActivePage() )
//*- RETURN hwg_EndWindow()


&&*=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=*
STATIC FUNCTION RK_BRSNALV(pnKey)
&&**********************************************************

IF pnKey = 3
hwg_msgInfo( TRS("Ќ ¦ в  Є« ўЁи  3 ") )
ELSE
hwg_msgInfo( TRS("Ќ ¦ в  Є« ўЁи  ... ") )
ENDIF

RETURN .T.

&&*=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±
FUNCTION TRS( pcString )
&&**********************************************************
&&PUBLIC gl_CpageRU1251 := "RU1251"
&&PUBLIC gl_CpageRU866 := "RU866"
&&

LOCAL RetVal := ''

RetVal := hb_Translate( pcString , "RU866", "RU1251" )

RETURN RetVal

&&*=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=**=±°±=*
STATIC FUNCTION _COLOR_()
&&**********************************************************
/*
#define x_BLUE 16711680
#define x_DARKBLUE 10027008
#define x_WHITE 16777215
#define x_CYAN 16776960
#define x_BLACK 0
#define x_RED 255
#define x_GREEN 32768
#define x_GRAY 8421504
#define x_YELLOW 65535
*/
LoCAL RetVal := {}

IF (al_NalV)->SUM_NV <= 0 ; RetVal := {x_RED, x_WHITE, x_CYAN, x_GRAY}
ELSE ; RetVal := {x_BLUE, x_WHITE , x_BLACK, x_YELLOW }
ENDIF

RETURN RetVal

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1580
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 24.01.24 12:26. Заголовок: Вы сами пробовали от..


Вы сами пробовали откомпилировать и запустить этот prg?
Main.h не приложен. Я его закомментировал, но теперь куча предупреждений о необъявленных переменных.

> HWGUI 2.23 buld 2

А свежую версию не пробовали? У меня build 2 и не осталось, чтобы именно с ним проверить

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 48
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 24.01.24 12:26. Заголовок: Александр, добрый де..


Александр, добрый день!
Аналогичная ситуация с версией HWGUI 2.23 bild 7 (hwgui-2.23-b7)
В поставке hwgui-2.23-b7.bcc в директории LIB отсутствует файл HWGUIMT.lib

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1581
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 24.01.24 12:28. Заголовок: Ну все-таки приведит..


Ну все-таки приведите в порядок prg, чтобы я мог его нормально откомпилировать

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 49
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 24.01.24 12:30. Заголовок: Файл main.h /* * $..


Файл main.h

/*
* $Id: dbchw.h 2718 2018-12-05 06:30:40Z alkresin $
*/

#define AF_LEN 10
#define AF_NAME 1
#define AF_EXCLU 2
#define AF_RDONLY 3
#define AF_DRIVER 4
#define AF_LOCAL 5
#define AF_PASS 6
#define AF_ALIAS 7
#define AF_LFLT 8
#define AF_BRW 9
#define AF_CP 10

#define OPENED_FILES_LIMIT 15

#define LOCAL_SERVER 1
#define REMOTE_SERVER 2

#define BCOLOR_SEL 0xDDDDDD
#define TCOLOR_SEL 0

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1582
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 24.01.24 12:55. Заголовок: По-прежнему куча пре..


По-прежнему куча предупреждений:
Скрытый текст


На X_BLUE программа и вылетает. Вы все-таки проверяйте код перед тем, как посылать его

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 50
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 24.01.24 13:11. Заголовок: Собрал отдельно - вс..


Собрал отдельно - все работает.
А вот в составе системы наблюдаются вышеуказанные ошибки. В чём могут быть проблемы?

Тексты. Сборка: hbmk2 TEST.hbp
Ссылка: https://disk.yandex.ru/d/Rjbf5aKiB1zNaA

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1583
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 24.01.24 14:07. Заголовок: Aleksandr_D пишет: ..


Aleksandr_D пишет:

 цитата:
Собрал отдельно - все работает.
А вот в составе системы наблюдаются вышеуказанные ошибки


Даже не знаю... Раз проблемы при работе в составе системы, то надо это в составе системы и проверять. Может, hwg_VScrollPos() где-нибудь переопределена. Я бы еще проверил, не оказалось ли почему-то пустым oBrowse:bScrollPos - на кнопку повесил бы проверку.
И постарайтесь избавиться от предупреждений.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 51
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 24.01.24 14:40. Заголовок: Спасибо за советы. Б..


Спасибо за советы. Буду проверять.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 52
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 24.01.24 16:29. Заголовок: alkresin пишет: Раз..


alkresin пишет:

 цитата:
Раз проблемы при работе в составе системы, то надо это в составе системы и проверять. Может, hwg_VScrollPos() где-нибудь переопределена. Я бы еще проверил, не оказалось ли почему-то пустым oBrowse:bScrollPos - на кнопку повесил бы проверку.



Функция hwg_VScrollPos() не переопределена. Есть не пустая проверка oBrowse:bScrollPos := {|o,n,lEof,nPos|hwg_VScrollPos(o,n,lEof,nPos)}

Убрал параметр: "STYLE WS_VSCROLL + WS_HSCROLL " из строки "@ ... BROWSE ... " и режим заработал.

"До"
@ 1, 70 BROWSE oBrowse DATABASE OF oDlg SIZE 1480, 600 ;
STYLE WS_VSCROLL + WS_HSCROLL ;
ON SIZE {|o,x,y|o:Move( ,,x,y-3 ) }

"После"

@ 1, 70 BROWSE oBrowse DATABASE OF oDlg SIZE 1480, 600 ;
ON SIZE {|o,x,y|o:Move( ,,x,y-3 ) }

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1584
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.01.24 14:19. Заголовок: Aleksandr_D пишет: ..


Aleksandr_D пишет:

 цитата:
Убрал параметр: "STYLE WS_VSCROLL + WS_HSCROLL " из строки "@ ... BROWSE ... " и режим заработал.


Более чем странно, такого не должно быть. Стиль WS_VSCROLL ставится по умолчанию, его можно не указывать - но если указать - не помешает.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 53
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 26.01.24 11:10. Заголовок: Редко возникают вот ..


Редко возникают вот такие ошибки см. ниже.
Как получены: на вертикальной полосе прокрутки мышкой захватываю бегунок. Затем начинаю перемещать его. Вверх-вниз. После 8-15 -ти перемещений , иногда, возникают ошибки.

------------------------------------------------------------------------
Error BASE/1004 No exported method: ADD
Called from (b)HWG_ERRSYS(20)
Called from ADD(0)
Called from HBROWSE:LINEOUT(1120)
Called from HBROWSE:PAINT(819)
Called from HBROWSE:ONEVENT(317)
Called from HWG_DLGBOXINDIRECT(0)
Called from HDIALOG:ACTIVATE(176)
Called from BBR_SPISSOTR_GUI(714)
Called from BBR_SPISSOTR_GUI_V(65)
Called from (b)MAIN(522)
Called from ONCOMMAND(645)
Called from (b)HMAINWINDOW(302)
Called from HMAINWINDOW:ONEVENT(408)
Called from HWG_ACTIVATEMDIWINDOW(0)
Called from HMAINWINDOW:ACTIVATE(390)
Called from MAIN(1023)

HWGUI 2.23 Build 7
Date:25/01/2024
Time:14:14:35

------------------------------------------------------------------------
Application Internal Error - K:\ROUNDN\RABM_1\ZZPP_W.exe
Terminated at: 2024-01-25 14:04:44
Unrecoverable error 9001: Error recovery failure
Called from HBROWSE:LINEOUT(1117) in source\winapi\hbrowse.prg
Called from HBROWSE:PAINT(794) in source\winapi\hbrowse.prg
Called from HBROWSE:ONEVENT(317) in source\winapi\hbrowse.prg
Called from HWG_DLGBOXINDIRECT(0)
Called from HDIALOG:ACTIVATE(176) in source\winapi\hdialog.prg
Called from SPR_NAL_V_GUI(173) in SPRNALVW.PRG
Called from (b)MAIN(893) in MAIN.prg
Called from ONCOMMAND(645) in source\winapi\hwindow.prg
Called from (b)HMAINWINDOW(302) in source\winapi\hwindow.prg
Called from HMAINWINDOW:ONEVENT(408) in source\winapi\hwindow.prg
Called from HWG_ACTIVATEMDIWINDOW(0)
Called from HMAINWINDOW:ACTIVATE(390) in source\winapi\hwindow.prg
Called from MAIN(1023) in MAIN.prg
------------------------------------------------------------------------

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1585
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.01.24 11:18. Заголовок: Что до hwguimt.lib, ..


Что до hwguimt.lib, то вместо нее можно смело использовать hwgui.lib - разницы нет. Когда-то кто-то включил в makefile для bcc строки, чтобы собирать hwguimt.lib, но какого-то специального кода для mt в HwGUI нет.
На мой взгляд, нет большого смысла в том, чтобы создавать/использовать элементы интерфейса в разных потоках. Интерфейс может быть в главном потоке, а какие-то длительные вычисления, параллельные запросы в Интернет можно запускать в других потоках. У меня так сделан, например, rss reader.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1586
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.01.24 11:40. Заголовок: Aleksandr_D пишет: ..


Aleksandr_D пишет:

 цитата:
на вертикальной полосе прокрутки мышкой захватываю бегунок. Затем начинаю перемещать его. Вверх-вниз. После 8-15 -ти перемещений , иногда, возникают ошибки.


Хм... Не наблюдал такого. Сейчас специально запустил dbchw (utils/dbc), открыл файл, долго возил бегунок - все нормально.
И в той строчке стоит HBrush():Add()- т.е., No exported method: ADD говорит о том, что у класса HBrush (не объекта) нет метода Add. Если бы речь шла об объекте, можно было бы предположить, что в переменной оказался не тот объект или вообще не объект. А в данном случае имеет место что-то глубоко внутри (internal error)

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 54
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 26.01.24 13:02. Заголовок: Убрал библиотеку hwg..


Убрал библиотеку hwguimt.lib и опцию при сборке -mt - работает стабильно.
Ещё раз проверил проверил метод ADD для класса HBrush - не корректностей не нашёл. Тем более, что при обычной, штатной работе с бегунком режим работает стабильно.
"... а какие-то длительные вычисления, параллельные запросы в Интернет можно запускать в других потоках. У меня так сделан, например, rss reader." - Спасибо за ссылку.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 55
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 29.01.24 11:46. Заголовок: Не подскажите как лучше в HWGUI при построении Browse() перемещение по записям заданными индексным в


Александр, добрый день!
Не подскажите как лучше в HWGUI при построении Browse() перемещение по записям заданными индексным выражением.

Пример (реализация в терминальной версии):
cKod := Код выборки

Открываю файл.
Индекс KOD + …. (Код выборки + …)
DBGOTOP()
IF DBSEEK(cKod)

oTbl := TBrowseDB(10,1,MaxRow(),MaxCol())параметры
oTbl:skipBlock := {|x| Skipbb(x,{|| !(field->KOD=cKOD) } ) }
oTbl:goBottomBlock := { || BOT(cKOD) }
oTbl:goTopBlock := { || TOP(cKOD) }
…………
ENDIF


FUNCTION skipbb(n,f_lt)
&&**********************************************************
&& Функция листания. Сверху определен код-блок для определения границ

local i := 0

if ( lastrec() != 0 )
if (n == 0)
dbskip(0) //обновим запись
if !eof().and.eval(f_lt) //если удовлетворяет код-блоку
dbgoto(-1) //посылаем на lastrec()+1=>bof()==eof()==.t.
endif
return 0
endif
if (n > 0) //необходимо переместиться вниз
if eof()
return 0
endif
while i < n
dbskip() //перемещаемся вниз пока удовл-ем условиям
if eof().or.eval(f_lt)
dbskip(-1)
exit //возврат на сколько смогли переместиться
endif
i++
enddo
else //( n < 0 )необходимо переместиться вверх
while ( i > n )
dbskip(-1)
if bof().or.eval(f_lt)
if(bof(),,dbskip())
exit
endif
i--
enddo
endif
endif
return (i)


FUNCTION bot(x)
&&**********************************************************
&& Функция конца файла: Передается постоянная часть индекса

if empty(x)
dbgobottom()
else
dbseek(addascii(x,1))
dbskip(-1)
if &(indexkey()) != x
dbgoto(-1) //Go LASTREC()+1
endif
endif
return nil


function top(x)
&&**********************************************************
&& Функция начала файла: Передается постоянная часть индекса

if empty(x)
dbgotop()
else
if(dbseek(x),,dbgoto(-1))
endif
return (nil)

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1588
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.01.24 13:41. Заголовок: Если я правильно пон..


Если я правильно понял то, что вы имели ввиду, то вам надо просто установить scope на "постоянную часть индекса" с помощью функции ordscope().

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1589
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.01.24 15:48. Заголовок: Если без scope, можн..


Если без scope, можно переопределить кодоблоки bSkip, bGoTo, bGoTop, bGoBot, bEof, bBof, bRcou, bRecno, bRecnoLog - примерно как в вашем примере.
oBrowse:bSkip := ...

Другой вариант, я его использовал еще в клипперовские времена, это обойти все записи, входящие в выбранный диапазон и построить массив, содержащий номера записей, а потом сделать browse array.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 56
Зарегистрирован: 05.02.19
ссылка на сообщение  Отправлено: 29.01.24 16:33. Заголовок: Ясно. Спасибо за инф..


Ясно. Спасибо за информацию.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 9
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет