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




Пост 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 
Профиль
Ответов -300 ,стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


gfilatov2002
moderator




Пост N:1515
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:01.07.19 14:06.Заголовок:SergKis пишет: Може..


SergKis пишет:

 цитата:
Может добавить функцию


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N:1516
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:02.07.19 09:33.Заголовок:Всем кому это интересно


Адаптировал свежую версию библиотеки для работы с Microsoft Visual C++ 2019 (32- и 64-бит).

По шагам:

1) скачал полный дистрибутив MSVC 2019 (примерно 22 ГБ) и установил его.

2) сделал консольную версию MSVC 2019 из вышеуказанного дистрибутива (около 454 МБ).

3) собрал компилятор Харбор из сырцов с помощью консольной версии MSVC 2019.

4) собрал и успешно протестировал библиотеку Минигуи с этим компилятором

Ваши комментарии приветствуются

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




Пост N:6321
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:02.07.19 13:46.Заголовок:gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Адаптировал свежую версию библиотеки для работы с Microsoft Visual C++ 2019 (32- и 64-бит)


Отличная новость !
Теперь надо будет нужные проги переводить на MSVC.
Надеюсь будет работать лучше, чем на BCC.

Спасибо: 0 
Профиль
Dima
администратор




Пост N:7059
Зарегистрирован:17.05.05
ссылка на сообщение  Отправлено:02.07.19 13:47.Заголовок:Andrey пишет: Надею..


Andrey пишет:

 цитата:
Надеюсь будет работать лучше, чем на BCC.


скорее всего разницы и не заметишь

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N:1517
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:02.07.19 14:22.Заголовок:Dima пишет: разницы..


Dima пишет:

 цитата:
разницы и не заметишь


Если сравнивать по скорости выполнения простых операций, то разница есть (см. ниже)

 цитата:

2019-07-02 14:17:48 Windows 10 10.0
Harbour 3.2.0dev (r1904111533) Borland C++ 5.5.1 (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.02
====================================================================
[ T001: x := L_C ]..............................................0.03
[ T002: x := L_N ]..............................................0.03
[ T003: x := L_D ]..............................................0.03
[ T004: x := S_C ]..............................................0.03
[ T005: x := S_N ]..............................................0.05
[ T006: x := S_D ]..............................................0.03
[ T007: x := M->M_C ]...........................................0.05
[ T008: x := M->M_N ]...........................................0.03
[ T009: x := M->M_D ]...........................................0.03
[ T010: x := M->P_C ]...........................................0.05
[ T011: x := M->P_N ]...........................................0.03
[ T012: x := M->P_D ]...........................................0.03
[ T013: x := F_C ]..............................................0.03
[ T014: x := F_N ]..............................................0.02
[ T015: x := F_D ]..............................................0.03
[ T016: x := o:Args ]...........................................0.09
[ T017: x := o[ 2 ] ]...........................................0.08
[ T018: Round( i / 1000, 2 ) ]..................................0.11
[ T019: Str( i / 1000 ) ].......................................0.31
[ T020: Val( s ) ]..............................................0.11
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................0.22
[ T022: DToS( d - i % 10000 ) ].................................0.25
[ T023: Eval( {|| i % 16 } ) ]..................................0.19
[ T024: Eval( bc := {|| i % 16 } ) ]............................0.13
[ T025: Eval( {| x | x % 16 }, i ) ]............................0.17
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................0.13
[ T027: Eval( {| x | f1( x ) }, i ) ]...........................0.22
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................0.19
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............0.19
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................1.30
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ]..........1.59
[ T032: x := ValType( x ) + ValType( i ) ]......................0.20
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.38
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.17
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.19
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.17
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.19
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.19
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.17
[ T040: AScan( a, i % 16 ) ]....................................0.16
[ T041: AScan( a, {| x | x == i % 16 } ) ]......................1.36
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]....0.44
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.06
[ T045: f0() ]..................................................0.03
[ T046: f1( i ) ]...............................................0.08
[ T047: f2( c[1...8] ) ]........................................0.05
[ T048: f2( c[1...40000] ) ]....................................0.05
[ T049: f2( @c[1...40000] ) ]...................................0.05
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.06
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.20
[ T052: f2( a ) ]...............................................0.06
[ T053: x := f4() ].............................................0.44
[ T054: x := f5() ].............................................0.11
[ T055: x := Space( 16 ) ]......................................0.08
[ T056: f_prv( c ) ]............................................0.17
====================================================================
[ total application time: ]....................................11.72
[ total real time: ]...........................................11.75


2019-07-02 14:18:48 Windows 10 10.0
Harbour 3.2.0dev (r1904111533) Microsoft Visual C++ 19.21.27702 (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.02
====================================================================
[ T001: x := L_C ]..............................................0.00
[ T002: x := L_N ]..............................................0.02
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.02
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.02
[ T007: x := M->M_C ]...........................................0.00
[ T008: x := M->M_N ]...........................................0.02
[ T009: x := M->M_D ]...........................................0.02
[ T010: x := M->P_C ]...........................................0.00
[ T011: x := M->P_N ]...........................................0.02
[ T012: x := M->P_D ]...........................................0.02
[ T013: x := F_C ]..............................................0.00
[ T014: x := F_N ]..............................................0.00
[ T015: x := F_D ]..............................................0.02
[ T016: x := o:Args ]...........................................0.05
[ T017: x := o[ 2 ] ]...........................................0.02
[ T018: Round( i / 1000, 2 ) ]..................................0.06
[ T019: Str( i / 1000 ) ].......................................0.14
[ T020: Val( s ) ]..............................................0.08
[ T021: Val( a [ i % 16 + 1 ] ) ]...............................0.13
[ T022: DToS( d - i % 10000 ) ].................................0.20
[ T023: Eval( {|| i % 16 } ) ]..................................0.11
[ T024: Eval( bc := {|| i % 16 } ) ]............................0.08
[ T025: Eval( {| x | x % 16 }, i ) ]............................0.09
[ T026: Eval( bc := {| x | x % 16 }, i ) ]......................0.06
[ T027: Eval( {| x | f1( x ) }, i ) ]...........................0.09
[ T028: Eval( bc := {| x | f1( x ) }, i ) ].....................0.08
[ T029: Eval( bc := &( "{| x | f1( x ) }" ), i ) ]..............0.08
[ T030: x := &( "f1(" + Str( i ) + ")" ) ]......................0.69
[ T031: bc := &( "{| x | f1( x ) }" ), Eval( bc, i ) ]..........0.75
[ T032: x := ValType( x ) + ValType( i ) ]......................0.09
[ T033: x := StrZero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.19
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.08
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.09
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.08
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.09
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.09
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.08
[ T040: AScan( a, i % 16 ) ]....................................0.13
[ T041: AScan( a, {| x | x == i % 16 } ) ]......................0.83
[ T042: iif( i % 1000 == 0, a := {}, ), AAdd(a,{i,1,.T.,s, ]....0.27
[ T043: x := a ]................................................0.00
[ T044: x := {} ]...............................................0.03
[ T045: f0() ]..................................................0.02
[ T046: f1( i ) ]...............................................0.03
[ T047: f2( c[1...8] ) ]........................................0.02
[ T048: f2( c[1...40000] ) ]....................................0.03
[ T049: f2( @c[1...40000] ) ]...................................0.02
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.03
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.11
[ T052: f2( a ) ]...............................................0.03
[ T053: x := f4() ].............................................0.13
[ T054: x := f5() ].............................................0.06
[ T055: x := Space( 16 ) ]......................................0.05
[ T056: f_prv( c ) ]............................................0.08
====================================================================
[ total application time: ].....................................6.34
[ total real time: ]............................................6.35



Спасибо: 0 
Профиль
SergKis



Пост N:2615
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:03.07.19 16:48.Заголовок:gfilatov2002 Добавь..


gfilatov2002
Добавьте в CLASS TWndData
 
ACCESS Title INLINE GetWindowText ( ::nHandle )
ASSIGN Title( cVal ) INLINE SetWindowText ( ::nHandle, cVal )
ACCESS Enabled INLINE IsWindowEnabled( ::nHandle )
ASSIGN Enabled( xVal ) INLINE iif ( Empty( xVal ), DisableWindow ( ::nHandle ), EnableWindow ( ::nHandle ) )


Пример для проверки на базе BASIC\ChildAsModal Скрытый текст


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N:1518
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:03.07.19 17:32.Заголовок:SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавьте в CLASS TWndData


Спасибо, добавил

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N:1519
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:04.07.19 09:45.Заголовок:Обновил сборку 19.06..


Обновил сборку 19.06 (Update 2) с учетом последних наработок

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

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

Что нового:
Скрытый текст



Спасибо: 0 
Профиль
SergKis



Пост N:2627
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:09.07.19 09:47.Заголовок:gfilatov2002 Думает..


gfilatov2002
Думается функция _hmg_OnHideFocusManagement ( i ) для окна STANDART работает не точно.
Подправленный пример (был выше) тут https://TransFiles.ru/b0lgp
Нажатие кнопок на окнах CHILD и MODAL работает нормально, а на окне STANDART на передний план выводится окно MAIN и потом окно AlertInf(...). Если, в ф-ии _DO_BTN_( oBtn ), убрать строку (выделено цветом)Скрытый текст

окно MAIN так и останется на переднем плане в фокусе.

Спасибо: 0 
Профиль
gfilatov2002
moderator




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


SergKis пишет:

 цитата:
на окне STANDART на передний план выводится окно MAIN


Да, это верно

Но это плата за то, что у этого окна нет родительского окна-хозяина (в отличие от CHILD).

SergKis пишет:

 цитата:
Если, в ф-ии _DO_BTN_( oBtn ), убрать строку


Поэтому и требуется предложенный Вами костыль.

Как это победить по-другому, я не нашел...

Спасибо: 0 
Профиль
SergKis



Пост N:2630
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:09.07.19 13:05.Заголовок:gfilatov2002 пишет К..


gfilatov2002 пишет
 цитата:
Как это победить по-другому, я не нашел...


Получается при первом STANDART надо убирать MAIN в hide (костыль в придачу), тогда, вроде, похоже на правду
Скрытый текст


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




Пост N:6337
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:16.07.19 17:11.Заголовок:Заметил такую неприя..


Заметил такую неприятность.
В функциях пользуюсь определением имени формы
   ?  ThisWindow.Name, _HMG_ThisFormName, cStaticGlobalForm 
возвращает:
Form_Main Form_Main Form_AYC

cStaticGlobalForm - делаю определение сразу под созданием окна.
Т.е. должно всегда возвращаться Form_AYC !!!
Значит - ThisWindow.Name, _HMG_ThisFormName нельзя использовать ?

Правда у меня на форме Form_Main включён таймер на каждую секунду (для тестирования).
Может он влияет на псевдо-функции ThisWindow.Name, _HMG_ThisFormName ?

Спасибо: 0 
Профиль
SergKis



Пост N:2643
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:16.07.19 18:03.Заголовок:Andrey пишет Значит ..


Andrey пишет
 цитата:
Значит - ThisWindow.Name, _HMG_ThisFormName нельзя использовать ?


Перечитай http://clipper.borda.ru/?1-1-0-00000521-000-280-0-1563229132
Лучшее решение, по мне, функция aThis := _ThisInfo(), работаешь как с Alias(), сохраняешь\восстанавливаешь

Спасибо: 0 
Профиль
SergKis



Пост N:2644
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:16.07.19 18:08.Заголовок:PS т.е. в TIMER блок..


PS
т.е. в TIMER блоке на Form_Main ставишь
aThis := _ThisInfo() // в начале
...
_ThisInfo(aThis) // в конце

Спасибо: 0 
Профиль
SergKis



Пост N:2645
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:16.07.19 18:11.Заголовок:PPS Наврал, на TIMER..


PPS
Наврал, на TIMER не получится, там ставится среда This для Form_Main, sory

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




Пост N:6338
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:16.07.19 18:24.Заголовок:Понял, что с TIMER н..


Понял, что с TIMER нужно аккуратно работать.
Всё таки решение через STATIC переменную типа cStaticThisForm более простое.
SergKis пишет:

 цитата:
Лучшее решение, по мне, функция aThis := _ThisInfo(), работаешь как с Alias(), сохраняешь\восстанавливаешь


Буду иметь ввиду. Уже кое где применил.

Спасибо: 0 
Профиль
SergKis



Пост N:2646
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:16.07.19 18:30.Заголовок:Andrey пишет Всё так..


Andrey пишет
 цитата:
Всё таки решение через STATIC переменную типа cStaticThisForm более простое.


Теряется универсальность. Надо каждое окно делать в отдельном prg файле, иначе для каждого окна свою переменную, что фактически означает работу по имени окна, т.е. Form_Main.Btn1.Value и т.д.

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


Пост N:1536
Зарегистрирован:27.01.07
ссылка на сообщение  Отправлено:16.07.19 19:38.Заголовок:SergKis пишет: Теря..


SergKis пишет:

 цитата:
Теряется универсальность. Надо каждое окно делать в отдельном prg файле, иначе для каждого окна свою переменную, что фактически означает работу по имени окна, т.е. Form_Main.Btn1.Value и т.д.


hash-массив не поможет в этом случае?

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




Пост N:6339
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:16.07.19 21:45.Заголовок:PSP пишет: hash-мас..


PSP пишет:

 цитата:
hash-массив не поможет в этом случае?


Да зачем усложнять то код написания.
Нужно проще писать код, чтобы когда нужно править так лет через 10, понимать что и как написано.
А то открываешь свой код написанный 12 лет назад и думаешь, кто так фигово написал то.... и почему до сих пор работает ?

Спасибо: 0 
Профиль
SergKis



Пост N:2647
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:16.07.19 22:21.Заголовок:PSP пишет Как это м..


PSP пишет [quote]`
Как это может помочь при плавающем cForm
 
WHILE _IsWindowDefined( cForm := cFrm+'_'+hb_ntos(++nFrm) )
ENDDO


Спасибо: 0 
Профиль
Ответов -300 ,стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
-участник сейчас на форуме
-участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 40
Права: смайлыда,картинкида,шрифтыда,голосованиянет
аватарыда,автозамена ссылоквкл,премодерацияоткл,правканет