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

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

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

Петр: Шаблон callback функции [pre2]STATIC FUNCTION callback( hWnd, nNotification, wParam, lParam ) LOCAL lResult := .F. /* To prevent the task dialog from closing, the application must return FALSE, otherwise the task dialog is closed */ HB_SYMBOL_UNUSED( hWnd ) HB_SYMBOL_UNUSED( lParam ) SWITCH nNotification CASE TDN_CREATED EXIT CASE TDN_DESTROYED EXIT CASE TDN_BUTTON_CLICKED // wParam - an int that specifies the ID of the button or comand link that was selected IF wParam == ID_OK ... lResult := .T. ELSEIF wParam == ID_CANCEL ... lResult := .T. EXIT CASE TDN_RADIO_BUTTON_CLICKED // wParam - an int that specifies the ID corresponding to the radio button that was clicked ... EXIT CASE TDN_EXPANDO_BUTTON_CLICKED // the user clicks on the dialog's expando button: wParam is 1 if the dialog is expanded, or 0 if not IF wParam == 1 ... ELSE ... EXIT CASE TDN_HELP // the user presses F1 on the keyboard while the dialog has focus ... EXIT CASE TDN_VERIFICATION_CLICKED // the user clicks the task dialog verification check box: wParam is the status of the checkbox. // It is 1 if the verification checkbox is checked, or 0 if it is unchecked. ... EXIT END SWITCH RETURN lResult // .t. or .f., that is the question :) [/pre2]

Петр: Если внешний harbour интерфейс сочтете удобным, то займусь дальшей реализацией С части. Пожелания приветствуются сейчас - не люблю переделывать Наброски (не проверялось компилятором - ошибки конечно присутствуют, но мысль, надеюсь, понятна ) [pre2]HRESULT CALLBACK TDCallbackProc( HWND hwnd, UINT uNotification, WPARAM wParam, LPARAM lParam, LONG_PTR dwRefData ); HRESULT CALLBACK TDCallbackProc( HWND hwnd, UINT uNotification, WPARAM wParam, LPARAM lParam, LONG_PTR dwRefData ) { HRESULT hRes; PHB_ITEM pCallback = ( PHB_ITEM ) dwRefData; if( pCallback && hb_vmRequestReenter() ) { hb_vmPushEvalSym(); hb_vmPush( pCallback ); hb_vmPushNumInt( ( HB_MAXINT ) ( HB_PTRUINT ) hWnd ); hb_vmPushNumInt( ( HB_PTRUINT ) uNotification ); // typecast ?? hb_vmPushNumInt( wParam ); hb_vmPushNumInt( lParam ); hb_vmSend( 4 ); hRes = ( ( hb_parl( -1 ) == HB_TRUE ) ? S_OK : S_FALSE ); hb_vmRequestRestore(); return hRes; } return S_OK; // S_FALSE ?? } [/pre2] [pre2] /* 16 PCWSTR pszVerificationText */ HB_TYPE hb_typ = hb_arrayGetType( pConfig, TDC_VERIFICATIONTEXT ) if ( ( hb_typ & HB_IT_STRING ) || ( hb_typ & HB_IT_NUMERIC ) ) { tdc.pszVerificationText = ( PCWSTR ) ( ( hb_typ & HB_IT_STRING ) ? hb_arrayGetCPtr( pConfig, TDC_VERIFICATIONTEXT ) : MAKEINTRESOURCE( ( WORD ) hb_arrayGetNL( pConfig, TDC_VERIFICATIONTEXT ) ) ); } else { hb_errRT_BASE_SubstR( EG_ARG, 0, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } [/pre2] [pre2] /* 22 PFTASKDIALOGCALLBACK pfCallback */ tdc.pfCallback = TDCallbackProc; /* 23 LONG_PTR lpCallbackData */ if ( hb_arrayGetType( pConfig, TDC_CALLBACK ) & HB_IT_EVALITEM ) { pCallbackData = hb_itemNew( hb_arrayGetItemPtr( pConfig, TDC_CALLBACK ) ); hb_gcUnlock( pCallbackData ); tdc.lpCallbackData = (LONG_PTR) pCallbackData; } else { hb_errRT_BASE_SubstR( EG_ARG, 0, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } [/pre2]

gfilatov2002: Петр пишет: Пожелания приветствуются сейчас Шаблон с благодарностью принимается Желательно предусмотреть конвертацию строк в unicode формат, поскольку эта функция работает только в unicode формате. hb_Translate( cWindowTitle, cCurrentCdp, "UTF8EX" ) Возможна ли обработка возврата функции типа такого [pre2] IF xRet == NIL xRet := 0x80004005 ENDIF IF ! ( xRet == 0x00000000 ) // 0x00000000 = success cMess := "" IF xRet == 0x8007000E // out of memory cMess := "There is insufficient memory to complete the operation." ELSEIF xRet == 0x80070057 // invalid argument(s) cMess := "One or more arguments are not valid." ELSEIF xRet == 0x80004005 // Unspecified failure cMess := "Operation failed! (unknown reason)." ENDIF MsgExclamation( "Requested Icon : " + hb_ntos( nIcon ) + hb_eol() + ; cMess + hb_eol() + ; "TaskDialog responded : " + hb_ntos( xRet ) + "->" + MGM_GetWinErrorStr( xRet ) + hb_eol() + ; "(non-existent ?) resource ID: " + hb_ntos( nError ) + hb_eol(), "TaskDialog" ) ENDIF [/pre2] Используемые константы для файла-заголовка tdi.ch по типу [pre2]/* buttons */ #define TDCBF_OK_BUTTON 1 // 0x1 #define TDCBF_YES_BUTTON 2 // 0x2 #define TDCBF_NO_BUTTON 4 // 0x4 #define TDCBF_CANCEL_BUTTON 8 // 0x8 #define TDCBF_RETRY_BUTTON 16 // 0x10 #define TDCBF_CLOSE_BUTTON 32 // 0x20 /* button-click return values */ #define IDOK 1 #define IDCANCEL 2 #define IDABORT 3 #define IDRETRY 4 #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 #define IDCLOSE 8 /* icons */ #define TD_NO_ICON 0 // No icon appears in the task dialog. This is the default. #define TD_WARNING_ICON 65535 // An exclamation-point icon, along with warning sound. #define TD_ERROR_ICON 65534 // A stop-sign icon, along with error sound. #define TD_INFORMATION_ICON 65533 // An icon consisting of a lowercase letter `i` in a circle, along with info sound. #define TD_SHIELD_ICON 65532 // A shield icon. NOTE: All shield icons have no sound! #define TD_SHIELD_BLUE_ICON 65531 // A shield icon on a blue background. #define TD_SHIELD_WARNING_ICON 65530 // An icon consisting of an exclamation-point in a shield. appears in yellow/orange background. #define TD_SHIELD_ERROR_ICON 65529 // An icon consisting of a stop-sign in a shield. appears in red background. #define TD_SHIELD_SUCCESS_ICON 65528 // An icon consisting of a tick-sign in a shield. appears in green background. #define TD_SHIELD_BROWN_ICON 65527 // A shield icon on a brown background. #define TD_QUESTION 99 // An icon consisting of a a question-mark in a circle, no sound![/pre2]


Петр: [pre2]nResult := TaskDialogIndirect( aConfig, @nButton, @nRadioButton, @lVerificationFlagChecked ) /* TODO */[/pre2] gfilatov2002 пишет: Возможна ли обработка возврата функции типа такого Вот на месте TODO и будет такой разбор nResult.

Петр: gfilatov2002 пишет: Используемые константы для файла-заголовка tdi.ch по типу Спасибо, Григорий, а вот этот фрагмент кода откуда, если не секрет.

gfilatov2002: Петр пишет: этот фрагмент кода откуда Этот код взят из реализации функции TaskDialog() из поставки MiniguiM

Петр: gfilatov2002 пишет: из поставки MiniguiM Простите, а что это за поставка такая MiniguiM Просто любопытно.

gfilatov2002: Петр пишет: что это за поставка такая MiniguiM Лежит по адресу https://sourceforge.net/projects/hbpidew/ Один умный грек продвигает Minigui Ex на базе компилятора MinGW

Петр: gfilatov2002 пишет: Один умный грек продвигает Minigui Ex на базе компилятора MinGW Спасибо, не знал, посмотрю, но уже после завершения работы над TaskDialogIndirect Т.е. уже скоро.

Andrey: Григорий, посмотри пожалуйста Пост N: 5034 и Пост N: 1126

gfilatov2002: Andrey Любые дополнения - уже не в этой сборке (работа над ней завершена)

Andrey: gfilatov2002 пишет: Любые дополнения - уже не в этой сборке Да мы не торопимся... Лишь бы потом было !

SergKis: gfilatov2002 Мелочь (просто короче писать), но потом забуду (i_pseudofunc.ch) [pre2] #translate System.WindowsFolder => GetWindowsFolder() #translate Folder.Desktop => GetDesktopFolder() #translate Folder.MyDocuments => GetMyDocumentsFolder() #translate Folder.ProgramFiles => GetProgramFilesFolder() #translate Folder.System => GetSystemFolder() #translate Folder.Temp => GetTempFolder() #translate Folder.Windows => GetWindowsFolder() [/pre2]

SergKis: gfilatov2002 Понял, почему валится на child окне конструкция [pre2] DEFINE WINDOW wChild1 ... CHILD ; ... nW := This.Width - GetBorderWidth()*2 - 2 тип окна child C, т.е. _HMG_ThisType равно C FUNCTION _SetThisFormInfo ( i ) *-----------------------------------------------------------------------------* #ifdef _HMG_COMPAT_ _HMG_LastActiveFormIndex := i #endif _PushEventInfo() _HMG_ThisFormIndex := i _HMG_ThisEventType := 'DEFINE_WINDOW' _HMG_ThisType := _HMG_aFormType [ _HMG_ThisFormIndex ] _HMG_ThisIndex := i _HMG_ThisFormName := _HMG_aFormNames [ _HMG_ThisFormIndex ] _HMG_ThisControlName := "" RETURN NIL в i_this.ch везде проверяется iif ( _HMG_THISType == 'C' , GetControlHandle (...) , GetFormHandle (...) ) и путается с контролом в PROCEDURE _ProcessInitProcedure( i ) ... _HMG_ThisType := 'W' ... надо и в _SetThisFormInfo ( i ) тоже поставить _HMG_ThisType := 'W' [/pre2]

gfilatov2002: SergKis пишет: надо и в _SetThisFormInfo ( i ) тоже поставить _HMG_ThisType := 'W' Благодарю за помощь Вы абсолютно правы! Поправлю ...

Петр: В продолжении поста №1227 демка лежит здесь Не все реализовано до конца (в основном из-за лени :)), но в принципе использовать можно уже сейчас. UPD. Добавлено define TDC_MAINICON 7 TDC_FOOTERICON 20 Исправлено [pre2]radiobuttons.pszButtonText = HB_ARRAYGETSTR( button, 2, &hRadioButton[ iRadioButton++ ], NULL );[/pre2]

gfilatov2002: Петр Благодарю за все Ваши усилия Посмотрю демку вечером ...

gfilatov2002: Сегодня выпущен очередной релиз библиотеки Minigui Ex. Сборка для компилятора BCC лежит на официальном сайте библиотеки по адресу: http://hmgextended.com/files/CONTRIB/hmg-16.08-setup.zip Также доступна сборка для компилятора MinGW32 по адресу: http://hmgextended.com/files/CONTRIB/hmg1608-mingw.exe и для компилятора MinGW64 по адресу: http://hmgextended.com/files/CONTRIB/minigui64-1608.exe и компактный архив для последней доступной версии компилятора xHarbour http://hmgextended.com/files/CONTRIB/xhmg1608_xhb10156.zip Выложил также первую рабочую сборку для BCC 10.1 по адресу: http://hmgextended.com/files/CONTRIB/hmg1608_bcc101.zip Дополнение к файлу changelog текщей сборки: [pre2] * New: Added output of any information to an external file for debugging purposes with extremely easy syntax: ? <explist,...> ?? <explist,...> ?a <arr> ?v <arr> Added the optional command SET LOGFILE TO <filename>. Based upon a contribution of Russian user SergKis (see demo in folder \samples\Basic\OptionBox)[/pre2] Благодарю за Вашу поддержку

Andrey: Что-то две последние ссылки не идут... Page Not Found The page you requested on hmgextended.com was not found. You requested http://hmgextended.com/files/CONTRIB/xhmg1608_xhb10151.zip This request was referred from http://clipper.borda.ru/?1-1-0-00000465-000-0-1-1470645530

gfilatov2002: Andrey пишет: две последние ссылки не идут Поправил ...



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