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




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




--
Улыбайся - завтра будет хуже!
Спасибо: 5 
ПрофильЦитата Ответить
Ответов - 90 , стр: 1 2 3 4 5 All [только новые]





Пост N: 2110
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.10.18 12:00. Заголовок: Haz пишет У меня все..


Haz пишет
 цитата:
У меня все нормально


У меня аналогично.
Возможно имеется ввиду при Up на последней строке и последнем :nRowPos, строка swap сделала, но осталась последней, а др. ушла за экран, так именно это я имел ввиду под шероховатостью.
Надо усиливать алгоритм, если надо, конечно.
Оставляю это на тех, кому надо.

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



Пост N: 155
Зарегистрирован: 10.07.07
ссылка на сообщение  Отправлено: 26.10.18 12:03. Заголовок: Я пересобирал прогу...


Я пересобирал прогу. Может в этом дело?

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


Пост N: 1377
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.10.18 12:17. Заголовок: TimTim пишет: Я пер..


TimTim пишет:

 цитата:
Я пересобирал прогу. Может в этом дело?


Может и в этом т.к. метод GoToRec() не обновлен в tsBrowse.lib
При желании пересобрать обновить метод можно самостоятельно и пересобрать библиотеку

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



Пост N: 2114
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.10.18 22:02. Заголовок: gfilatov2002 пишет ..


gfilatov2002 пишет
 цитата:
* Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG:
- added the new method FilterData( cFilter, lFocus ) in the TSBrowse


немного надо изменить
 
METHOD FilterRow( cFilter, lBottom, lFocus ) CLASS TSBrowse
...
::Reset(lBottom)
...
или
METHOD FilterRow( cFilter, lFocus, lBottom ) CLASS TSBrowse
...
::Reset(lBottom)
...

второй вариант по частоте исп. lBottom (default .F.)
первый по логике
что лучше ? не знаю.

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




Пост N: 1385
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.10.18 22:17. Заголовок: SergKis пишет: METH..


SergKis пишет:

 цитата:
METHOD FilterRow( cFilter, lBottom, lFocus )


Принят первый вариант

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



Пост N: 2115
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.10.18 08:31. Заголовок: gfilatov2002 Похожа..


gfilatov2002
Похожая правка
 
METHOD FilterFTS( cFind, lUpper, lBottom, lFocus ) CLASS TSBrowse
...
::Reset(lBottom)
...


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




Пост N: 1386
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.10.18 10:06. Заголовок: SergKis пишет: Похо..


SergKis пишет:

 цитата:
Похожая правка


OK

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


Пост N: 1383
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.10.18 11:31. Заголовок: gfilatov2002 Григо..


gfilatov2002

Григорий в ::GotoRec() можно это добавить

 

If ::lIsDbf

if hb_isBlock( nRec )
nRec := eval( nRec )
end


if hb_isBlock( nRowPos )
nRowPos := eval( nRowPos )
end


это позволит реализовать вычисляемые от условий координаты ( к примеру на последней странице nRowPos ровнять на nRowCount(), или nRec вычислять в dbLocate() )

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



Пост N: 2116
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.10.18 11:54. Заголовок: Haz пишет в ::GotoRe..


Haz пишет
 цитата:
в ::GotoRec() можно это добавить


только Eval с параметром
nRec := eval( nRec, Self )
nRowPos := eval( nRowPos, Self )

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




Пост N: 1387
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.10.18 12:08. Заголовок: Haz пишет: в ::Goto..


Haz пишет:

 цитата:
в ::GotoRec() можно это добавить


OK

SergKis пишет:

 цитата:
только Eval с параметром


OK

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



Пост N: 2117
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.10.18 12:27. Заголовок: gfilatov2002 У нас ..


gfilatov2002
У нас с Игорем еще предложение по методам Скрытый текст

Проверочный пример https://my-files.ru/hb9tz8

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6095
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.10.18 13:08. Заголовок: SergKis пишет: Пров..


SergKis пишет:

 цитата:
Проверочный пример


   DEFINE STATUSBAR 
STATUSITEM ""
//STATUSITEM "Network opening of the database!" WIDTH 290 FONTCOLOR BLUE
STATUSITEM "Methods: Seek, Find, Scope !" WIDTH 290 FONTCOLOR BLUE

Вот так наверное нужно !

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



Пост N: 2118
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.10.18 13:15. Заголовок: Andrey пишет Вот так..


Andrey пишет
 цитата:
Вот так наверное нужно !


Скорее тут менять (а там все равно shared открытие)
FUNCTION UseOpenBase() 
LOCAL aStr := {}
LOCAL cDbf := GetStartUpFolder() + "\TEST5"


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




Пост N: 1388
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.10.18 13:44. Заголовок: SergKis пишет: еще ..


SergKis пишет:

 цитата:
еще предложение по методам


Принято с благодарностью

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6096
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.10.18 09:06. Заголовок: SergKis пишет: У на..


SergKis пишет:

 цитата:
У нас с Игорем еще предложение по методам


Ещё бы один метод нужен.
Типа ColumnRec(nColumn) - показ нужной колонки в бровсе, для большого количества колонок в таблице.
А то юзеру нужную ему колонку невозможно показать сразу, после разных манипуляций.
Или он уже есть и я пропустил такой метод ?

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


Пост N: 1384
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.10.18 11:00. Заголовок: Andrey пишет: я про..


Andrey пишет:

 цитата:
я пропустил такой метод


::GoPos()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6097
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.10.18 12:10. Заголовок: Haz пишет: ::GoPos(..


Haz пишет:

 цитата:
::GoPos()


Что-то это не работает...
Я раньше у себя это пробовал:
     oBrw1:nCell := 6 + nStaticNumField    // передвинуть МАРКЕР на колонку выбранного фильтра 
или
oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку

Всё равно таблица остаётся на первых видимых колонках.
А те колонки, что за экраном, не показывает !

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


Пост N: 1385
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.10.18 12:29. Заголовок: Andrey пишет: Что-т..


Andrey пишет:

 цитата:
Что-то это не работает...
Я раньше у себя это пробовал:
oBrw1:nCell := 6 + nStaticNumField // передвинуть МАРКЕР на колонку выбранного фильтра
или
oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку

Всё равно таблица остаётся на первых видимых колонках.
А те колонки, что за экраном, не показывает !



Работает !
GoPos() уходит на нужную колонку, хоть за экраном, хоть перед ним. Только что специально проверял

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6098
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.10.18 12:31. Заголовок: Haz пишет: GoPos() ..


Haz пишет:

 цитата:
GoPos() уходит на нужную колонку, хоть за экраном, хоть перед ним. Только что специально проверял


Блин, а у меня нет...
Что нужно вызывать после этого метода ?
Делаю так:
  IF nStaticNumField <= 0 
oBrw1:GoPos( 1,7 ) // передвинуть МАРКЕР на XX строку и XX колонку
ELSE
oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку
ENDIF

Первое условие работает - oBrw1:GoPos( 1,7 ), другое нет.
Т.е. если курсор на первой части таблицы, то отображается.
Если уходит за видимую ПЕРВУЮ часть, то курсора не видно и таблица со столбцами не перемещается.

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




Пост N: 6962
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.10.18 12:43. Заголовок: Andrey Пробни так O..


Andrey
Пробни так
Obrw:Refresh(.F.) // или Display
Затем Gopos

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



Пост N: 2119
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.10.18 12:44. Заголовок: Andrey пишет Что нуж..


Andrey пишет
 цитата:
Что нужно вызывать после этого метода ?


Ничего не нужно.
Надо найти у себя переустановку этого дела или ячейки :nCell

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6100
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.10.18 12:53. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо найти у себя переустановку этого дела или ячейки :nCell


Уже неделю с этим бьюсь периодически....

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




Пост N: 6963
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.10.18 13:05. Заголовок: Andrey пишет: Уже н..


Andrey пишет:

 цитата:
Уже неделю с этим бьюсь периодически...


Сделай простой пример: бровс и кнопка , при нажатии которой вводится
место "прыга" и почекай как пашет Gopos

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



Пост N: 2120
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.10.18 13:05. Заголовок: Andrey Tsb_array_2&..


Andrey
Tsb_array_2\demo.prg
 
STATIC FUNCTION CreateDatos()
LOCAL a, i, k := 1000, aDatos, aHead, aSize, aFoot, aPict, aAlign, aName
...
i % 2 == 0 } // 14
a := AClone(aDatos[ i ])
AEval(a, {|xv| AAdd(aDatos[ i ], xv) })
AEval(a, {|xv| AAdd(aDatos[ i ], xv) })

...
PROCEDURE MAIN
...
END TBROWSE

oBrw:GoPos(1, 21)
// oBrw:GoPos(7, 31)

END WINDOW
...

работают строки

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6101
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.10.18 13:09. Заголовок: SergKis пишет: рабо..


SergKis пишет:

 цитата:
работают строки


Да, это работают. Видно у меня что-то не того....

Сделал как Дима посоветовал:
  IF nStaticNumField <= 0 
oBrw1:GoPos( 1,7 ) // передвинуть МАРКЕР на XX строку и XX колонку
ELSE
oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку
oBrw1:Refresh(.T.)
ENDIF

Первый показ срабатывает, другие разы нет !

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


Пост N: 1388
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.10.18 13:27. Заголовок: Andrey пишет: oBrw1..


Andrey пишет:

 цитата:
oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку
oBrw1:Refresh(.T.)


Дима немножко не так советовал, хотя это тоже не помогло бы . А так GoPos() в конце кода и так вызывает Refresh()
В итоге ::ColumnRec( nColumn ) не нужен ,это тоже что и ::GoPos( ::nRowPos, nColumn ) и метод ::GoPos() рабочий

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




Пост N: 1389
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.10.18 10:46. Заголовок: Выпущена новая сборк..


Выпущена новая сборка 18.10 для BCC 5.51 и компиляторов Harbour и xHarbour

Базовый дистрибутив-инсталлятор находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-18.10-setup.exe

Рекомендуется к использованию

Также имеются следующие сборки для Си-компиляторов:

- MinGW 8.1.0 32-bit для Harbour 3.2.0dev; (есть в наличии)

- MinGW 8.1.0 64-bit для Harbour 3.4.0dev; (есть в наличии)

- MS VisualC 2017 32-bit для Harbour 3.2.0dev; (есть в наличии)

- MS VisualC 2017 64-bit для Harbour 3.2.0dev; (есть в наличии)

- Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.4.0dev. (под заказ)

Особая благодарность SergKis и Haz за их постоянную помощь в совершенствовании TsBrowse

Выпуск последующих сборок отложен на неопределенное время...

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



Пост N: 2121
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.11.18 11:25. Заголовок: gfilatov2002 В мето..


gfilatov2002
В методе неточность
 
METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse
...
If HB_ISBLOCK( nRecnRowPos )
nRowPos := Eval( nRowPos, Self )
EndIf
подключать блок не удалось, сделал правку для варианта с полным заполнением посл. экрана, тогда и блоки не нужны
METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse
LOCAL cAlias
LOCAL nSkip
LOCAL n
LOCAL nRecSave
LOCAL lRet := .F.
LOCAL lReCount := .F.

IF ::lIsDbf

/*
If HB_ISBLOCK( nRec )
nRec := Eval( nRec, Self )
EndIf

If HB_ISBLOCK( nRec )
nRowPos := Eval( nRowPos, Self )
EndIf
*/
lRet := .T.
cAlias := ::cAlias
::nLastPos := ( cAlias )->( RecNo() )
nRec := Min( ( cAlias )->( LastRec() ), nRec )

If HB_ISLOGICAL(nRowPos) .and. nRowPos .and. ::nLen > ::nRowCount()
nRowPos := Nil
nRecSave := ::nLastPos
(cAlias)->( dbGoto(nRec) )
(cAlias)->( dbSkip( ::nRowCount() - ::nRowPos ) )

If (cAlias)->( EOF() )
Eval( ::bGoBottom )
::nRowPos := ::nRowCount()

DO WHILE ::nRowPos > 1 .and. (cAlias)->( RecNo() ) != nRec
(cAlias)->( dbSkip( -1 ) )
::nRowPos --
ENDDO
Else
(cAlias)->( dbGoto(nRecSave) )
EndIf
EndIf

hb_default( @nRowPos, ::nRowPos )

( cAlias )->( dbGoto( nRec ) )

n := 0
...

Использовать
:GotoRec(nRec, .T.)
или как обычно

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


Пост N: 1393
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 02.11.18 12:03. Заголовок: SergKis пишет: Испо..


SergKis пишет:

 цитата:
Использовать
:GotoRec(nRec, .T.)
или как обычно



то есть nRowPos или число или признак проверки на последний экран ?
может тогда третьим параметром ?

SergKis пишет:

 цитата:
подключать блок не удалось


Не подобрать условие ?

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



Пост N: 2122
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.11.18 15:15. Заголовок: Haz пишет то есть nR..


Haz пишет
 цитата:
то есть nRowPos или число или признак проверки на последний экран ?


Да. У себя поставил DEFAULT nRowPos := .T. на входе - основной режим
т.е. всегда заполнять последний экран, если надо оставить пустоту внизу экрана, то
:GotoRec(nRec, :nRowPos\или число)
но такое реже надо

 цитата:
Не подобрать условие ?


была ошибка в коде
 
If HB_ISBLOCK( nRec надо nRowPos )
nRowPos := Eval( nRowPos, Self )
EndIf

исправлять ее для блока или заменить вызов самим кодом, я сделал второе

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


Пост N: 1394
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 02.11.18 15:35. Заголовок: SergKis пишет: была..


SergKis пишет:

 цитата:
была ошибка в коде



Да при вставке в исходник скорее всего техническая опечатка у Григория проскочила. Не удивительно мы столько раз просили его то то поменять то это

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




Пост N: 1390
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.11.18 17:04. Заголовок: SergKis пишет: Испо..


SergKis пишет:

 цитата:
Использовать
:GotoRec(nRec, .T.)
или как обычно


Благодарю за исправление моей опечатки
Да, без дополнительных кодовых блоков эта функция теперь работает отлично

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



Пост N: 2123
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.11.18 18:28. Заголовок: gfilatov2002 Чуть д..


gfilatov2002
Чуть добавить надо (пропущена ситуация)
 
METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse
...
(cAlias)->( dbGoto(nRecSave) )
EndIf
EndIf

If HB_ISLOGICAL(nRowPos)
nRowPos := Nil
EndIf

hb_default( @nRowPos, ::nRowPos )

( cAlias )->( dbGoto( nRec ) )
...


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




Пост N: 1391
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.11.18 18:40. Заголовок: SergKis пишет: ..


SergKis пишет:

 цитата:
If HB_ISLOGICAL(nRowPos)
nRowPos := Nil
EndIf


Такой добавочный код излишен, поскольку функция hb_default() поправит этот случай


 цитата:
hb_default( @nRowPos, ::nRowPos )



Проверил корректность работы функции на примере из папки samples\Advanced\Tsb_addrecord
Функция сработала без проблем

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



Пост N: 2124
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.11.18 18:52. Заголовок: gfilatov2002 пишет ..


gfilatov2002 пишет
 цитата:
поскольку функция hb_default() поправит этот случай


 
If HB_ISLOGICAL(nRowPos) .and. nRowPos .and. ::nLen > ::nRowCount()
Если ::nLen <= ::nRowCount(), то nRowPos пойдет дальше логический
и имеем далее
DO WHILE !( cAlias )->( BoF() ) .AND. n < nRowPos - 1


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6106
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.11.18 19:03. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
- MS VisualC 2017 32-bit для Harbour 3.2.0dev; (есть в наличии)
- MS VisualC 2017 64-bit для Harbour 3.2.0dev; (есть в наличии)



Хотелось бы попробовать перейти на этот компилятор.
Как получить эти сборки ?

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




Пост N: 1392
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.11.18 20:39. Заголовок: Andrey пишет: Как п..


Andrey пишет:

 цитата:
Как получить эти сборки ?


Отправил ссылки на архивы этих сборок по почте

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6108
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.11.18 05:00. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Отправил ссылки на архивы этих сборок по почте


Спасибо ! Получил.
Теперь вопрос другой - как распаковать эти архивы, чтобы можно было собирать свой проект под разными компиляторами ?
Хотелось бы иметь возможность через *.hbp собирать проект для 3-х компиляторов: BCC, VC, VC64.
Желательно бы иметь такую структуру каталогов:
C:\MiniGUI\BCC
C:\MiniGUI\VC17
C:\MiniGUI\VC1764
Или по другому, как лучше будет и универсальней.

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



Пост N: 2125
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.11.18 13:13. Заголовок: Григорий, можно Андр..


Григорий, можно Андрей кинет мне (он знает куда) ссылки или архивы сборок VC-ных, полюбопытсвовать.

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




Пост N: 1393
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.11.18 15:38. Заголовок: SergKis пишет: можн..


SergKis пишет:

 цитата:
можно Андрей кинет мне (он знает куда) ссылки


Без проблем - это ведь тестовые сборки для любопытных

Кстати, обновил сегодня сборку 18.10 (Update 1) с учетом Ваших исправлений в TsBrowse

Что нового:

 цитата:
* Fixed: Program crash at releasing of a Tab control with imbedded Slider
(introduced in the build 18.10).
Bug was reported by Richard Rylko.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
* Modified: The function HMG_Alert() respects now the Minigui command
SET CENTERWINDOW RELATIVE PARENT.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
* Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG:
- improved the method GotoRec( nRec [, lLastPos | nRowPos ] )
in the TSBrowse class. Contributed by Sergej Kiselev
(see demo in folder \samples\Advanced\Tsb_addrecord)



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



Пост N: 2126
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.11.18 15:41. Заголовок: gfilatov2002 пишет Б..


gfilatov2002 пишет
 цитата:
Без проблем


Спасибо.

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



Пост N: 2137
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.11.18 12:48. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение:
 
1.
CLASS TKeyData
...
_METHOD Destroy()

ERROR HANDLER ControlAssign

ENDCLASS
///////////////////////////////////////////////////////////////////////////////

METHOD ControlAssign( xValue ) CLASS TKeyData
LOCAL cMessage, uRet, lError

cMessage := __GetMessage()
lError := .T.

If PCOUNT() == 0
uRet := ::Get( cMessage )
lError := .F.
ElseIf PCOUNT() == 1
::Set( SubStr( cMessage, 2 ), xValue )
uRet := ::Get( cMessage )
lError := .F.
EndIf

If lError
uRet := Nil
::MsgNotFound( cMessage )
EndIf

RETURN uRet

тогда можно так (пример Advanced\Tsb_Basic\demo4.prg line 416)
oRec2 := (cAls)->( RecGet() )
nKey2 := oRec2:F0
oRec2:F0 := nKey1
oRec1:F0 := nKey2
...
вместо
oRec2 := (cAls)->( RecGet() )
nKey2 := oRec2:Get('F0')
oRec2:Set('F0', nKey1)
oRec1:Set('F0', nKey2)
...

2. предлагаю _LogFile(...) поправить, что бы команда ? не давала на вывод NIL Скрытый текст


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




Пост N: 1397
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.11.18 13:50. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение:


1-й пункт принят без вопросов, а со вторым - неясно, чем не угодил тип NIL

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



Пост N: 2138
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.11.18 13:59. Заголовок: gfilatov2002 пишет н..


gfilatov2002 пишет
 цитата:
неясно, чем не угодил тип NIL


"Старые" тексты с set alternate ... и исп. команд ? ... - все ок, но команды ? "портят" протокол\отчет.
Только это

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




Пост N: 1398
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.11.18 14:06. Заголовок: SergKis пишет: кома..


SergKis пишет:

 цитата:
команды ? "портят" протокол\отчет


Тогда надо заменить
?
на
? ""
например, с помощью препроцессора

P.S. Нет, препроцессор в этом случае не поможет
Поэтому 2-й пункт принят также.
Благодарю за помощь

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




Пост N: 1400
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.12.18 12:05. Заголовок: Завершена подготовка..


Завершена подготовка новой сборки 18.11, последней в этом году

Кратко, что нового:

 цитата:
* Fixed a problem with button's focus at a window activation when
this button was defined with the DEFAULT clause.

* A first TEXTBOX have got a control's content selection by default
when a focus is received at a window activation.
It is not required a calling of Setfocus method at form's 'On Init'
event anymore (look at the InputBox() and InputWindow() functions).

* Added an additional checking before a calling of the C-function
_SetFont() due to a program crash in some situations (introduced in
the build 16.12).

* The optimized ON SIZE event's behavior with using of the
auxiliary WinAPI events WM_ENTERSIZEMOVE and WM_EXITSIZEMOVE.

* A Label control supports a codeblock type for assigning to 'Value'
property, e.g.
@ ... LABEL ... VALUE { || ... }
Form.Label.Value := { || ... }

* Modified handling of the WM_NEXTDLGCTL message according to
WinAPI specification (synchronized with Official HMG).

* Added the Harbour client library for access to LetoDBf server
RDDLeto with the corresponding header files.

* Updated and improved the TSBrowse, HbXML and HMG_HPDF libraries.

* Updated Harbour Compiler 3.2.0dev to a recent Git-version.
(ChangeLog Last Entry: 2018-11-16 16:33)

* Added the new interesting samples:
- Calendar;
- Mandelbrot Fractal;
- My Player sample is based upon the VLC ActiveX Control;
- MiniGUI DataBase Utility (Inspired by EMAG Software DBU at https://www.emagsoftware.it)

and updated some Advanced samples.


Особая благодарность SergKis и Haz за их постоянную помощь в совершенствовании TsBrowse

Выпуск последующих сборок отложен на неопределенное время...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6138
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.12.18 15:17. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
* The optimized ON SIZE event's behavior with using of the
auxiliary WinAPI events WM_ENTERSIZEMOVE and WM_EXITSIZEMOVE.



А новые свойства окна будут ?
 
DEFINE WINDOW test ;
......
MAIN TOPMOST ;
ON MAXIMIZE ( zzzz() ) ;
ON SIZE ( zzzz() ) ;
ON SIZE_BEGIN ( хххх() ) ;
ON SIZE_END ( хххх() ) ;

Можно оставить по старому и новому варианту, программист сам будет решать, что использовать.

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




Пост N: 1401
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.12.18 11:42. Заголовок: Выпущена новая сборк..


Выпущена новая сборка 18.11 для BCC 5.5.1 и компиляторов Harbour и xHarbour.

Установщик дистрибутива находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-18.11-setup.exe

Также имеются следующие сборки для Си-компиляторов:

- MinGW 8.1.0 32-bit для Harbour 3.2.0dev; (есть в наличии)

- MinGW 8.1.0 64-bit для Harbour 3.4.0dev; (есть в наличии)

- MS VisualC 2017 32-bit для Harbour 3.2.0dev; (путь и имя архива не изменял)

- MS VisualC 2017 64-bit для Harbour 3.2.0dev; (путь и имя архива не изменял)

- Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.4.0dev. (под заказ).

Благодарю за Ваше внимание

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



Пост N: 2147
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.12.18 13:09. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно собрать вариант сборки, как раньше, на 7z

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




Пост N: 1402
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.12.18 14:12. Заголовок: SergKis пишет: вари..


SergKis пишет:

 цитата:
вариант сборки, как раньше, на 7z

Да, конечно.
Кинул прямую ссылку в Л.С.

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



Пост N: 2148
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.12.18 15:11. Заголовок: gfilatov2002 Спасиб..


gfilatov2002 Спасибо.

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



Пост N: 2149
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.12.18 10:35. Заголовок: gfilatov2002 Предла..


gfilatov2002
Предлагаю на on size сделать 2-а вызова процедуры, а не один, как сейчас.
Большой разницы нет, но немного удобней расчеты производить:
1-ый раз запоминаем старые значения (коэффициенты)
2-ой считаем новые
Изменения:
 
//**********************************************************************
CASE WM_ENTERSIZEMOVE
//**********************************************************************

IF ! _HMG_AutoAdjust
lEnterSizeMove := Nil // .T.
_HMG_MouseState := 1
ENDIF
// EXIT
//**********************************************************************
CASE WM_SIZE
//**********************************************************************

IF ( ISNIL(lEnterSizeMove) .OR. ! lEnterSizeMove ) .OR. ! iswinnt()
// IF ! lEnterSizeMove .OR. ! iswinnt()
IF ISNIL(lEnterSizeMove)
lEnterSizeMove := .T.
ENDIF

ControlCount := Len ( _HMG_aControlHandles )
...
//**********************************************************************
CASE WM_EXITSIZEMOVE
//**********************************************************************

lEnterSizeMove := .F.
IF ! _HMG_AutoAdjust
_HMG_MouseState := 0
SendMessage ( hWnd , WM_SIZE , 0 , 0 )
ENDIF
EXIT
...
тогда результат процедуры в on size выглядит
Start - Tsb_export987bcc.exe
Number of records in the table: 1005
Windows 8.1 6.3
Harbour MiniGUI Extended Edition 18.11 (32-bit)
.
RESIZETABLE VK_LBUTTON -127 _HMG_MouseState 1 // первый раз
RESIZETABLE VK_LBUTTON 1 _HMG_MouseState 0 // второй раз

RESIZETABLE VK_LBUTTON -128 _HMG_MouseState 1 // первый раз
RESIZETABLE VK_LBUTTON 0 _HMG_MouseState 0 // второй раз
...
Пример процедуры on resize
STATIC FUNCTION ResizeTable(oBrw)

? procname(), 'VK_LBUTTON', WAPI_GETKEYSTATE(VK_LBUTTON), '_HMG_MouseState', _HMG_MouseState

IF _HMG_MouseState > 0 // первый раз
ELSE // второй раз
ENDIF
...


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




Пост N: 1403
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.12.18 13:11. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю на on size сделать 2-а вызова процедуры


Принято с благодарностью
Два прохода для этого события решают также проблему перерисовки контролов, которая иногда возникает при быстром изменении размеров формы

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6142
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.12.18 11:53. Заголовок: Поставил новую верси..


Поставил новую версию 18.11
Мой большой проект перестал собираться.
Выдаёт ошибку:
OBJ\use_LetoDb.c:
Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland
Error: Unresolved external '_HB_FUN_LETO_SET' referenced from W:\HB_PROJECT\...\OBJ\USE_LETODB.OBJ

Откатил назад на версию 18.10 - проект собирается !!!

Использую Leto DB Server v.2.15b3 с 2015 года.
Отлично работает, переходить на новую версию нет надобности.

Я так понимаю функция LETO_SET берется из MiniGui\Harbour\include\RDDLETO.CH
Т.е. появилась поддержка LetoDb.
Можно ли починить МиниГуи версию 18.11 для правильной сборки ?
Т.е. как задать правило в MyPrj.hbp для подключения сначала
моих ch - W:\HB_Project\MyPrj\Include\rddleto.ch
и моей библиотеки W:\HB_Project\MyPrj\rddleto.lib

Хотя я в MyPrj.hbp прописал так
# включить путь к своим *.ch и  *.fmg   
-incpath=Include
-incpath=Source
Но первым берется всё равно MiniGui\Harbour\include\RDDLETO.CH

Можно конечно поступить проще, тупо удалить файлы из поставки минигуи
RDDLETO.CH и RDDLETO.LIB, но хочется разобраться как делать правильно.

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



Пост N: 2150
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.12.18 13:41. Заголовок: Andrey пишет Можно л..


Andrey пишет
 цитата:
Можно ли починить МиниГуи версию 18.11 для правильной сборки ?


1 попробуй у себя ставить
#define CaseSensitive // отключить #define set(...) LETO_SET(...)
возможно пройдет проект на новой версии RddLeto 3.0
2. замени в MiniGui\Harbour\Lib\RDDLETO.LIB из версии Leto 2.0
3. замени в MiniGui\Harbour\Include\RDDLETO.CH из версии Leto 2.0

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



Пост N: 2151
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.12.18 13:45. Заголовок: PS по первому пункту..


PS
по первому пункту, можно закрыть строки в RDDLETO.CH v.m.3.0
 
...
/* redirect for 4 options handled in LETO_SET(), others forward to SET() */
#ifdef CASESENSITIVE
// #define set( _HB_SETTING, XSET ) LETO_SET( _HB_SETTING, XSET )
// #define Set( _HB_SETTING, XSET ) LETO_SET( _HB_SETTING, XSET )
#endif
//#define SET( _HB_SETTING, XSET ) LETO_SET( _HB_SETTING, XSET )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6143
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.12.18 16:02. Заголовок: SergKis пишет: по п..


SergKis пишет:

 цитата:
по первому пункту, можно закрыть строки в RDDLETO.CH v.m.3.0


А как сделать, чтобы в prg брался ВСЕГДА мой ch - W:\HB_Project\MyPrj\Include\rddleto.ch ?

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



Пост N: 2152
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.12.18 16:05. Заголовок: Andrey Посмотри и в..


Andrey
Посмотри и выполни пункты 2 и 3
Будет все твое

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1488
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 07.12.18 16:07. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как сделать, чтобы в prg брался ВСЕГДА мой ch - W:\HB_Project\MyPrj\Include\rddleto.ch ?


#include "W:\HB_Project\MyPrj\Include\rddleto.ch"

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



Пост N: 2153
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.12.18 16:09. Заголовок: PS Если хочешь разде..


PS
Если хочешь разделить версии leto, переименуй свои
rddleto.ch -> rddleto2.ch
rddleto.lib -> rddleto2.lib
и подключай их

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



Пост N: 2154
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.12.18 16:16. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправил у себя в TsBrowse
 
METHOD SetNoHoles( nDelta, lSet ) CLASS TSBrowse

LOCAL nH, nK, nHeight, nHole

DEFAULT nDelta := 0, lSet := .T.

// nHole := ::nHeight - ::nHeightHead - ::nHeightSuper - ;
nHole := _GetClientRect( ::hWnd )[4] - ::nHeightHead - ::nHeightSuper - ;
::nHeightFoot - ::nHeightSpecHd - ;
If( ::lNoHScroll, 0, GetHScrollBarHeight() )
...

А то
METHOD nHeight() INLINE GetWindowHeight( ::hWnd )
дает не то

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




Пост N: 1404
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.12.18 20:59. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправил у себя в TsBrowse

METHOD SetNoHoles


Благодарю за исправление!
Так, конечно, лучше...

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



Пост N: 2155
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.12.18 21:02. Заголовок: PS Может зря "за..


PS
Может зря "завелся" с :nHeight, но не глянулось изменение дырки в тсб после on resize (с изменениями).
До on resize была ~2-3 pixel, после убралась из за разницы алгоритмов высоты.
Процедура на on resize Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6144
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.18 15:09. Заголовок: SergKis пишет: Если..


SergKis пишет:

 цитата:
Если хочешь разделить версии leto, переименуй свои
rddleto.ch -> rddleto2.ch
rddleto.lib -> rddleto2.lib
и подключай их


То что надо ! Спасибо !
Сделал rddleto_my.ch

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6145
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.12.18 15:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Два прохода для этого события решают также проблему перерисовки контролов, которая иногда возникает при быстром изменении размеров формы


Григорий, а тихое обновление версии 18.11 с учётом последних изменений можно сделать ?

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




Пост N: 1405
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.12.18 18:49. Заголовок: Andrey пишет: тихое..


Andrey пишет:

 цитата:
тихое обновление версии 18.11 с учётом последних изменений можно сделать ?


Да, сейчас готовлю update 1 для версии 18.11, который запланирован к выходу на следующей неделе...

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



Пост N: 2156
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.12.18 16:50. Заголовок: gfilatov2002 Измени..


gfilatov2002
Изменил в TsBrowse :SetNoHoles(...) с учетом исп. в ON SIZE Скрытый текст

Добавил метод OnResize(...), сейчас он работает "правильно" для тсб со всеми колонками помещающиеся на экран, но предлагаю включить (потом может модифицируем) Скрытый текст


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



Пост N: 2157
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.12.18 19:08. Заголовок: PS Погонял OnResize ..


PS
Погонял OnResize метод на _HMG_MouseState == 1 и изменение ширины колонки мышой, получилась добавка
 
METHOD OnReSize( nWidth, nHeight, lTop ) CLASS TSBrowse

LOCAL nCnt, aCol, nCol, oCol, nKfc, lRet := .F.
LOCAL nColMaxKfc := 0, nW, nS, nN
LOCAL nTop := iif( empty( lTop ), ::nTop, 0 )

IF _HMG_MouseState == 1

aCol := array(Len( ::aColumns ))
nW := _GetClientRect( ::hWnd )[3]

For nCol := 1 To Len( ::aColumns )
oCol := ::aColumns[ nCol ]
aCol[ nCol ] := 0
If nCol == 1 .and. ::lSelector; LOOP
ElseIf oCol:lBitMap ; LOOP
EndIf
aCol[ nCol ] := oCol:nWidth / nW
Next

::aOldParams[7] := AClone( aCol )

ELSEIF _HMG_MouseState == 0 .and. ISARRAY( ::aOldParams[7] )

aCol := ::aOldParams[7]
...


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



Пост N: 2158
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.12.18 19:34. Заголовок: PPS можно добавить в..


PPS
можно добавить в класс
DATA bOnResizeEnter
DATA bOnResizeExit
и сделать вызовы в OnResize(...)
 
...
::aOldParams[7] := AClone( aCol )

IF ISBLOCK( ::bOnResizeEnter )
EVal( ::bOnResizeEnter, Self )
ENDIF

ELSEIF _HMG_MouseState == 0 .and. ISARRAY( ::aOldParams[7] )

aCol := ::aOldParams[7]
...
::lEnabled := .T.

IF ISBLOCK( ::bOnResizeExit )
EVal( ::bOnResizeExit, Self )
ENDIF

::SetNoHoles()

ENDIF

Return lRet

возможно закроются хотелки

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




Пост N: 1407
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.12.18 22:43. Заголовок: SergKis пишет: возм..


SergKis пишет:

 цитата:
возможно закроются хотелки


Принято с благодарностью за Вашу помощь

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



Пост N: 2160
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.18 15:26. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может поведение процедуры _HMG_aFormMaximizeProcedure [ i ] сделать одинаковым с процедурой на ON SIZE ?
 
//**********************************************************************
CASE WM_SIZE
//**********************************************************************
...
IF _HMG_MainActive == .T.

IF wParam == SIZE_MAXIMIZED

// _DoWindowEventProcedure ( _HMG_aFormMaximizeProcedure [ i ], i )

If ! Empty( _HMG_aFormMaximizeProcedure [ i ] )
If _HMG_AutoAdjust
_DoWindowEventProcedure ( _HMG_aFormMaximizeProcedure [ i ], i )
Else
_HMG_MouseState := 1
_DoWindowEventProcedure ( _HMG_aFormMaximizeProcedure [ i ], i )
_HMG_MouseState := 0
_DoWindowEventProcedure ( _HMG_aFormMaximizeProcedure [ i ], i )
EndIf
EndIf

IF _HMG_AutoAdjust .AND. _HMG_MainClientMDIHandle == 0
_Autoadjust( hWnd )
ENDIF
...


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




Пост N: 1408
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.12.18 15:51. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может поведение процедуры _HMG_aFormMaximizeProcedure [ i ] сделать одинаковым с процедурой на ON SIZE ?


Нет, на мой взгляд, этого не требуется, только усложняется логика обработки

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



Пост N: 2161
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.18 16:45. Заголовок: gfilatov2002 OK! не..


gfilatov2002
OK!
небольшая правка
 
METHOD OnReSize( nWidth, nHeight, lTop ) CLASS TSBrowse
LOCAL nCnt, aCol, nCol, oCol, nKfc, lRet := .F.
LOCAL nColMaxKfc := 0, nW, nS, nN
LOCAL nTop := iif( empty( lTop ), ::nTop, 0 )

IF Empty( nWidth )
nWidth := GetWindowWidth( ::hWnd )
ENDIF

IF Empty( nHeight )
nHeight := GetWindowHeight( ::hWnd )
lTop := .T.
nTop := 0
ENDIF

IF _HMG_MouseState == 1

aCol := array(Len( ::aColumns ))
nW := _GetClientRect( ::hWnd )[3]

If ! ::lNoVScroll .and. ::nLen > ::nRowCount()
nW -= GetVScrollBarWidth()
EndIf

For nCol := 1 To Len( ::aColumns )
...
ELSEIF _HMG_MouseState == 0 .and. ISARRAY( ::aOldParams[7] )
...
nW := _GetClientRect( ::hWnd )[3]
nN := nS := 0

If ! ::lNoVScroll .and. ::nLen > ::nRowCount()
nW -= GetVScrollBarWidth()
EndIf

For nCol := 1 To nCnt
...


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




Пост N: 1409
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.12.18 16:54. Заголовок: SergKis пишет: небо..


SergKis пишет:

 цитата:
небольшая правка


Благодарю за помощь

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



Пост N: 2162
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.18 16:57. Заголовок: PS Проверяю на Tsb_B..


PS
Проверяю на Tsb_Basic\demo4.prg
Изменения Скрытый текст

вроде, полет нормальный

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



Пост N: 2163
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.18 17:10. Заголовок: gfilatov2002 Это из..


gfilatov2002
Это изменение, не давал, пропустил
 
METHOD SetNoHoles( nDelta, lSet ) CLASS TSBrowse
...
If Empty( ::aOldParams )

::Display()

aRect := _GetClientRect( ::hWnd )

If ! ::lNoVScroll .and. ::nLen > ::nRowCount()
aRect[3] -= GetVScrollBarWidth()
EndIf

::aOldParams := array(7)
...
Else

If ::lEnabled
::lEnabled := .F.
EndIf

::Paint()
::lEnabled := .T.
::Refresh(.F.)

If ! ::lNoVScroll .and. ::nLen > ::nRowCount()
::ResetVScroll( .T. )
::oHScroll:SetRange( 0, 0 )
EndIf

EndIf
...


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




Пост N: 1410
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.12.18 18:27. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это изменение, не давал


Спасибо

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




Пост N: 1411
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.12.18 10:24. Заголовок: Обновил сборку 18.11..


Обновил сборку 18.11 (Update 1) с учетом последних исправлений в TsBrowse

Что нового:

 цитата:
* Enhanced: The optimized ON SIZE event detects now the mouse state.
You can use the variable _HMG_MouseState for accepting of
a left mouse button down (=1) or up (=0) state.
Suggested and contributed by Sergej Kiselev.
Revised by Grigory Filatov <gfilatov@inbox.ru>
(see demo in folder \Utils\mgDBU)
* New: Added the Harbour HbCurl contrib library compiled with the latest
Curl and libcurl 32-bit package version 7.62.0 (30 Oct 2018).
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(look at ReadMe.txt in folder \harbour)
* Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG:
- added the new method OnReSize( nWidth, nHeight, lTop );
- the improved method SetNoHoles().
Contributed by SergKis
(see demo in folder \samples\Advanced\Tsb_Export)
* Updated: MySql library source code (see in folder \Source\HbMySql):
- added the new method affected_rows() in the class TMySQLQuery.
Contributed by Attila Szabo.
* Updated: 'Print Pie Graph' sample: the updated data for November 2018.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see demo.prg in folder \samples\Basic\GraphPrint)
* Updated: 'Internet Explorer ActiveX' sample:
- updated the events processing routine for proper 64-bit handling.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see in folder \samples\Advanced\ActiveX)
* Updated: 'HMG_HPDF library usage' sample.
Based upon a contribution of HMG user Edward.
Revised by Grigory Filatov <gfilatov@inbox.ru>
(see demo3.prg in folder \samples\Advanced\PDF_PRINT_3)



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




Пост N: 1413
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.12.18 13:34. Заголовок: Выпустил 2-е обновле..


Выпустил 2-е обновление для сборки 18.11

Что нового:

 цитата:
* Enhanced: Added the events support for ActiveX control.
Syntax:
@ <nRow>,<nCol> ACTIVEX <ControlName> ;
[ OF | PARENT <ParentWindowName> ] ;
WIDTH <nWidth> ;
HEIGHT <nWidth> ;
PROGID <cProgId> ;
[ EVENTMAP <aEvents> ] ;
[ CLIENTEDGE ]
Or
DEFINE ACTIVEX <ControlName>
<...>
EVENTMAP { { nEvent, [bAction | cFuncName] }, { ... } }
CLIENTEDGE .T.
END ACTIVEX

Requested by Carlos Vargas <cvargaz[at]donboscocorp.com>.
Based on a contribution of Oscar Lira <oscarlira78@hotmail.com>.
Revised by Grigory Filatov <gfilatov@inbox.ru>
(see demo in folder \samples\Advanced\VLC)
* Modified: A StatusBar with KEYBOARD clause look was improved with using
of an ownerdraw color for the status items.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see demo in folder \Utils\mgDBU)
* Updated: Minor correction of StatusItem refresh at modifying of FontColor,
BackColor and Align properties at runtime.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see demo4.prg in folder \samples\Basic\Status)
* Updated: 'Internet Explorer ActiveX' sample.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see in folder \samples\Advanced\ActiveX)
* Updated: 'My Player' sample is based upon the VLC ActiveX Control at
http://www.videolan.org/.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see in folder \samples\Advanced\VLC)
* Updated: 'MiniGUI DataBase Utility' sample.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see in folder \Utils\mgDBU)



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



Пост N: 143
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 25.12.18 09:50. Заголовок: на версии 18.11 программа вылетает


Перешел с версии 18.08 сразу на 18.11, программа перестала работать.
Кусок исходника:

hSplBox := _DefineSplitBox('Form_main')
DEFINE TOOLBAR ToolBar_main BUTTONSIZE 24,24 FLAT
BUTTON But_LkObo PICTURE 'obo24' ACTION lookObo(sity->ls) DROPDOWN
...
END TOOLBAR
_EndSplitBox()

DEFINE DROPDOWN MENU BUTTON But_LkObo
ITEM 'Количество месяцев просмотра' ACTION numMes() IMAGE NIL
END MENU

Ошибка стала возникать при вызове DROPDOWN меню
Дело оказалось в строках, которые обрамляют TOOLBAR:

hSplBox := _DefineSplitBox('Form_main')
...
_EndSplitBox()

Если эти строки закоментировать, программа работает

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




Пост N: 1414
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.12.18 11:27. Заголовок: alex_II пишет: Ошиб..


alex_II пишет:

 цитата:
Ошибка стала возникать при вызове DROPDOWN меню


Если возможно, подготовьте простой пример, демонстрирующий эту ошибку.

Мой контрольный пример работает нормально (см. ниже)
Скрытый текст


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



Пост N: 2168
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.12.18 11:32. Заголовок: alex_II Замените вы..


alex_II
Замените вызовы функций hSplBox := _DefineSplitbox('Form_main') ... _EndSplitBox() командами
DEFINE SPLITBOX HANDLE hSpl
...
END SPLITBOX

Запустил несколько примеров из samples со splitbox и dropdown - работают

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



Пост N: 2169
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.12.18 11:36. Заголовок: gfilatov2002 Если з..


gfilatov2002
Если записать как у alex_II, то валится, запись командой работает

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



Пост N: 144
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 25.12.18 12:32. Заголовок: Все работает


SergKis пишет:

 цитата:

Замените вызовы функций hSplBox := _DefineSplitbox('Form_main') ... _EndSplitBox() командами
DEFINE SPLITBOX HANDLE hSpl
...
END SPLITBOX


Благодарю, Ваша рекомендация помогла

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




Пост N: 1415
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.01.19 16:00. Заголовок: Подготовил перед Рож..


Подготовил перед Рождеством уже 5-ю бету для новой сборки библиотеки
Список изменений у этой сборки следующий
Скрытый текст
Благодарю за Ваше внимание

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



Пост N: 2171
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.01.19 21:17. Заголовок: gfilatov2002 У себя..


gfilatov2002
У себя сделал небольшую правку (расчет высоты для колонки с несколькими CRLF
 
Static Function SetHeights( oBrw )
...
// Now for cells

nHHeight := oBrw:nHeightCell

For nEle := 1 TO Len( oBrw:aColumns )
...
// Default oBrw:nMemoHV := 2

If Empty(oBrw:nMemoHV) .and. Chr(13) $ cHeading
oBrw:nMemoHV := Len( hb_ATokens(cHeading, Chr(13)) )
EndIf

nHeight := SBGetHeight( oBrw:hWnd, hFont, 0 )
...
)

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




Пост N: 1416
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.01.19 22:18. Заголовок: SergKis пишет: расч..


SergKis пишет:

 цитата:
расчет высоты для колонки с несколькими CRLF


Принято с небольшими изменениями
Благодарю за Вашу помощь и внимание

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



Пост N: 2172
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.01.19 00:45. Заголовок: SergKis пишет If Emp..


SergKis пишет
 цитата:
If Empty(oBrw:nMemoHV) .and. Chr(13) $ cHeading


Использую так в колонке (при работе с базой колонок, созданной заранее)
 
:cHeading, "Адрес юридический" + CRLF + "Адрес фактический" + CRLF + "Контакты"
:bData := {|| Alltrim(K_8) + chr(13) + chr(10) + ; // Adr. jur.
Alltrim(K_A) + chr(13) + chr(10) + ; // Adr. fakt.
Alltrim(K_C) } ) // telefon, ...
...
при
oBrw:nMemoHV := 1 // будет одна строка в просмотре тсб
oBrw:nMemoHV := 2 // будет две строки ...
oBrw:nMemoHV := 0 // будет три строки ...


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6154
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.01.19 20:21. Заголовок: SergKis пишет: Испо..


SergKis пишет:

 цитата:
Использую так в колонке (при работе с базой колонок, созданной заранее)



Примерчик бы маленький сделать в папку Tsb_Basic - demo5.prg !

Да и в demo3.prg правку небольшую внести:
 
DEFINE WINDOW Form_0 ;
....
TITLE "(3) TsBrowse DBASE SHARED Demo" ;
....
STATUSITEM "(3) TsBrowse - network opening of the database!" WIDTH 290 FONTCOLOR BLUE


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



Пост N: 2173
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.01.19 23:14. Заголовок: Andrey пишет Примерч..


Andrey пишет
 цитата:
Примерчик бы маленький сделать


Примерчик по колонкам с базой колонок был, пробуй.
Вырезка из проги Скрытый текст


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

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