On-line: i3t4j6, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
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: 2280
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.02.24 15:57. Заголовок: SergKis пишет: под ..


SergKis пишет:

 цитата:
под нее, с некоторыми предложенными правками, пример


Спасибо
Поправил функцию IconDll2File() для нового синтаксиса ExtractIconEx() из февральской сборки:
 
*----------------------------------------------------------------------------*
FUNCTION IconDll2File(aIconList, cDirOut, cIconDll, lMsg)
*----------------------------------------------------------------------------*
LOCAL nI, aIcons := {}, cIconSave, nItem, cItem
LOCAL aDim := {}, cPath, lRet, cFile
LOCAL cMsg, cErr := "", nErr := 0
LOCAL oIco := oHmgData()
DEFAULT lMsg := .T., cDirOut := "ICO", ;
cIconDll := "shell32.dll"

IF !HB_ISARRAY(aIconList) ; aIconList := {}
ENDIF

IF !hb_ps() $ cIconDll
cIconDll := Sys.SystemFolder + hb_ps() + cIconDll
ENDIF

lRet := hb_FileExists( cIconDll )

IF !lRet .or. Empty( aIconList )
cMsg := ProcNL()
cMsg += CRLF + Repl("=", Len(cMsg)) + CRLF
cMsg += iif( lRet, "Undefined list of icons !", ;
"DLL icon file not found !" ) + ";"
cMsg += "List of icons:" + " ARRAY[ " + hb_ntos(aIconList) + " ]"
? cMsg
IF lMsg ; AlertStop( cMsg , "Error" )
ENDIF
RETURN NIL
ENDIF

FOR EACH aIcons IN aIconList ; AAdd(aDim, AClone(aIcons))
NEXT

cPath := GetStartUpFolder() + hb_ps() + cDirOut + hb_ps()

IF !hb_DirExists( cPath ) ; hb_DirBuild( cPath )
ENDIF

FOR nI := 1 TO LEN(aDim)
nItem := aDim[nI,2]
cItem := HB_NtoS(nItem)
cFile := ALLTRIM(aDim[nI,3])
cIconSave := cPath + cFile + "#" + cItem + '.ico'

IF hb_FileExists( cIconSave )
oIco:Set ( aDim[nI,1], cIconSave ) // положили key, value
LOOP
ENDIF

AAdd(aIcons, ExtractIconEx( cIconDll, nItem, 32, 32 )[1])
AAdd(aIcons, ExtractIconEx( cIconDll, nItem, 64, 64 )[1])

// icon with number XX to write along the path
lRet := C_SaveHIconToFile( cIconSave, aIcons )
DestroyIcon(aIcons[1]) // ОБЯЗАТЕЛЬНО ! / NECESSARILY !
DestroyIcon(aIcons[2]) // ОБЯЗАТЕЛЬНО ! / NECESSARILY !
aIcons := {}

wApi_Sleep(100)

IF lRet ; oIco:Set( aDim[nI,1], cIconSave ) // положили key, value
ELSE ; cErr += cIconSave + ";" ; nErr++
ENDIF
NEXT

wApi_Sleep(200) ; DO EVENTS

IF nErr > 0 .and. lMsg
cMsg := ProcNL()
cMsg += CRLF + Repl("=", Len(cMsg)) + CRLF
cMsg += cErr
? cMsg
IF lMsg ; AlertStop( cMsg , "Icon is NOT saved !" )
ENDIF
ENDIF

RETURN oIco


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




Пост N: 7685
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.02.24 16:21. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
AAdd(aIcons, ExtractIconEx( cIconDll, nItem, 32, 32 )[1])
AAdd(aIcons, ExtractIconEx( cIconDll, nItem, 64, 64 )[1])


128х128 - тоже нужно ОБЯЗАТЕЛЬНО !
Всякие менюшки делать, экраны у всех большие давно уже.

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




Пост N: 7686
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.02.24 16:22. Заголовок: Иконки размером 256х..


Иконки размером 256х256 в ресурсы включаю, а ехе-ник не собирается.
Так должно быть или нет ?

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




Пост N: 2281
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.02.24 16:49. Заголовок: Andrey пишет: ехе-н..


Andrey пишет:

 цитата:
ехе-ник не собирается


Попробуй сделать таким образом:

 цитата:

ICON256 RCDATA IconVista.ico


а потом используй фнкцию RCDataToFile() для извлечения ресурсов.

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




Пост N: 7687
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.02.24 18:21. Заголовок: Понял, Спасибо ! :s..


Понял, Спасибо !

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




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


gfilatov2002

Доработанный пример c menu (добавлены языки), надо учитывать, что это не unicode версия. В demo4.mnu файлы показано, как в этом черновике набирать, отлаживать меню (без сборки exe), потом можно переносить отлаженное в ресурсы .\res\_demo4.mnu, с текстами меню поступаем так же, черновики убрал в подкаталог.
Пример тут https://TransFiles.ru/eztyk

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




Пост N: 2282
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.02.24 11:37. Заголовок: SergKis пишет: Дора..


SergKis пишет:

 цитата:
Доработанный пример c menu


Спасибо
Но если выбираем второй пункт Config меню -> Themes menu, то получаем ошибку

 цитата:

Error BASE/1004 Метод не экспортирован: NPOST Args: [1] = C

--------------------------------- Stack Trace ---------------------------------
Called from NPOST(0)
Called from (b)CREATE_MENUITEM(437) in module: demo4_func.prg
Called from _DOCONTROLEVENTPROCEDURE(2040) in module: h_windows.prg
Called from EVENTS(1865) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1644) in module: h_windows.prg
Called from MAIN(98) in module: demo4.prg



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




Пост N: 4524
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.24 13:56. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Но если выбираем второй пункт Config меню -> Themes menu, то получаем ошибку


Есть такое дело, пропустил добавку к имени контрола (пересеклись имена с Item строкой) в popup, надо сделать правку demo4_func.prg
 
*----------------------------------------------------------------------------*
FUNCTION Create_Menu(cName, cMenu, oMenu, cGrup, cForm, nPost, cFltr, lIncl)
*----------------------------------------------------------------------------*
...
nPop += 1
cTyp := "POPUP"
cGrp := cTyp+ "_" +
cGrup + "_" + hb_ntos(nPop)
cText := aItm[2]
...


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




Пост N: 2283
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.02.24 19:30. Заголовок: SergKis пишет: проп..


SergKis пишет:

 цитата:
пропустил добавку к имени контрола


Спасибо, сейчас все пункты меню работают нормально.
Но в коде этого примера есть два определения функции PromptGetForms():

 цитата:

Warning: Public symbol '_HB_FUN_PROMPTGETFORMS' defined in both module C:\MINIGUI\SAMPLES\1\MENU_POPUP_4\OBJ\TEST4_MENU.OBJ and C:\MINIGUI\SAMPLES\1\MENU_POPUP_4\OBJ\DEMOS_UTIL.OBJ



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




Пост N: 4525
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.02.24 19:52. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Но в коде этого примера есть два определения функции PromptGetForms():


Эту часть Андрей двигает, я не стал убирать, т.к. и ему перекинул версию. , но можно убрать, целью этого примера была показать возможности работы с ini, объектами-контейнерами, чтение, объединение объектов и создание псевдо объектов ф-я oSys(), где есть свойства и типа методы на основе блоков кода, а так же написания общих, в App.Object событий-блоков кода (не только на окне) и дальнейшее их использование в функциях и схему работы с языками, т.е. языковые тексты лежат в файлах utf8, а работа происходит с конкретной CDP, в данном случае RU1251.
Т.к. это конечная версия hmg в таком виде, то я начал делать во всех окнах и контролах, где можно, Cargo := oHmgData() + в базовых окнах параметры от объекта oHmgData(), т.е. хочу мах. соединиться с версией от 2012 г.
Делаю ~ такие правки Скрытый текст

т.е. версия 24.01 у меня только в архиве.

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




Пост N: 4526
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.02.24 14:10. Заголовок: gfilatov2002 Неболь..


gfilatov2002
Небольшие правки для multiline Скрытый текст


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




Пост N: 2284
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.02.24 18:15. Заголовок: SergKis пишет: Небо..


SergKis пишет:

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


OK

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




Пост N: 4527
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.02.24 19:36. Заголовок: PS. Использование пр..


PS. Использование правки, например, такое (для Label) Скрытый текст


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




Пост N: 2285
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 22.02.24 13:00. Заголовок: SergKis пишет: Испо..


SergKis пишет:

 цитата:
Использование правки, например


Благодарю за пример
Очень интересно

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




Пост N: 2286
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.02.24 13:19. Заголовок: Всем, кому это интересно...


Завершена подготовка новой сборки 24.02, которая будет опубликована на следующей неделе.

Как я уже сообщал ранее, дистрибутив Minigui разделен на две неравные части: стандартную и профессиональную.

Одна часть — это бесплатный установщик Minigui, содержащий отладочную версию библиотеки и стандартный компилятор Harbour без оптимизаций.
Она не содержит примеров готовых приложений или служебных программ, а также библиотеку SqlRdd.

Другая часть представляет собой защищенный паролем архив 7z со всеми расширенными компонентами.
Она содержит сжатую библиотеку Minigui без отладочной информации и оптимизированную виртуальную машину Harbour для приложений с графическим интерфейсом, а также исправленную библиотеку SqlRdd.

Кратко, что нового:
Скрытый текст

Также я подготовил отдельные архивы этой сборки для работы с устаревшим компилятором BCC 5.5.1 (2000 года) и новейшим Embarcadero C++ 7.70 (2023 года)
Ваши комментарии приветствуются...

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




Пост N: 4528
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.02.24 21:23. Заголовок: gfilatov2002 Добави..


gfilatov2002
Добавил обработку json в THmgData и TIniData, подробнее в архиве в файле read.my, может пригодится
Пример тут https://TransFiles.ru/l4a1g
PS
Переменные App.Cargo без секции, в примере, при создании ini идут в секцию [MAIN] - это можго делать и в др. секцию.
Присвоение (обратите внимание)
App.Cargo:Form_Main := oForm
и
oi:MAIN:oForm := oForm
дают разные результаты
PS2
Пропустил, не убрал отладочную строку в METHOD ToValue( cStr ) CLASS TIniData
? procname(), procline(), cStr

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




Пост N: 2287
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.02.24 13:20. Заголовок: SergKis пишет: Доба..


SergKis пишет:

 цитата:
Добавил обработку json в THmgData и TIniData


Благодарю за помощь
Эти изменения буду рассматривать уже для следующей сборки...

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




Пост N: 2288
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.02.24 11:03. Заголовок: Выложил финальную сб..


Выложил финальную сборку 24.02 с последними исправлениями и дополнениями по адресу

Стандартная версия

SHA-256: c7622385ffbb1b01803252347a0eb35f654f8970f5029fafe8414ec13ab737cd

Желаю всем хорошего дня

P.S. Также на сайте проекта доступна ссылка на архив профессиональной версии (она защищена паролем).

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




Пост N: 4529
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.02.24 12:37. Заголовок: gfilatov2002 1. Так..


gfilatov2002
1. Такие конструкции, по мне, лишние, например в h_alert.prg
 
#ifdef _NAMES_LIST_
This.Cargo := oHmgData()
#endif
...
#ifdef _NAMES_LIST_
LOCAL nY, nX, cIco
#endif
...
#ifdef _NAMES_LIST_
This.Cargo:oTimer := "TIMER"
#endif
...

Они связаны только с использованием bInit, для облегчения жизни при обработке. oHmgData() есть всегда, а _NAMES_LIST_ только для использования списка переменных вместо PUBLIC переменных.

2. Давно хотел предложить, но вылетало из головы, для таймеров ставить Enabled := .F. сразу, что бы не было ложных срабатываний до ON INIT и лишних команд к DEFINE TIMER oTimer ... -> This.oTimer.Enabled := .F.

3.
 
*-----------------------------------------------------------------------------*
FUNCTION AlertExclamation ( Message, Title, Icon, nSize, aColors, lTopMost, bInit, lNoSound )
*-----------------------------------------------------------------------------*
LOCAL nWaitSec

IF HB_ISARRAY( Title )
nWaitSec := Title[2]
Title := Title[1]
ENDIF
...
*-----------------------------------------------------------------------------*
FUNCTION AlertInfo ( Message, Title, Icon, nSize, aColors, lTopMost, bInit, lNoSound )
*-----------------------------------------------------------------------------*
LOCAL nWaitSec

IF HB_ISARRAY( Title )
nWaitSec := Title[2]
Title := Title[1]
ENDIF
...
*-----------------------------------------------------------------------------*
FUNCTION AlertStop ( Message, Title, Icon, nSize, aColors, lTopMost, bInit, lNoSound )
*-----------------------------------------------------------------------------*
LOCAL nWaitSec

IF HB_ISARRAY( Title )
nWaitSec := Title[2]
Title := Title[1]
ENDIF
...


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




Пост N: 2289
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.02.24 13:35. Заголовок: SergKis пишет: Таки..


SergKis пишет:

 цитата:
Такие конструкции, по мне, лишние


Это подстраховка, если библиотека собрана без использования NAMES_LIST (например, для xHarbour).

SergKis пишет:

 цитата:
для таймеров ставить Enabled := .F. сразу


Это не всегда удобно. Но, возможно, надо добавить команду-переключатель этого режима

Благодарю за Ваши предложения
Они всегда двигают наш проект вперед...

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