Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Andrey: 3) Для других проектов, где лазят шустрые ручки юзеров, лончер сделать через ехе-ник, а основную прогу через dll-ку.

Andrey: Вот сделал пробный проект - https://cloud.mail.ru/public/4X4S/v4CZmKyru dll-ка собирается (Григорий давно давал ключи сборки), а вызов из demo.exe не получается. Что не так делаю ?

SergKis: Andrey пишет У некоторых юзеров слабый инет, качать приходиться много, ехе-ник весит 18 мб. Dll также будет грузиться на клиента, быстрее не будет чем с exeшником. а с hrb скорее всего будет, т.к это внешний файл\ресурс, ты сам читаешь только тот кусок, который надо выполнить.


SergKis: PS А.КресинИ еще один интересный момент. Я уже отмечал, что hrb файлы очень похожи по функциональности на p-code dll. И действительно, функция hb_hrbLoad() загружает p-code в пространство вашего приложения так же, как функция hb_libLoad() подгружает динамическую библиотеку. А значит, функции из hrb файла можно вызывать таким же образом, т.е. напрямую, без всяких hb_hrbGetFunsym() и Do(). Для этого, как и в случае с использованием p-code dll, надо предварительно объявить эти функции в вашем приложении как DYNAMIC: ? 1 2 3 4 5 6 7 8 DYNAMIC HRBFUNC1 FUNCTION Main() Local x, handle := hb_hrbLoad( "my.hrb" ) x := hrbFunc1() // hrbFunc1 - функция из my.hrb hb_hrbUnload( handle ) Return Nil

PSP: + за hrb еще в том, что этот формат зависит только от компилятора harbour и больше ни от чего. Компилятор С не имеет значения.

Andrey: Dll также будет грузиться на клиента, быстрее не будет чем с exeшником Не буду грузить Dll-ку при обновлении, она будет постоянной. Один раз загружу и всё. Насчет hrb - согласен, интересное решение. Но до перехода к нему хотелось бы научиться делать свои dll-ки на МиниГуи.

ММК: Andrey пишет: А зачем? Что это дает? 1) Чтобы уметь так же делать. Похвально ... Andrey пишет: 2) Разбить свой проект на части и неизменяемые программы держать в dll-ке. У некоторых юзеров слабый инет, качать приходиться много, ехе-ник весит 18 мб. В такой ситуации удобнее держать в dll все то , что может отличаться для разных пользователей т.к не требует перестроения (пересылки) и может меняться прямо на месте ( картинки, экраны, формы... ) Andrey пишет: 3) Для других проектов, где лазят шустрые ручки юзеров, лончер сделать через ехе-ник, а основную прогу через dll-ку. удивлен Andrey пишет: dll-ка собирается (Григорий давно давал ключи сборки), а вызов из demo.exe не получается. Что не так делаю ? Вот Вам примерчик на FW , может поможет. Как dll собирается Вы еже знаете - пропустим. Вот эту пр-му "грузим" в Dll - #include "FiveWin.ch" static hDLL function Main() local hItem1 := ItemNew( "Hello world!" ) local hItem2 := ItemNew( "From a Harbour DLL" ) hDLL = LoadLibrary( "babudll.dll" ) MsgInfo( ExecuteAll() ) HbDllEntry( "TEST" ) HbDLLEntry2( "TEST2", hItem1, hItem2 ) ItemRelease( hItem1 ) ItemRelease( hItem2 ) MsgInfo( "back from EXE" ) FreeLibrary( hDLL ) return nil DLL FUNCTION HBDLLENTRY( cProc AS LPSTR ) AS LONG PASCAL LIB hDLL DLL FUNCTION HBDLLENTRY2( cProc AS LPSTR, pItem1 AS LONG, pItem2 AS LONG ) AS LONG PASCAL LIB hDLL DLL FUNCTION ExecuteAll() AS BOOL PASCAL LIB hDLL #pragma BEGINDUMP #include <hbapi.h> #include <hbapiitm.h> HB_FUNC( ITEMNEW ) { hb_retnl( ( unsigned long ) hb_itemNew( hb_param( 1, HB_IT_ANY ) ) ); } HB_FUNC( ITEMRELEASE ) { hb_retl( hb_itemRelease( ( PHB_ITEM ) hb_parnl( 1 ) ) ); } ******************************************* А вот та , которая работает с этой Dll ********************************************* function Test() MsgInfo( "Hello from inside the DLL!" ) return .T. function Test2( cMsg1, cMsg2 ) MsgInfo( cMsg1, cMsg2 ) return nil function CheckPassword() MsgInfo( "Inside CheckPassword()" ) return .T. #pragma BEGINDUMP #include <windows.h> #include <hbvm.h> #include <hbapiitm.h> BOOL WINAPI DllEntryPoint( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) { HB_SYMBOL_UNUSED( hinstDLL ); HB_SYMBOL_UNUSED( fdwReason ); HB_SYMBOL_UNUSED( lpvReserved ); switch( fdwReason ) { case DLL_PROCESS_ATTACH: MessageBox( 0, "DLL properly loaded", "DLL entry", 0 ); hb_vmInit( FALSE ); break; case DLL_PROCESS_DETACH: MessageBox( 0, "DLL unloaded", "DLL exit", 0 ); break; } return TRUE; } void pascal __export HBDLLENTRY( char * cProcName ) { hb_itemDoC( cProcName, 0 ); } void pascal __export HBDLLENTRY2( char * cProcName, PHB_ITEM pParam1, PHB_ITEM pParam2 ) { hb_itemDoC( cProcName, 2, pParam1, pParam2 ); } BOOL __stdcall __export ExecuteAll( void ) { PHB_ITEM pResult = hb_itemDoC( "CHECKPASSWORD", 0 ); return pResult->item.asLogical.value; }

ММК: Прошу прощения. Первая Exe , вторая в Dll :) Жарко ....

Andrey: Привет всем ! Оказывается сейчас в МиниГуи нельзя собрать отдельную DLL-ку. Григорий мне ответил что: из-за изменений в ядре библиотеки, проведенных за последние 3 года, это не работает. Поскольку интереса к этой теме не было, замечаний от пользователей тоже не поступало. То есть я один такой желающий...

SergKis: gfilatov2002 Добавьте, пожалуйста, метод [pre2] CLASS TKeyData ... METHOD Del( Key ) INLINE ( iif( ::Len > 0, hb_HDel ( ::aKey, Key ), ), ::lKey := Len( ::aKey ) > 0 ) METHOD Pos( Key ) INLINE hb_HPos( ::aKey, Key ) ... [/pre2]

gfilatov2002: SergKis пишет: Добавьте, пожалуйста, метод Сделал. Кстати. Завершена подготовка финальной версии сборки 18.08, которая будет опубликована завтра.

gfilatov2002: Выпущена новая сборка 18.08 для BCC 5.51 и компиляторов Harbour и xHarbour Базовый дистрибутив-инсталлятор находится по адресу http://hmgextended.com/files/CONTRIB/hmg-18.08-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; - Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.4.0dev. Они доступны для тех, кто поддержал материально сопровождение библиотеки Выпуск новых сборок в ближайшее время НЕ планируется...

SergKis: Может пригодится кому. Немного модифицировал пример Tsb_brw2Xml, добавил обработку цвета фонта в меню "Export to Excel (xml-files) 2" Пример тут (hmg 18.08) https://my-files.ru/o226gf

gfilatov2002: SergKis пишет: Немного модифицировал пример Tsb_brw2Xml Спасибо Очень качественная модификация P.S. Я сделал "тихое" обновление сборки 18.08, чтобы включить в нее Вашу модификацию и дополнения Aндрея для примера эспорта данных из TSBrowse

gfilatov2002: Выложил 1-й апдейт сборки 18.08 со следующим списком изменений: [pre2]2018/08/31: HMG Extended Edition version 18.08 (Update 1). * Fixed: A problem with defining of the columns in a TBROWSE control (introduced in the build 18.06). Bug was reported by Henry Herrera. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: 'TSBrowse Export data to a XLS/XML file' sample: - added a color's management in the class Tsb2Xml2Xls. Contributed by Sergej Kiselev (see Tsb4xml.prg in folder \samples\Advanced\Tsb_Brw2xml) * Updated: 'TSBrowse Export data to XLS/XML/DOC/DBF files' sample: - added an export of a logo picture and subtitle of a table for XLS and DOC formats. Contributed by Verchenko Andrey <verchenkoag@gmail.com> (see in folder \samples\Advanced\Tsb_Export) [/pre2] Так что тихого обновления не вышло...

Haz: gfilatov2002 пишет: Выпущена новая сборка 18.08 для BCC 5.51 и компиляторов Harbour и xHarbour Не собрался текущий проект ругается на библиотеки SSL ( не находит половину вызовов ) Если libeay32.lib и ssleay32.lib взять с предыдущей версии , то все собирается PS к Минигуи проблема скорее не относится, это скорее к харбору , НО в поставке МиниГуи вот пример ( собирается с библиотеками из прошлой поставки и не собирается с новой ) TEST.PRG [pre2] #require "hbssl" #require "hbtip" REQUEST __HBEXTERN__HBSSL__ #include "simpleio.ch" PROCEDURE Main( cFrom, cPassword, cTo ) IF ! tip_SSL() ? "Error: Requires SSL support" wait RETURN ENDIF hb_default( @cFrom , "test@yandex.ru" ) hb_default( @cPassword, "parol" ) hb_default( @cTo , "mail@mail.ru" ) ? hb_SendMail( ; "smtp.yandex.ru", ; 465, ; cFrom, ; cTo, ; NIL /* CC */, ; {} /* BCC */, ; "It is a test message", ; "It is a test subject", ; NIL /* attachment */, ; cFrom, ; cPassword, ; "", ; NIL /* nPriority */, ; NIL /* lRead */, ; .T. /* lTrace */, ; .F., ; NIL /* lNoAuth */, ; NIL /* nTimeOut */, ; NIL /* cReplyTo */, ; .T. ) wait RETURN [/pre2] BUILD.BAT [pre2] echo off if not defined MG_ROOT set MG_ROOT=C:\MiniGui if not defined MG_BCC set MG_BCC=c:\borland\bcc55 set PATH=%MG_BCC%\bin;%MG_ROOT%\harbour\bin;%PATH% C:\MiniGui\Harbour\bin\hbmk2 -lhbtip -lhbssl -llibeay32 -lssleay32 test.prg [/pre2]

gfilatov2002: Haz пишет: Если libeay32.lib и ssleay32.lib взять с предыдущей версии , то все собирается Благодарю за сообщение Забыл обновить эти библиотеки вручную - доверился сборке Харбора Завтра поправлю эту бяку в архиве на сайте минигуи...

gfilatov2002: gfilatov2002 пишет: Завтра поправлю эту бяку Поправил установщик и архив на сайте

Haz: gfilatov2002 пишет: Поправил установщик и архив на сайте Спасибо, все нормально собирается

Andrey: Привет ! Что то сломалось в новой версии. Вот код перестал работать:[pre2] hWnd := GetFormHandle('Win_2') ON KEY PRIOR ACTION SendMessage( hWnd, WM_VSCROLL, SB_PAGEUP, 0 ) ON KEY NEXT ACTION SendMessage( hWnd, WM_VSCROLL, SB_PAGEDOWN, 0 ) ON KEY UP ACTION SendMessage( hWnd, WM_VSCROLL, SB_LINEUP, 0 ) ON KEY DOWN ACTION SendMessage( hWnd, WM_VSCROLL, SB_LINEDOWN, 0 )[/pre2] Т.е. по мышке движения есть, а по клавишам нет.



полная версия страницы