Форум » 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

Петр: gfilatov2002 пишет: Особая благодарность - Петру за оказанную помощь Да не за что. А где бету можна скачать? Может к релизу что-то и дополнить можно было бы.

gfilatov2002: Петр пишет: где бету можна скачать? Отправил ссылку на бету по почте Да, до релиза еще далековато, поэтому с удовольствием рассмотрю Ваши дополнения

Петр: gfilatov2002 пишет: Отправил ссылку на бету по почте Спасибо. А где можно посмотреть * New: 'Enhanced CLASS TTaskDialogEx FUNCTION TaskDialogEx' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\TaskDialogs\TaskDialogEx)


gfilatov2002: Петр пишет: А где можно посмотреть Здесь [pre2] /* TTaskDialogEx.prg - Using of the inheritance for class function TaskDialog() */ #include "minigui.ch" #include "hbclass.ch" #include "TaskDlgs.ch" CREATE CLASS TTaskDialogEx FUNCTION TaskDialogEx FROM TaskDialog EXPORTED: METHOD Flags( nFlags ) SETGET // 4 METHOD MainIcon( nIcon ) SETGET // 7 METHOD CustomButtons( aCustButton ) SETGET // 11 METHOD VerificationText( cText ) SETGET // 16 METHOD ExpandedInfo( cText ) SETGET // 17 METHOD ExpandedCtrlText( cText ) SETGET // 18 METHOD CollapsedCtrlText( cText ) SETGET // 19 METHOD FooterIcon( nIcon ) SETGET // 20 METHOD CallbackFunc( bFunc ) SETGET // 22 ENDCLASS /* */ METHOD Flags( nFlags ) CLASS TTaskDialogEx IF HB_ISNUMERIC( nFlags ) ::aConfig[ TDC_TASKDIALOG_FLAGS ] := nFlags ENDIF RETURN ::aConfig[ TDC_TASKDIALOG_FLAGS ] /* */ METHOD MainIcon( nIcon ) CLASS TTaskDialogEx IF HB_ISNUMERIC( nIcon ) ::aConfig[ TDC_MAINICON ] := nIcon ENDIF RETURN ::aConfig[ TDC_MAINICON ] /* */ METHOD FooterIcon( nIcon ) CLASS TTaskDialogEx IF HB_ISNUMERIC( nIcon ) ::aConfig[ TDC_FOOTERICON ] := nIcon ENDIF RETURN ::aConfig[ TDC_FOOTERICON ] /* */ METHOD VerificationText( cText ) CLASS TTaskDialogEx IF HB_ISSTRING( cText ) .OR. HB_ISNUMERIC( cText ) ::aConfig[ TDC_VERIFICATIONTEXT ] := cText ENDIF RETURN ::aConfig[ TDC_VERIFICATIONTEXT ] /* */ METHOD ExpandedInfo( cText ) CLASS TTaskDialogEx IF HB_ISSTRING( cText ) .OR. HB_ISNUMERIC( cText ) ::aConfig[ TDC_EXPANDEDINFORMATION ] := cText ENDIF RETURN ::aConfig[ TDC_EXPANDEDINFORMATION ] /* */ METHOD ExpandedCtrlText( cText ) CLASS TTaskDialogEx IF HB_ISSTRING( cText ) .OR. HB_ISNUMERIC( cText ) ::aConfig[ TDC_EXPANDEDCONTROLTEXT ] := cText ENDIF RETURN ::aConfig[ TDC_EXPANDEDCONTROLTEXT ] /* */ METHOD CollapsedCtrlText( cText ) CLASS TTaskDialogEx IF HB_ISSTRING( cText ) .OR. HB_ISNUMERIC( cText ) ::aConfig[ TDC_COLLAPSEDCONTROLTEXT ] := cText ENDIF RETURN ::aConfig[ TDC_COLLAPSEDCONTROLTEXT ] /* */ METHOD CustomButtons( aCustButton ) CLASS TTaskDialogEx IF HB_ISARRAY( aCustButton ) .AND. Len( aCustButton ) > 0 ::aConfig[ TDC_BUTTON ] := Len( aCustButton ) ::aConfig[ TDC_TASKDIALOG_BUTTON ] := aCustButton ENDIF RETURN ::aConfig[ TDC_TASKDIALOG_BUTTON ] /* */ METHOD CallbackFunc( bFunc ) CLASS TTaskDialogEx IF HB_ISBLOCK( bFunc ) ::aConfig[ TDC_CALLBACK ] := bFunc ENDIF RETURN ::aConfig[ TDC_CALLBACK ] /* */ PROCEDURE main() LOCAL nResult SET LOGFILE TO "_debug.txt" WITH OBJECT TaskDialogEx() :Title := 'TaskDialog with expandable text & footer with hyperlink' :Instruction := 'What do you think about of the Windows Vista TaskDialog?' :Content := 'The new TaskDialog provides a standard & enhanced way for interacting with the user' :Footer := "Optional footer text with an icon can be included" :MainIcon := TD_QUESTION :FooterIcon := TD_WARNING_ICON :ExpandedInfo := "Any expanded content text for the task dialog is shown " + ; "here and the text will automatically wrap as needed." :CollapsedCtrlText := "Click to see more" :ExpandedCtrlText := "Hide Expanded Text" :CallbackFunc := {|h,n,w,l| callback( h,n,w,l )} nResult := :Execute() IF nResult == 0 ? "Button ID is", :ButtonResult ENDIF ENDWITH RETURN 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 */ LOCAL hResp := { 1=>"OK", 2=>"CANCEL", 3=>"ABORT", 4=>"RETRY", 5=>"IGNORE", 6=>"YES", 7=>"NO", 8=>"CLOSE" } SWITCH nNotification CASE TDN_BUTTON_CLICKED // wParam - an int that specifies the ID of the button or comand link that was selected IF hb_HPos( hResp, wParam ) != 0 IF wParam == IDOK ? "Button OK was pressed" ENDIF lResult := .T. ENDIF EXIT CASE TDN_HYPERLINK_CLICKED ShellExecute( hWnd, "open", lParam, , , SW_SHOW ) END SWITCH RETURN lResult[/pre2]

Петр: Andrey пишет: А можно обновить MiniGUI\SOURCE\HbPgSql ? Наверное для Андрея обновление уже не актуально Andrey пишет: Может в Харборе взять новее библиотеки - hbpgsql ? Функционально версии hbpgsql в MiniGUI и Harbour (https://github.com/harbour/core/) не отличаются. Более того, hbpgsql от MiniGUI есть старой версией harbour hbpgsql. Не учтены сл. важные поправки 2014-03-27 16:13 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * contrib/hbpgsql/rddcopy.c ! fixed typos in my recent modification and potential memory corruption and/or wrong output due to ugly hack for last field terminator in old code. Thanks to Aleksander Czajczynski for reporting the problem. К тому же rddcopy.c является юниксовым файлом (перевод строки LF вместо CRLF), что выглядит странно для MiniGUI 2011-10-20 15:21 UTC+0200 Viktor Szakats (vszakats.net/harbour) * contrib/hbpgsql/hbpgsql.hbx * contrib/hbpgsql/hbpgsql.hbp - contrib/hbpgsql/hdbcpg.prg - Deleted HDBC class layer due references to deprecated wrapper function which caused link errors in dynamic builds or HDBC apps. Please readd the file if interested in making this technially simple fix. Поэтому с чистой совестью можете копировать файлы из harbour\contrib\hbpgsql и пересобирать библиотеку, как я уже говорил, новой функциональности вы не получите. Работать должно стабильнее. Изменения в копирайтах и т.п. не в счет.

Петр: Вот hbpgsql с harbour-core (https://github.com/vszakats/harbour-core) выглядит сейчас более интересно, в основном за счет изменений в tpostgre.prg В часности, расширен METHOD New( cHost, cDatabase, cUser, cPass, nPort, cSchema, hCustom ) :New( ..., { 'timeout' => '10' } )

Andrey: Григорий, а нельзя ли прикрутить показ иконок (ICO) для объекта MENUITEM ? SET MENUSTYLE EXTENDED SetMenuBitmapHeight( 48 ) DEFINE CONTEXT MENU OF &cForm MENUITEM "Меню..." ACTION .. IMAGE "W_add32х32"

gfilatov2002: Andrey пишет: нельзя ли прикрутить показ иконок (ICO) для объекта MENUITEM Да, это возможно при добавлении в Ваш проект следующих 2-х функций [pre2]extern HBITMAP Icon2Bmp( HICON hIcon ); HB_FUNC( MENUITEM_SETICON ) { HBITMAP himage1; HICON hIcon; hIcon = ( HICON ) LoadImage( GetModuleHandle( NULL ), hb_parc( 3 ), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR ); if( hIcon == NULL ) hIcon = ( HICON ) LoadImage( 0, hb_parc( 3 ), IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTCOLOR ); // convert icon to bitmap himage1 = Icon2Bmp( hIcon ); if( newStyle ) { MENUITEMINFO MenuItemInfo; MYMENUITEM * pmyMenuItem; MenuItemInfo.cbSize = sizeof( MENUITEMINFO ); MenuItemInfo.fMask = MIIM_DATA; if( GetMenuItemInfo( ( HMENU ) HB_PARNL( 1 ), hb_parni( 2 ), FALSE, &MenuItemInfo ) ) { pmyMenuItem = ( MYMENUITEM * ) MenuItemInfo.dwItemData; if( pmyMenuItem->hBitmap != NULL ) DeleteObject( pmyMenuItem->hBitmap ); pmyMenuItem->hBitmap = himage1; } } HB_RETNL( ( LONG_PTR ) himage1 ); } [/pre2] и на PRG уровне [pre2]*-----------------------------------------------------------------------------* PROCEDURE _SetMenuItemIcon ( ItemName , FormName , Icon ) *-----------------------------------------------------------------------------* LOCAL a := _GetMenuIds ( ItemName , FormName ) _HMG_aControlBrushHandle [GetControlIndex ( ItemName , FormName )] := MenuItem_SetIcon ( a [1] , a [2] , Icon ) RETURN [/pre2] Пример использования: [pre2]... POPUP "&Help" FONT Font0 ITEM "Index" IMAGE "BMPHELP" ITEM "Using help" SEPARATOR ITEM "Online forum" IMAGE "WORLD" ITEM "Buy/register" IMAGE "CART_ADD" SEPARATOR ITEM "About" NAME SetIcon ACTION MsgInfo ( MiniGuiVersion() ) END POPUP END MENU _SetMenuItemIcon( "SetIcon" , "Form_1" , "demo.ico" ) [/pre2]

Andrey: gfilatov2002 пишет: Да, это возможно при добавлении в Ваш проект следующих 2-х функций Спасибо БОЛЬШОЕ ! А по умолчанию в библиотеку добавить сразу нельзя ?

gfilatov2002: Andrey пишет: в библиотеку добавить сразу нельзя ? Уже добавил эти функции в следующую сборку

Andrey: gfilatov2002 пишет: Уже добавил эти функции в следующую сборку Спасибо БОЛЬШОЕ !

Andrey: Приятно увидеть свои художества... http://clipper64bits.blogspot.ru/p/minigui_21.html

gfilatov2002: Просто к сведению. Выпустил сегодня первый RC для новой сборки библиотеки. Полный список изменений см. ниже [pre2] * Fixed: Wrong executing of a new debug logging at console or mixed appls. Problem was reported by Mitja Podgornik. You can enable the logging output if you uncommented the constant _HMG_OUTLOG in the minigui header file. By default this is turned off to preserve the proper Harbour functionality. (look at minigui.ch in folder \include) Syntax of the logging output is below: ? <explist,...> ?? <explist,...> ?a <arr> ?v <arr> There is also the optional command SET LOGFILE TO <filename>. (see demo in folder \samples\Basic\OptionBox) * New: The Task Dialog support is based upon the Vista's TaskDialog API: - win_TaskDialog0( ,, cWindowTitle, cMainMessage, cContent, ; dwCommonButtons, nIcon, @nButton ) -> nResult - win_TaskDialogIndirect0( aConfig, @nButton, @nRadioButton, ; @lVerificationFlagChecked ) -> nResult - simple CLASS TTaskDialog FUNCTION TaskDialog. Usage: WITH OBJECT TaskDialog() :Title := 'Simple TaskDialog' :Instruction := 'My Main Text here' :Content := 'A simple text only function TaskDialog()' IF :Execute() == 0 MsgInfo( :ButtonResult ) ENDIF ENDWITH Note: This feature works properly at Windows Vista or later only. Contributed by Petr Chornyj <myorg63@mail.ru> (see demos in folder \samples\Basic\TaskDialogs) * Enhanced: The OwnerDraw Menu style supports the optional function: - _SetMenuItemIcon( ItemName , FormName , Icon ). Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\MenuEx) * Enhanced: Added the following features to batch\Compile.bat file: - Descriptions of the syntax was moved to a separate file. - Added the reading of the variables from an external minigui.cfg in the batch files Compile.bat and MakeLibOpt.bat. The reading takes place if a variable MG_ROOT is not defined. If the configuration file is not present, the sequence of actions is the same as before. Contributed by Petr Chornyj <myorg63@mail.ru> * Updated: HbPgSQL harbour library: - update for using PostgreSQL version 9.5. Contributed by Petr Chornyj <myorg63@mail.ru> (see in folder \Source\HbPgSql) * Updated: HbSQLite3 library: - update for using SQLITE3 version 3.14.1. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: Harbour Compiler 3.2.0dev (SVN 2016-09-05 17:04): * Updated: HbSqlDD library source code (see in folder \Source\HbSqlDD). Contributed by Grigory Filatov <gfilatov@inbox.ru> (look at ReadMe.txt in folder \harbour) * New: 'MultiThread usage in HMG' sample. Based upon a contribution of Roberto Lopez <mail.box.hmg@gmail.com>. Enhanced by Pete D. <pete_westg/at/yahoo.gr> (see in folder \samples\Basic\MultiThread) * New: 'Enhanced CLASS TTaskDialogEx FUNCTION TaskDialogEx' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\TaskDialogs\TaskDialogEx) * New: 'Quick Message functions are based on TaskDialog API' sample. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Basic\TaskDialogs\ShowMessage) * New: 'Directory Watcher' sample is based on 'Change Notification' WinAPI. Based upon a contribution of Petr Chornyj <myorg63@mail.ru>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\DirWatcher) * Updated: 'Get Form Client Height' sample. Based upon a contribution of Russian user SergKis (see in folder \samples\Basic\GetClientSize) * Updated: The following samples are revised for compatibility with the latest Harbour changes: - \Utils\SqlDBU; - \samples\Basic\Charts_2; - \samples\Advanced\MSSQL; - \samples\Advanced\MySqlDD; - \samples\Advanced\OdbcDD; - \samples\Advanced\Sqlit3DD; - \samples\Advanced\Tsb_sqlite. Contributed by Grigory Filatov <gfilatov@inbox.ru> [/pre2] Благодарю за Ваше внимание

Петр: gfilatov2002 пишет: Выпустил сегодня первый RC для новой сборки библиотеки Так и не понял куда вы их выкладываете..

gfilatov2002: Петр пишет: куда вы их выкладываете Ссылку на новую сборку отправил Вам по почте Буду благодарен за любые комментарии...

Dima: gfilatov2002 А нельзя ли в модальном окне возле крестика закрытия окна добавить кнопку минимизации , при нажатии на которую сворачивалось бы все приложение ?

SergKis: Dima Зачем эти ручные манипуляции ? Андрей показал решение. Можно в любое окно сунуть такое:[pre2] FUNC MinAll( lMinimize) LOCAL i, cWnd, cForm := ThisWindow.Name If lMinimize For i := 1 To Len(_HMG_aFormNames) cWnd := _HMG_aFormNames [ i ] If cWnd != cForm .and. _IsWindowDefined(cWnd) // что Андрей писал EndIf Next EndIf RETURN NIL [/pre2]

Dima: SergKis я о кнопке

SergKis: Dima пишет я о кнопке Если именно о кнопке, то делай стандартный заголовок с (Minimaize, Maximaize) кнопками и вешай на события блоки кода с обработчиками (ON MINIMAIZE ... ON MAXIMAIZE ...), но по мне решение на ON INIT MinAll( .T. ) и ON RELEASE MaxAll( .T. ) от внешнего управления (переменной) лучше. Можно и свой Title окна сделать (в примерах где то было) со своими кнопками\контролами ... и обрабатывать нажатия так же

gfilatov2002: Dima пишет: нельзя ли в модальном окне возле крестика закрытия окна добавить кнопку минимизации Можно, и это всего одна строчка в коде (см.пример ниже) [pre2]#include "minigui.ch" Function Main SET DEFAULT ICON TO GetStartupFolder() + "\new.ico" SET CENTERWINDOW RELATIVE PARENT DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 600 HEIGHT 400 ; TITLE 'MiniGUI StatusBar Demo (Based Upon a Contribution Of Janusz Pora)' ; MAIN ; FONT 'Arial' SIZE 10 DEFINE MAIN MENU POPUP '&StatusBar Test' ITEM 'Set StatusBar Item 1' ACTION Form_1.StatusBar.Item(1) := "New value 1" ITEM 'Set StatusBar Item 2' ACTION Form_1.StatusBar.Item(2) := "New value 2" ITEM 'Set StatusBar Item Icon' ; ACTION ( Form_1.StatusBar.Icon (3) := 'New.ico', Form_1.StatusBar.Item(3) := "A Smile!" ) ITEM 'Open Other Window...' ACTION Modal_Click() END POPUP POPUP '&Help' ITEM '&About' ACTION MsgInfo ("MiniGUI StatusBar Demo") END POPUP END MENU DEFINE STATUSBAR FONT 'MS Sans Serif' SIZE 8 STATUSITEM "Item 1" ACTION MsgInfo('Click! 1') STATUSITEM "Item 2" WIDTH 100 ACTION MsgInfo('Click! 2') STATUSITEM 'A Car!' WIDTH 100 ICON 'Car.Ico' CLOCK DATE END STATUSBAR END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil *-----------------------------------------------------------------------------* Procedure Modal_Click *-----------------------------------------------------------------------------* DEFINE WINDOW Form_2 ; AT 0,0 ; WIDTH 400 HEIGHT 300 ; TITLE 'StatusBar Test' ; MODAL NOSIZE DEFINE STATUSBAR STATUSITEM "Modal 1" WIDTH 100 ACTION MsgInfo('Click! 1') STATUSITEM "Modal 2" WIDTH 100 ACTION MsgInfo('Click! 2') END STATUSBAR END WINDOW Form_2.MinButton := .T. CENTER WINDOW Form_2 ACTIVATE WINDOW Form_2 Return[/pre2]



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