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

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

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

Ответов - 154, стр: 1 2 3 4 5 6 7 8 All

gfilatov2002: Vlad04 пишет: добавляю НОВУЮ ФОРМУ - и всё вываливается Благодарю за сообщение! Уже поправил эту ошибку Вы можете обновить HMGS-IDE через меню Help->Update

Vlad04: ок

Andrey: Последняя версия МиниГуи. Примеры MiniGUI\SAMPLES\BASIC\WAIT_WINDOW_2 Картинка на белом фоне ТЕПЕРЬ СЕРАЯ, вместо белой !!! Как исправить на белый цвет ? Заодно и в примерах нужно поправить.

gfilatov2002: Andrey пишет: Как исправить на белый цвет ? Замени класс WHITEBACKGROUND на STRETCH при определении Image_1 Andrey пишет: Заодно и в примерах нужно поправить. Уже сделал для новой сборки

Andrey: gfilatov2002 пишет: Замени класс WHITEBACKGROUND на STRETCH при определении Image_1 Заменил. Не помогло ! Осталось также.

Andrey: Исправил так: [pre2] DEFINE WINDOW &cFormName ; ....... BACKCOLOR {240,240,240} ;[/pre2] Окно стало сереньким как и картинка ... Зато фон окна совпадает с картинкой ! gfilatov2002 правь примеры для следующей версии.

gfilatov2002: Andrey пишет: Окно стало сереньким как и картинка Разобрался с этим... Дело в том, что Минигуи использует в качестве цвета фона окна по умолчанию системный цвет COLOR_BTNFACE. Для 7-й Винды этот цвет как раз {240,240,240}, а не чисто белый, как было сделано в примере. Думаю, что теперь вопрос закрыт Больше хороших новостей о следующей апрельской сборке: - выполнена адаптация библиотеки для работы с Си-компилятором VisualC 2015; - Петр показал, как использовать уже имеющуюся в библиотеке функцию LoadIconByName() для загрузки иконок различных размеров из одного многостраничного ICON файла (это то, чего не хватало в минигуи, Андрею ). Благодарю за Ваше внимание

Andrey: gfilatov2002 пишет: LoadIconByName() для загрузки иконок различных размеров из одного многостраничного ICON файла (это то, чего не хватало в минигуи, Андрею ). Это отличная новость !!! Но боюсь что BCC 5.51 не сможет проглотить этот формат иконок. У меня он вылетает на сборке с ошибкой. Единственную иконку различных размеров линковщик берёт только для MAIN окна... gfilatov2002 пишет: выполнена адаптация библиотеки для работы с Си-компилятором VisualC 2015; Красота ! Что там будет со сборкой .... Надо бы попробовать !!!

gfilatov2002: Andrey пишет: Что там будет со сборкой Сборка библиотеки и примеров осуществляется с помощью Харбор-утилиты hbmk2 Пример батника см.ниже [pre2]@echo off set OLDPATH=%PATH% set HMGPATH=c:\minigui set vccdir=C:\VC2015 SET LIB=%vccdir%\LIB;%vccdir%\SDK\LIB;%vccdir%\kit\lib\x86;%vccdir%\kit\lib\ucrt\x86 SET INCLUDE=%vccdir%\INCLUDE;%vccdir%\SDK\INCLUDE;%hdir%\mvc\include;%vccdir%\kit\include\ucrt;%vccdir%\kit\include\ucrt\sys;%vccdir%\kit\include\um SET PATH=%HMGPATH%\harbour\bin;%vccdir%\BIN;%vccdir%\SDK\BIN echo #define HMGRPATH %HMGPATH%\RESOURCES > _hmg_resconfig.h COPY /b %HMGPATH%\resources\minigui.rc+%1.rc+%HMGPATH%\resources\filler _temp.rc >>NUL hbmk2 %1 %2 %3 %4 %5 %6 %7 %8 %HMGPATH%\minigui.hbc -D__CALLDLL__ -q -warn- -run >build.log 2>&1 del _hmg_resconfig.h del _temp.* set HMGPATH= set PATH=%OLDPATH%[/pre2] Andrey пишет: Надо бы попробовать Напиши мне, пришлю ссылку на архив бетки, в котором есть исходники, примеры, Харбор и уже собранные библиотеки. Примечание. В качестве Си-компилятора здесь используется Command Line Visual C 2015 Compiler, который лежит на сайте http://whosaway.com (его размер около 374 MB)

Andrey: gfilatov2002 пишет: - выполнена адаптация библиотеки для работы с Си-компилятором VisualC 2015; Опять засада... Папка для Си-компилятора тоже называется MiniGui. Как ставить на диск С: одновременно для BCC и MSVC и ещё MinGW ? Может пора переделать структуру папок ?

gfilatov2002: Andrey пишет: Как ставить на диск С: одновременно для BCC и MSVC и ещё MinGW ? Это не серьезно Просто временно переименуйте (или переместите на другой диск) одноименные папки А после тестирования всегда можно все вернуть назад... Andrey пишет: Может пора переделать структуру папок ? Файлы конфигурации в минигуи - только для рабочего примера. Вы можете использовать переменные окружения set HMGPATH=c:\minigui set vccdir=C:\VC2015 в батнике buildapp.bat для настройки требуемой конфигурации

Haz: Григорий Просьба подправить код т.к. если ::nRowCount() < ::nLen игнорируется выполнение ::bChange С поправкой ниже все работает. * ============================================================================ * METHOD TSBrowse:PageDown() Version 9.0 Nov/30/2009 * ============================================================================ Примерно в строке :8555 [pre2] If nKeyPressed == Nil ::Refresh( ::nLen < nTotLines ) If ::bChange != Nil Eval( ::bChange, Self, VK_NEXT ) EndIf ElseIf nSkipped >= nLines ::DrawSelect() Else nKeyPressed := Nil ::DrawSelect() If ::bChange != Nil Eval( ::bChange, Self, VK_NEXT ) EndIf EndIf [/pre2]

gfilatov2002: Haz пишет: С поправкой ниже все работает Благодарю за помощь! Уже поправил

SergKis: gfilatov2002 Возможно, будет интересно, сделать возможность не задавать значения ControlName, ParentForm в функциях, сделав их по default _HMG_ThisControlName, _HMG_ThisFormName. Тогда упростится вызов их в событиях контролов. [pre2] h_ControlMisc.prg : ============= ... *-----------------------------------------------------------------------------* FUNCTION _GetValue ( ControlName, ParentForm, Index ) *-----------------------------------------------------------------------------* ... Default ControlName := _HMG_ThisControlName, ; ParentForm := _HMG_ThisFormName IF PCount() < 3 // было == 2 IF Upper ( ControlName ) == 'VSCROLLBAR' RETURN GetScrollPos ( GetFormHandle ( ParentForm ) , SB_VERT ) ELSEIF Upper ( ControlName ) == 'HSCROLLBAR' RETURN GetScrollPos ( GetFormHandle ( ParentForm ) , SB_HORZ ) ENDIF ... *-----------------------------------------------------------------------------* FUNCTION GetControlIndex ( ControlName, ParentForm ) *-----------------------------------------------------------------------------* // было LOCAL mVar := '_' + ParentForm + '_' + ControlName LOCAL mVar := '_' + iif( Empty(ParentForm ), _HMG_ThisFormName , ParentForm ) + ; '_' + iif( Empty(ControlName), _HMG_ThisControlName, ControlName ) IF __mvExist ( mVar ) RETURN __mvGet ( mVar ) ENDIF RETURN 0 ... и так далее по функциям с LOCAL mVar := '_' + ParentForm + '_' + ControlName h_Windows.prg : =========== ... *-----------------------------------------------------------------------------* FUNCTION GetFormIndex ( FormName ) *-----------------------------------------------------------------------------* // было LOCAL mVar := '_' + FormName LOCAL mVar := '_' + iif( Empty(FormName), _HMG_ThisFormName, FormName ) IF __mvExist ( mVar ) RETURN __mvGet ( mVar ) ENDIF RETURN 0 ... *-----------------------------------------------------------------------------* FUNCTION _ReleaseWindow ( FormName ) *-----------------------------------------------------------------------------* LOCAL b, i, FormHandle Default FormName := _HMG_ThisFormName b := _HMG_InteractiveClose ... [/pre2]

SergKis: SergKis пишет Тогда упростится вызов их в событиях контролов. Т.е. в блоках кода ACTION, GOT\LOST FOCUS, MOUSE..., и т.д. можно писать xVal := _GetValue() _SetValue(,, xVal) nInd := GetControlInex() hCnt := GetControlHandle() ... это облегчает писанину, особенно когда "дурит" препроцессор и не пропускает псевдо ООП команды у себя сделал еще вариант If hb_IsNumeric( ControlName) - то это уже готовый Index конттрола и макро получение индекса не выполняется, используя полученное значение. Но это, наверно, выходит за пределы "религии" hmg

gfilatov2002: SergKis пишет: это, наверно, выходит за пределы "религии" hmg Благодарю за Ваши предложения, но это действительно за пределами философии МиниГуи Кстати, выпустил сегодня pre-release апрельской сборки 17.04 Огромная благодарность Петру за все предложенные улучшения Си-кода ядра библиотеки

gfilatov2002: Опубликована новая сборка 17.04 для следующих С-компиляторов: - BCC 5.51 (Harbour и xHarbour) - BCC 10.1 (только Harbour) Базовый дистрибутив для BCC 5.5 и Harbour лежит по адресу http://hmgextended.com/files/CONTRIB/hmg-17.04-setup.exe Прямые ссылки на другие дистрибутивы есть на домашней странице библиотеки Под заказ возможно сделать сборки для таких дополнительных С-компиляторов: - MinGW 6.3.0 32-bit и Harbour 3.4.0dev; - MinGW 6.3.0 64-bit и Harbour 3.4.0dev; - MS VisualC 2015 32-bit and Harbour 3.2.0dev; - PellesC 8.0 32-bit и xHarbour 1.2.3 build 10193. Ожидаю Ваших комментариев Желаю мира и добра и благодарю за Ваше внимание

SergKis: gfilatov2002 добавочка в INKEYGUI [pre2] ... switch( Msg.message ) { case WM_KEYDOWN : case WM_LBUTTONDOWN: { nRet = 1002; lNoLoop = TRUE; break; } case WM_RBUTTONDOWN: { nRet = 1004; lNoLoop = TRUE; break; } case WM_SYSKEYDOWN : { nRet = Msg.wParam; lNoLoop = TRUE; break; } case WM_TIMER : { lNoLoop = Msg.wParam == dwTimer; break; } } ... [/pre2]

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

SergKis: gfilatov2002 Товарищ по работе так предлагает InKeyGUI [pre2] static int _InKeyGUI( UINT nMSec) { MSG Msg; BOOL lNoLoop=FALSE; UINT dwTimer, nRet=0, uTimeout=10; uTimeout = nMSec; if( uTimeout==0 ) uTimeout = 0x0FFFFFFF; dwTimer = SetTimer( NULL, 0, uTimeout, NULL); while( GetMessage(&Msg, NULL, 0, 0) ) { switch( Msg.message ) { case WM_KEYDOWN : case WM_SYSKEYDOWN : { nRet = Msg.wParam; lNoLoop = TRUE; break; } case WM_TIMER : { lNoLoop = Msg.wParam == dwTimer; break; } case WM_LBUTTONDOWN : case WM_RBUTTONDOWN : { lNoLoop = TRUE; PostMessage( Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam ); nRet = (Msg.message==WM_LBUTTONDOWN)? 1002:1004; break; } } if( lNoLoop ) { KillTimer( NULL, dwTimer ); return nRet; } else { TranslateMessage( &Msg ); // Translates virtual key codes DispatchMessage( &Msg ); // Dispatches message to window } } return 0; } // BAA HB_FUNC( INKEYGUI ) { UINT uTimeout=10; if( HB_ISNUM(1) ) uTimeout = hb_parni(1); hb_retni( _InKeyGUI( uTimeout ) ); } [/pre2]



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